MISSION_START
// *****************************************************************************************
// *****************************************************************************************
// *****************************************************************************************
// *********************************** Cop Car Mission *************************************
// *****************************************************************************************
// *****************************************************************************************
// *****************************************************************************************
// Mission start stuff
GOSUB mission_start_cop_car
GOSUB cop_car_failed
MISSION_END
// Variables for mission
VAR_INT got_range_message player_in_range car_model criminal_car range_int mission_end_button total_criminals_killed players_cop_car_health
VAR_INT criminal_created_flag criminal criminal_blip random_gun cop_time_limit got_car_crim_is_in timer_reset_flag vigilante_bonus_kills location got_cop_breif
VAR_INT game_time_flag game_timer_start copcar_timer game_time_present game_time_difference timer_in_secs players_cop_car vigilante vigilante_score copcar_cancelled_flag
VAR_FLOAT player_c_x player_c_y player_c_z random_crim_x random_crim_y criminal_coord_x criminal_coord_y criminal_coord_z
VAR_FLOAT diff_x_float diff_y_float sum_of_diff_xy players_distance_from_criminal cop_time_limit_float criminal_heading warp_heading_cop
// ****************************************Mission Start************************************
mission_start_cop_car:
flag_player_on_mission = 1
flag_player_on_cop_mission = 1
vigilante_bonus_kills = 5
SCRIPT_NAME copcar
total_criminals_killed = 0
got_cop_breif = 0
WAIT 0
next_cop_car:
got_range_message = 0
player_in_range = 0
car_model = 0
criminal_car = 0
criminal_created_flag = 0
criminal = 0
criminal_blip = 0
random_gun = 0
cop_time_limit = 0
got_car_crim_is_in = 0
timer_reset_flag = 0
game_time_flag = 0
mission_end_button = 0
location = 0
copcar_cancelled_flag = 0
player_c_x = 0.0
player_c_y = 0.0
player_c_z = 0.0
random_crim_x = 0.0
random_crim_y = 0.0
criminal_coord_x = 0.0
criminal_coord_y = 0.0
criminal_coord_z = 0.0
diff_x_float = 0.0
diff_y_float = 0.0
sum_of_diff_xy = 0.0
players_distance_from_criminal = 0.0
cop_time_limit_float = 0.0
criminal_heading = 0.0
GET_PLAYER_COORDINATES player player_c_x player_c_y player_c_z
REQUEST_MODEL CAR_SENTINEL
criminal_in_car://////////////////////////////////////////////////////////////////////////////////////////////////////
WAIT 0
IF got_cop_breif = 0
PRINT_NOW LEGAL 3000 1
TIMERB = 0
got_cop_breif = 1
ELSE
TIMERB = 3000
ENDIF
IF IS_COLLISION_IN_MEMORY LEVEL_INDUSTRIAL
GENERATE_RANDOM_FLOAT_IN_RANGE 778.0 1540.0 random_crim_x
GENERATE_RANDOM_FLOAT_IN_RANGE -1110.0 190.0 random_crim_y
got_range_message = 0
player_in_range = 1
location = 1
ENDIF
IF IS_COLLISION_IN_MEMORY LEVEL_COMMERCIAL
GENERATE_RANDOM_FLOAT_IN_RANGE -192.0 545.0 random_crim_x
GENERATE_RANDOM_FLOAT_IN_RANGE -1626.0 98.0 random_crim_y
got_range_message = 0
player_in_range = 1
location = 2
ENDIF
IF IS_COLLISION_IN_MEMORY LEVEL_SUBURBAN
GENERATE_RANDOM_FLOAT_IN_RANGE -1300.0 -414.0 random_crim_x
GENERATE_RANDOM_FLOAT_IN_RANGE -608.8 380.0 random_crim_y
got_range_message = 0
player_in_range = 1
location = 3
ENDIF
IF player_in_range = 0
IF got_range_message = 0
PRINT_NOW C_RANGE 5000 1 //"The radio is out of range, get closer to a police station!"
got_range_message = 1
ENDIF
GOTO cop_car_failed
ENDIF
GOSUB copcar_cancelled_checks
IF copcar_cancelled_flag = 1
GOTO cop_car_failed
ENDIF
GET_CLOSEST_CAR_NODE random_crim_x random_crim_y player_c_z criminal_coord_x criminal_coord_y criminal_coord_z
IF criminal_coord_x > 1398.0 //MIN_X // COLOMBIAN BOAT
AND criminal_coord_x < 1615.0 //MAX_X
AND criminal_coord_y > -965.0 //MIN_Y
AND criminal_coord_y < -902.0 //MAX_Y
GOTO criminal_in_car
ENDIF
IF criminal_coord_x > 879.0 //MIN_X // BACK OF LUIGI'S
AND criminal_coord_x < 892.0 //MAX_X
AND criminal_coord_y > -427.0 //MIN_Y
AND criminal_coord_y < -407.0 //MAX_Y
GOTO criminal_in_car
ENDIF
IF criminal_coord_x > 944.8 //MIN_X // FISH FACTORY
AND criminal_coord_x < 1017.1 //MAX_X
AND criminal_coord_y > -1148.8 //MIN_Y
AND criminal_coord_y < -1076.6 //MAX_Y
GOTO criminal_in_car
ENDIF
IF criminal_coord_x > 920.8 //MIN_X // CHINATOWN MARKET
AND criminal_coord_x < 1004.0 //MAX_X
AND criminal_coord_y > -754.2 //MIN_Y
AND criminal_coord_y < -670.0 //MAX_Y
GOTO criminal_in_car
ENDIF
IF criminal_coord_x > 670.0 //MIN_X // CALAHAN BRIDGE
AND criminal_coord_x < 1035.0 //MAX_X
AND criminal_coord_y > -953.0 //MIN_Y
AND criminal_coord_y < -912.0 //MAX_Y
GOTO criminal_in_car
ENDIF
IF criminal_coord_x > 1364.0 //MIN_X // DOCKS INDUSTRIAL
AND criminal_coord_x < 1641.0 //MAX_X
AND criminal_coord_y > -1165.0 //MIN_Y
AND criminal_coord_y < -617.0 //MAX_Y
GOTO criminal_in_car
ENDIF
IF criminal_coord_x > 649.0 //MIN_X // TUNNEL ENTRANCE INDUSTRIAL
AND criminal_coord_x < 1066.0 //MAX_X
AND criminal_coord_y > 25.0 //MIN_Y
AND criminal_coord_y < 217.0 //MAX_Y
GOTO criminal_in_car
ENDIF
IF criminal_coord_x > -1611.5 //MIN_X // AIRPORT SUBURBAN
AND criminal_coord_x < -745.3 //MAX_X
AND criminal_coord_y > -1001.9 //MIN_Y
AND criminal_coord_y < -371.2 //MAX_Y
GOTO criminal_in_car
ENDIF
IF criminal_coord_x > 939.8 //MIN_X // OLD SCHOOL HALL AND PARK AREA
AND criminal_coord_x < 1035.6 //MAX_X
AND criminal_coord_y > -901.3 //MIN_Y
AND criminal_coord_y < -828.2 //MAX_Y
GOTO criminal_in_car
ENDIF
IF criminal_coord_x > 1215.3 //MIN_X // DOG FOOD FACTORY
AND criminal_coord_x < 1223.7 //MAX_X
AND criminal_coord_y > -839.4 //MIN_Y
AND criminal_coord_y < -763.6 //MAX_Y
GOTO criminal_in_car
ENDIF
IF criminal_coord_x > 845.3 //MIN_X // INDUSTRIAL SAFEHOUSE
AND criminal_coord_x < 899.6 //MAX_X
AND criminal_coord_y > -312.6 //MIN_Y
AND criminal_coord_y < -295.7 //MAX_Y
GOTO criminal_in_car
ENDIF
IF criminal_coord_x > 113.3 //MIN_X // DOJO COMMERCIAL
AND criminal_coord_x < 99.7 //MAX_X
AND criminal_coord_y > -1284.8 //MIN_Y
AND criminal_coord_y < -1273.0 //MAX_Y
GOTO criminal_in_car
ENDIF
IF criminal_coord_x > 18.33 //MIN_X // COLOMBIAN OJG COMPOUND
AND criminal_coord_x < 92.06 //MAX_X
AND criminal_coord_y > -388.7 //MIN_Y
AND criminal_coord_y < -312.38 //MAX_Y
GOTO criminal_in_car
ENDIF
IF criminal_coord_x > -1255.4 //MIN_X // BAIT WAREHOUSE CARPARK SUBURBIA
AND criminal_coord_x < -1187.9 //MAX_X
AND criminal_coord_y > 80.6 //MIN_Y
AND criminal_coord_y < 123.4 //MAX_Y
GOTO criminal_in_car
ENDIF
IF criminal_coord_x > 1386.4 //MIN_X // FRANKIES HOUSE
AND criminal_coord_x < 1475.8 //MAX_X
AND criminal_coord_y > -292.1 //MIN_Y
AND criminal_coord_y < -168.0 //MAX_Y
GOTO criminal_in_car
ENDIF
IF location = 1
IF NOT criminal_coord_x > 778.0 //MIN_X // INDUSTRIAL
OR NOT criminal_coord_x < 1540.0 //MAX_X
OR NOT criminal_coord_y > -1110.0 //MIN_Y
OR NOT criminal_coord_y < 190.0 //MAX_Y
GOTO criminal_in_car
ENDIF
ENDIF
IF location = 2
IF NOT criminal_coord_x > -192.0 //MIN_X // COMMERCIAL
OR NOT criminal_coord_x < 545.0 //MAX_X
OR NOT criminal_coord_y > -1626.0 //MIN_Y
OR NOT criminal_coord_y < 98.0 //MAX_Y
GOTO criminal_in_car
ENDIF
ENDIF
IF location = 3
IF NOT criminal_coord_x > -1300.0 //MIN_X // SUBURBIA
OR NOT criminal_coord_x < -414.0 //MAX_X
OR NOT criminal_coord_y > -608.8 //MIN_Y
OR NOT criminal_coord_y < 380.0 //MAX_Y
GOTO criminal_in_car
ENDIF
ENDIF
IF criminal_coord_z < -1.0
GOTO criminal_in_car
ENDIF
diff_x_float = player_c_x - criminal_coord_x
diff_y_float = player_c_y - criminal_coord_y
diff_x_float = diff_x_float * diff_x_float
diff_y_float = diff_y_float * diff_y_float
sum_of_diff_xy = diff_x_float + diff_y_float
SQRT sum_of_diff_xy players_distance_from_criminal
IF players_distance_from_criminal < 150.0
GOTO criminal_in_car
ENDIF
cop_time_limit_float = players_distance_from_criminal / 4.0
cop_time_limit_float = cop_time_limit_float * 1000.0
cop_time_limit =# cop_time_limit_float
IF cop_time_limit < 120000
cop_time_limit = 120000
ENDIF
generate_car_model:
GENERATE_RANDOM_INT_IN_RANGE 90 140 car_model
IF car_model > 113 // CAR_BUGGY CAR_CORPSE CAR_POLICE CAR_ENFORCER CAR_SECURICAR CAR_BANSHEE BOAT_PREDATOR CAR_BUS
AND car_model < 128 // CAR_RHINO CAR_BARRACKS TRAIN_SUBWAY HELI_POLICE PLANE_DODO CAR_COACH
GOTO generate_car_model
ENDIF
IF car_model = 97 // CAR_FIRETRUCK
GOTO generate_car_model
ENDIF
IF car_model = 106 // CAR_AMBULANCE
OR car_model = 107 // CAR_FBI
OR car_model = 131 // CAR_RCBANDIT
OR car_model = 140 // PLANE_AIRTRAIN
GOTO generate_car_model
ENDIF
REQUEST_MODEL car_model
WHILE NOT HAS_MODEL_LOADED car_model
WAIT 0
GOSUB copcar_cancelled_checks
IF copcar_cancelled_flag = 1
GOTO cop_car_failed
ENDIF
ENDWHILE
GENERATE_RANDOM_FLOAT_IN_RANGE 0.0 359.9 criminal_heading
WHILE NOT TIMERB > 3000
WAIT 0
GOSUB copcar_cancelled_checks
IF copcar_cancelled_flag = 1
GOTO cop_car_failed
ENDIF
ENDWHILE
CREATE_CAR car_model criminal_coord_x criminal_coord_y criminal_coord_z criminal_car
SET_CAR_AVOID_LEVEL_TRANSITIONS criminal_car TRUE
SET_CAR_HEALTH criminal_car 800
MARK_MODEL_AS_NO_LONGER_NEEDED car_model
SET_CAR_HEADING criminal_car criminal_heading
GET_CLOSEST_CHAR_NODE criminal_coord_x criminal_coord_y criminal_coord_z criminal_coord_x criminal_coord_y criminal_coord_z
CREATE_RANDOM_CHAR criminal_coord_x criminal_coord_y criminal_coord_z criminal
SET_CHAR_IS_CHRIS_CRIMINAL criminal TRUE
//SET_CHAR_AVOID_LEVEL_TRANSITIONS criminal TRUE
WARP_CHAR_INTO_CAR criminal criminal_car
SET_CHAR_RUNNING criminal TRUE
SET_CHAR_ONLY_DAMAGED_BY_PLAYER criminal TRUE
CLEAR_CHAR_THREAT_SEARCH criminal
SET_CHAR_PERSONALITY criminal PEDSTAT_TOUGH_GUY
SET_CHAR_THREAT_SEARCH criminal THREAT_PLAYER1
SET_CHAR_THREAT_SEARCH criminal THREAT_PLAYER2
SET_CHAR_THREAT_SEARCH criminal THREAT_PLAYER3
SET_CHAR_THREAT_SEARCH criminal THREAT_PLAYER4
SET_CHAR_THREAT_SEARCH criminal THREAT_CIVMALE
SET_CHAR_THREAT_SEARCH criminal THREAT_CIVFEMALE
SET_CHAR_THREAT_SEARCH criminal THREAT_COP
SET_CHAR_THREAT_SEARCH criminal THREAT_GANG_MAFIA
SET_CHAR_THREAT_SEARCH criminal THREAT_GANG_DIABLO
SET_CHAR_THREAT_SEARCH criminal THREAT_GANG_TRIAD
SET_CHAR_THREAT_SEARCH criminal THREAT_GANG_YARDIE
SET_CHAR_THREAT_SEARCH criminal THREAT_GANG_COLOMBIAN
SET_CHAR_THREAT_SEARCH criminal THREAT_GANG_HOOD
SET_CHAR_THREAT_SEARCH criminal THREAT_GANG_YAKUZA
SET_CHAR_THREAT_SEARCH criminal THREAT_EMERGENCY
SET_CHAR_THREAT_SEARCH criminal THREAT_PROSTITUTE
SET_CHAR_THREAT_SEARCH criminal THREAT_CRIMINAL
SET_CHAR_THREAT_SEARCH criminal THREAT_GUN
SET_CHAR_THREAT_SEARCH criminal THREAT_COP_CAR
SET_CHAR_THREAT_SEARCH criminal THREAT_FAST_CAR
SET_CHAR_THREAT_SEARCH criminal THREAT_FIREMAN
SET_CHAR_HEED_THREATS criminal TRUE
MARK_CAR_AS_NO_LONGER_NEEDED criminal_car
IF flag_industrial_passed = 0
GENERATE_RANDOM_INT_IN_RANGE 0 5 random_gun
ENDIF
IF flag_industrial_passed = 1
GENERATE_RANDOM_INT_IN_RANGE 2 6 random_gun
ENDIF
IF flag_commercial_passed = 1
GENERATE_RANDOM_INT_IN_RANGE 3 10 random_gun
ENDIF
GIVE_WEAPON_TO_CHAR criminal random_gun 1000
ADD_BLIP_FOR_CHAR criminal criminal_blip
CLEAR_HELP
IF got_siren_help_before = 0
GET_CONTROLLER_MODE controlmode
IF controlmode = 0
PRINT_HELP SIREN_1 //"To turn on this vehicles sirens tap the ~h~L1 button~w~."
ENDIF
IF controlmode = 1
PRINT_HELP SIREN_2 //"To turn on this vehicles sirens tap the ~h~L1 button~w~."
ENDIF
IF controlmode = 2
PRINT_HELP SIREN_3 //"To turn on this vehicles sirens tap the ~h~R1 button~w~."
ENDIF
IF controlmode = 3
PRINT_HELP SIREN_4 //"To turn on this vehicles sirens tap the ~h~L3 button~w~."
ENDIF
got_siren_help_before = 1
ENDIF
IF IS_CHAR_IN_ZONE criminal PORT_W
PRINT_STRING_IN_STRING_NOW C_BREIF PORT_W 5000 1 // The suspect is in the Callahan Point area.
ENDIF
IF IS_CHAR_IN_ZONE criminal PORT_S
PRINT_STRING_IN_STRING_NOW C_BREIF PORT_S 5000 1 // The suspect is in the Atlantic Quays area.
ENDIF
IF IS_CHAR_IN_ZONE criminal PORT_E
PRINT_STRING_IN_STRING_NOW C_BREIF PORT_E 5000 1 // The suspect is in the Portland Harbour area.
ENDIF
IF IS_CHAR_IN_ZONE criminal PORT_I
PRINT_STRING_IN_STRING_NOW C_BREIF PORT_I 5000 1 // The suspect is in the Trenton area.
ENDIF
IF IS_CHAR_IN_ZONE criminal S_VIEW
PRINT_STRING_IN_STRING_NOW C_BREIF S_VIEW 5000 1 // The suspect is in the Portland View area.
ENDIF
IF IS_CHAR_IN_ZONE criminal CHINA
PRINT_STRING_IN_STRING_NOW C_BREIF CHINA 5000 1 // The criminal is proceeding south in Chinatown
ENDIF
IF IS_CHAR_IN_ZONE criminal EASTBAY
PRINT_STRING_IN_STRING_NOW C_BREIF EASTBAY 5000 1 // The criminal is proceeding south in Portland Beach
ENDIF
IF IS_CHAR_IN_ZONE criminal LITTLEI
PRINT_STRING_IN_STRING_NOW C_BREIF LITTLEI 5000 1 // The criminal is proceeding south in Saint Mark's
ENDIF
IF IS_CHAR_IN_ZONE criminal REDLIGH
PRINT_STRING_IN_STRING_NOW C_BREIF REDLIGH 5000 1 // The criminal is proceeding south in Red Light District
ENDIF
IF IS_CHAR_IN_ZONE criminal TOWERS
PRINT_STRING_IN_STRING_NOW C_BREIF TOWERS 5000 1 // The criminal is proceeding south in Hepburn Heights
ENDIF
IF IS_CHAR_IN_ZONE criminal HARWOOD
PRINT_STRING_IN_STRING_NOW C_BREIF HARWOOD 5000 1 // The criminal is proceeding south in Harwood
ENDIF
IF IS_CHAR_IN_ZONE criminal ROADBR1
PRINT_STRING_IN_STRING_NOW C_BREIF ROADBR1 5000 1 // The criminal is proceeding south in Callahan Bridge
ENDIF
IF IS_CHAR_IN_ZONE criminal ROADBR2
PRINT_STRING_IN_STRING_NOW C_BREIF ROADBR2 5000 1 // The criminal is proceeding south in Callahan Bridge
ENDIF
//IF IS_CHAR_IN_ZONE criminal TUNNELP
// PRINT_STRING_IN_STRING_NOW C_BREIF TUNNELP 5000 1 // The criminal is proceeding south in Porter Tunnel
//ENDIF
IF IS_CHAR_IN_ZONE criminal STADIUM
PRINT_STRING_IN_STRING_NOW C_BREIF STADIUM 5000 1 // The criminal is proceeding south in Aspatria
ENDIF
IF IS_CHAR_IN_ZONE criminal HOSPI_2
PRINT_STRING_IN_STRING_NOW C_BREIF HOSPI_2 5000 1 // The criminal is proceeding south in Rockford
ENDIF
IF IS_CHAR_IN_ZONE criminal UNIVERS
PRINT_STRING_IN_STRING_NOW C_BREIF UNIVERS 5000 1 // The criminal is proceeding south in Liberty Campus
ENDIF
IF IS_CHAR_IN_ZONE criminal CONSTRU
PRINT_STRING_IN_STRING_NOW C_BREIF CONSTRU 5000 1 // The criminal is proceeding south in Fort Staunton
ENDIF
IF IS_CHAR_IN_ZONE criminal PARK
PRINT_STRING_IN_STRING_NOW C_BREIF PARK 5000 1 // The criminal is proceeding south in Belleville Park
ENDIF
IF IS_CHAR_IN_ZONE criminal COM_EAS
PRINT_STRING_IN_STRING_NOW C_BREIF COM_EAS 5000 1 // The criminal is proceeding south in Newport
ENDIF
IF IS_CHAR_IN_ZONE criminal SHOPING
PRINT_STRING_IN_STRING_NOW C_BREIF SHOPING 5000 1 // The criminal is proceeding south in Bedford Point
ENDIF
IF IS_CHAR_IN_ZONE criminal YAKUSA
PRINT_STRING_IN_STRING_NOW C_BREIF YAKUSA 5000 1 // The criminal is proceeding south in Torrington
ENDIF
IF IS_CHAR_IN_ZONE criminal AIRPORT
PRINT_STRING_IN_STRING_NOW C_BREIF AIRPORT 5000 1 // The criminal is proceeding south in Francis International Airport
ENDIF
IF IS_CHAR_IN_ZONE criminal PROJECT
PRINT_STRING_IN_STRING_NOW C_BREIF PROJECT 5000 1 // The criminal is proceeding south in Wichita Gardens
ENDIF
IF IS_CHAR_IN_ZONE criminal SUB_IND
PRINT_STRING_IN_STRING_NOW C_BREIF SUB_IND 5000 1 // The criminal is proceeding south in Pike Creek
ENDIF
IF IS_CHAR_IN_ZONE criminal SWANKS
PRINT_STRING_IN_STRING_NOW C_BREIF SWANKS 5000 1 // The criminal is proceeding south in Cedar Grove
ENDIF
IF IS_CHAR_IN_ZONE criminal BIG_DAM
PRINT_STRING_IN_STRING_NOW C_BREIF BIG_DAM 5000 1 // The criminal is proceeding south in Cochrane Dam
ENDIF
GET_CHAR_COORDINATES criminal criminal_coord_x criminal_coord_y criminal_coord_z
POLICE_RADIO_MESSAGE criminal_coord_x criminal_coord_y criminal_coord_z
TIMERB = 0
DISPLAY_ONSCREEN_TIMER cop_time_limit
WHILE NOT IS_CHAR_DEAD criminal
IF cop_time_limit < 1
IF NOT LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 100.0 100.0 0
REMOVE_BLIP criminal_blip
DELETE_CHAR criminal
criminal_created_flag = 0
PRINT_NOW C_ESCP 3000 1//"The suspect has escaped!"
ELSE
PRINT_NOW C_TIME 3000 1//"Your time as a law enforcer is over!"
ENDIF
GOTO cop_car_failed
ENDIF
GOSUB copcar_cancelled_checks
IF copcar_cancelled_flag = 1
GOTO cop_car_failed
ENDIF
IF got_car_crim_is_in = 0
IF NOT IS_CHAR_HEALTH_GREATER criminal 70
SET_CHAR_OBJ_STEAL_ANY_CAR criminal
ENDIF
ENDIF
IF IS_CHAR_IN_ANY_CAR criminal
AND got_car_crim_is_in = 0
MARK_CAR_AS_NO_LONGER_NEEDED criminal_car
STORE_CAR_CHAR_IS_IN criminal criminal_car
SET_UPSIDEDOWN_CAR_NOT_DAMAGED criminal_car TRUE
SET_CAR_DRIVING_STYLE criminal_car 2
SET_CAR_CRUISE_SPEED criminal_car 42.0
CAR_WANDER_RANDOMLY criminal_car
SET_CAR_AVOID_LEVEL_TRANSITIONS criminal_car TRUE
got_car_crim_is_in = 1
ENDIF
IF got_car_crim_is_in = 1
IF NOT IS_CHAR_IN_ANY_CAR criminal
GENERATE_RANDOM_INT_IN_RANGE 0 5 range_int
IF range_int = 0
SET_CHAR_OBJ_FLEE_PLAYER_ON_FOOT_TILL_SAFE criminal player
ENDIF
IF range_int = 1
IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 150.0 150.0 0
SET_CHAR_OBJ_STEAL_ANY_CAR criminal
ELSE
IF HAS_MODEL_LOADED CAR_SENTINEL
GET_CHAR_COORDINATES criminal criminal_coord_x criminal_coord_y criminal_coord_z
GET_CLOSEST_CAR_NODE_WITH_HEADING criminal_coord_x criminal_coord_y criminal_coord_z criminal_coord_x criminal_coord_y criminal_coord_z warp_heading_cop
MARK_CAR_AS_NO_LONGER_NEEDED criminal_car
CREATE_CAR CAR_SENTINEL criminal_coord_x criminal_coord_y criminal_coord_z criminal_car
SET_CAR_HEADING criminal_car warp_heading_cop
SET_CHAR_OBJ_ENTER_CAR_AS_DRIVER criminal criminal_car
ELSE
SET_CHAR_OBJ_STEAL_ANY_CAR criminal
ENDIF
ENDIF
ENDIF
IF range_int = 2
SET_CHAR_OBJ_KILL_PLAYER_ANY_MEANS criminal player
ENDIF
IF range_int = 3
IF IS_PLAYER_IN_ANY_CAR player
STORE_CAR_PLAYER_IS_IN player players_cop_car
SET_CHAR_OBJ_DESTROY_CAR criminal players_cop_car
ELSE
SET_CHAR_OBJ_KILL_PLAYER_ANY_MEANS criminal player
ENDIF
ENDIF
IF range_int = 4
GENERATE_RANDOM_INT_IN_RANGE 0 8 range_int
CHAR_WANDER_DIR criminal -1//range_int//
ENDIF
got_car_crim_is_in = 0
ENDIF
ENDIF
IF got_car_crim_is_in = 1
IF NOT IS_CAR_DEAD criminal_car
IF TIMERB > 1000
TIMERB = 0
IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 20.0 20.0 0
SET_CAR_CRUISE_SPEED criminal_car 46.0
ELSE
IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 50.0 50.0 0
SET_CAR_CRUISE_SPEED criminal_car 39.0
ELSE
IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 90.0 90.0 0
SET_CAR_CRUISE_SPEED criminal_car 32.0
ELSE
IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 130.0 130.0 0
SET_CAR_CRUISE_SPEED criminal_car 26.0
ELSE
SET_CAR_CRUISE_SPEED criminal_car 18.0
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_CAR_STOPPED criminal_car
IF timer_reset_flag = 0
TIMERA = 0
timer_reset_flag = 1
ENDIF
IF TIMERA > 8000
AND timer_reset_flag = 1
IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 90.0 90.0 0
SET_CHAR_OBJ_LEAVE_CAR criminal criminal_car
timer_reset_flag = 0
ELSE
IF NOT IS_CAR_ON_SCREEN criminal_car
GET_CAR_COORDINATES criminal_car criminal_coord_x criminal_coord_y criminal_coord_z
GET_CLOSEST_CAR_NODE_WITH_HEADING criminal_coord_x criminal_coord_y criminal_coord_z criminal_coord_x criminal_coord_y criminal_coord_z warp_heading_cop
IF NOT IS_POINT_ON_SCREEN criminal_coord_x criminal_coord_y criminal_coord_z 4.0
SET_CAR_COORDINATES criminal_car criminal_coord_x criminal_coord_y criminal_coord_z
SET_CAR_HEADING criminal_car warp_heading_cop
timer_reset_flag = 0
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF IS_CAR_UPSIDEDOWN criminal_car
AND IS_CAR_STOPPED criminal_car
IF LOCATE_PLAYER_ANY_MEANS_CHAR_2D player criminal 90.0 90.0 0
SET_CHAR_OBJ_LEAVE_CAR criminal criminal_car
SET_UPSIDEDOWN_CAR_NOT_DAMAGED criminal_car FALSE
ELSE
IF NOT IS_CAR_ON_SCREEN criminal_car
GET_CAR_COORDINATES criminal_car criminal_coord_x criminal_coord_y criminal_coord_z
GET_CLOSEST_CAR_NODE_WITH_HEADING criminal_coord_x criminal_coord_y criminal_coord_z criminal_coord_x criminal_coord_y criminal_coord_z warp_heading_cop
IF NOT IS_POINT_ON_SCREEN criminal_coord_x criminal_coord_y criminal_coord_z 4.0
SET_CAR_COORDINATES criminal_car criminal_coord_x criminal_coord_y criminal_coord_z
SET_CAR_HEADING criminal_car warp_heading_cop
ENDIF
ENDIF
ENDIF
ENDIF
IF NOT IS_CAR_HEALTH_GREATER criminal_car 250
SET_CHAR_OBJ_LEAVE_CAR criminal criminal_car
ENDIF
ENDIF
ENDIF
WAIT 0
ENDWHILE
}
MARK_CHAR_AS_NO_LONGER_NEEDED criminal
MARK_CAR_AS_NO_LONGER_NEEDED criminal_car
++ total_criminals_killed
REGISTER_CRIMINAL_CAUGHT
ADD_ONE_OFF_SOUND 0.0 0.0 0.0 SOUND_PART_MISSION_COMPLETE
IF total_criminals_killed = 1
DISPLAY_ONSCREEN_COUNTER_WITH_STRING total_criminals_killed COUNTER_DISPLAY_NUMBER KILLS
ENDIF
REMOVE_BLIP criminal_blip
vigilante_score = total_criminals_killed * 500
PRINT_BIG C_PASS 5000 5
PRINT_WITH_NUMBER_BIG REWARD vigilante_score 5000 6
ADD_SCORE player vigilante_score
IF total_criminals_killed = vigilante_bonus_kills
vigilante = total_criminals_killed * 2
vigilante *= 500
PRINT_BIG_Q C_VIGIL 5000 5
PRINT_WITH_NUMBER_BIG_Q REWARD vigilante 6000 6
ADD_SCORE player vigilante
//FLASH_HUD_OBJECT OnscreenCounter
IF vigilante_bonus_kills = 10
//ADD_PAGER_MESSAGE PAGEB12 140 100 1 //"Get out of jail free!"
SET_GET_OUT_OF_JAIL_FREE player TRUE
ENDIF
vigilante_bonus_kills += 5
ENDIF
IF location = 1
++ ind_copcar_kills
ENDIF
IF location = 2
++ com_copcar_kills
ENDIF
IF location = 3
++ sub_copcar_kills
ENDIF
IF play_pager_message1 = 0
IF ind_copcar_kills = 10
ADD_PAGER_MESSAGE PAGEB12 140 100 1 //"Police Bribe delivered to hideout"
PLAYER_MADE_PROGRESS 1
play_pager_message1 = 1
ENDIF
ENDIF
IF play_pager_message1 = 1
IF ind_copcar_kills = 20
ADD_PAGER_MESSAGE PAGEB12 140 100 1 //"Police Bribe delivered to hideout"
PLAYER_MADE_PROGRESS 1
play_pager_message1 = 2
ENDIF
ENDIF
IF play_pager_message2 = 0
IF com_copcar_kills = 10
ADD_PAGER_MESSAGE PAGEB12 140 100 1 //"Police Bribe delivered to hideout"
PLAYER_MADE_PROGRESS 1
play_pager_message2 = 1
ENDIF
ENDIF
IF play_pager_message2 = 1
IF com_copcar_kills = 20
ADD_PAGER_MESSAGE PAGEB12 140 100 1 //"Police Bribe delivered to hideout"
PLAYER_MADE_PROGRESS 1
play_pager_message2 = 2
ENDIF
ENDIF
IF play_pager_message3 = 0
IF sub_copcar_kills = 10
ADD_PAGER_MESSAGE PAGEB12 140 100 1 //"Police Bribe delivered to hideout"
PLAYER_MADE_PROGRESS 1
play_pager_message3 = 1
ENDIF
ENDIF
IF play_pager_message3 = 1
IF sub_copcar_kills = 20
ADD_PAGER_MESSAGE PAGEB12 140 100 1 //"Police Bribe delivered to hideout"
PLAYER_MADE_PROGRESS 1
play_pager_message3 = 2
ENDIF
ENDIF
WHILE NOT IS_PLAYER_IN_MODEL player CAR_POLICE
AND NOT IS_PLAYER_IN_MODEL player CAR_ENFORCER
AND NOT IS_PLAYER_IN_MODEL player CAR_RHINO
AND NOT IS_PLAYER_IN_MODEL player CAR_FBI
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
PRINT_WITH_NUMBER_NOW COPCART timer_in_secs 200 1 //You have ~1~ seconds to return to the car before the mission ends.
IF timer_in_secs < 1
PRINT_NOW C_TIME 3000 1//"Your time as a law enforcer is over!"
GOTO cop_car_failed
ENDIF
WAIT 0
ENDWHILE
IF IS_PLAYER_IN_ANY_CAR player
STORE_CAR_PLAYER_IS_IN player players_cop_car
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
GOTO cop_car_passed
/////////////////////////////////////////////////////////////
cop_car_passed://////////////////////////////////////////////
/////////////////////////////////////////////////////////////
CLEAR_ONSCREEN_TIMER cop_time_limit
REMOVE_BLIP criminal_blip
IF criminal_created_flag = 1
MARK_CHAR_AS_NO_LONGER_NEEDED criminal
criminal_created_flag = 0
ENDIF
GOTO next_cop_car
/////////////////////////////////////////////////////////////
cop_car_failed://////////////////////////////////////////////
/////////////////////////////////////////////////////////////
PRINT_BIG C_FAIL 5000 5
PRINT_WITH_NUMBER_BIG C_KILLS total_criminals_killed 6000 6
CLEAR_ONSCREEN_TIMER cop_time_limit
CLEAR_ONSCREEN_COUNTER total_criminals_killed
REMOVE_BLIP criminal_blip
CLEAR_HELP
MARK_MODEL_AS_NO_LONGER_NEEDED CAR_SENTINEL
MARK_MODEL_AS_NO_LONGER_NEEDED car_model
IF criminal_created_flag = 1
MARK_CHAR_AS_NO_LONGER_NEEDED criminal
criminal_created_flag = 0
ENDIF
flag_player_on_mission = 0
flag_player_on_cop_mission = 0
MISSION_HAS_FINISHED
RETURN
copcar_cancelled_checks:////////////////////////////////////////////////////////////////
IF NOT IS_PLAYER_IN_MODEL player CAR_POLICE
AND NOT IS_PLAYER_IN_MODEL player CAR_ENFORCER
AND NOT IS_PLAYER_IN_MODEL player CAR_RHINO
AND NOT IS_PLAYER_IN_MODEL player CAR_FBI
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
PRINT_WITH_NUMBER_NOW COPCART timer_in_secs 200 1 //You have ~1~ seconds to return to a squad car before the mission ends.
IF timer_in_secs < 1
PRINT_NOW C_TIME 3000 1//"Your time as a law enforcer is over!"
copcar_cancelled_flag = 1
RETURN
ENDIF
ENDIF
GET_CONTROLLER_MODE controlmode
IF IS_PLAYER_IN_MODEL player CAR_POLICE
OR IS_PLAYER_IN_MODEL player CAR_ENFORCER
OR IS_PLAYER_IN_MODEL player CAR_RHINO
OR IS_PLAYER_IN_MODEL player CAR_FBI
IF NOT controlmode = 3
IF IS_BUTTON_PRESSED PAD1 RIGHTSHOCK
mission_end_button = 1
ENDIF
ELSE
IF IS_BUTTON_PRESSED PAD1 SQUARE
mission_end_button = 1
ENDIF
ENDIF
game_time_flag = 0
ENDIF
IF mission_end_button = 1
IF NOT controlmode = 3
IF NOT IS_BUTTON_PRESSED PAD1 RIGHTSHOCK
PRINT_NOW C_CANC 3000 1//"Police mission cancelled!"
copcar_cancelled_flag = 1
RETURN
ENDIF
ELSE
IF NOT IS_BUTTON_PRESSED PAD1 SQUARE
PRINT_NOW C_CANC 3000 1//"Police mission cancelled!"
copcar_cancelled_flag = 1
RETURN
ENDIF
ENDIF
ENDIF
RETURN///////////////////////////////////////////////////////////////////////////////////