11291 lines
340 KiB
Python
Executable File
11291 lines
340 KiB
Python
Executable File
// ___ ___
|
|
// ___ author: Lawrence Kerr date: 03/06/2011 ___
|
|
// _________________________________________________________________________________________
|
|
// ___ ___
|
|
// ___ fbi1 - coroners mission ___
|
|
// _________________________________________________________________________________________
|
|
|
|
//Compile out Title Update changes to header functions.
|
|
//Must be before includes.
|
|
CONST_INT USE_TU_CHANGES 1
|
|
|
|
// ************************************* include files *************************************
|
|
const_int total_number_of_cia_enemies 17
|
|
const_int total_number_of_removed_cia_enemeis 2
|
|
const_int total_number_of_cia_enemies_top_floor 7
|
|
const_int total_number_of_cia_enemies_outside 5
|
|
|
|
const_int total_number_of_doctors 5
|
|
|
|
const_int stick_dead_zone 28
|
|
|
|
const_int MAX_SKIP_MENU_LENGTH 7
|
|
|
|
const_int total_number_of_police_men 4
|
|
const_int total_number_of_police_cars 2
|
|
|
|
const_int total_number_of_doors 15
|
|
|
|
const_int total_number_of_bins 1
|
|
|
|
const_int total_number_of_pickups 6
|
|
|
|
|
|
USING "rage_builtins.sch"
|
|
USING "globals.sch"
|
|
using "script_heist.sch"
|
|
USING "flow_public_core_override.sch"
|
|
using "commands_misc.sch"
|
|
using "commands_pad.sch"
|
|
using "commands_script.sch"
|
|
using "commands_player.sch"
|
|
using "commands_streaming.sch"
|
|
using "commands_vehicle.sch"
|
|
using "commands_camera.sch"
|
|
using "commands_path.sch"
|
|
using "commands_fire.sch"
|
|
using "commands_graphics.sch"
|
|
using "commands_object.sch"
|
|
using "commands_misc.sch"
|
|
using "commands_recording.sch"
|
|
using "script_player.sch"
|
|
using "script_debug.sch"
|
|
using "streamed_scripts.sch"
|
|
using "model_enums.sch"
|
|
using "cellphone_public.sch"
|
|
using "selector_public.sch"
|
|
using "dialogue_public.sch"
|
|
using "player_ped_public.sch"
|
|
using "chase_hint_cam.sch"
|
|
using "locates_public.sch"
|
|
using "script_blips.sch"
|
|
using "select_mission_stage.sch"
|
|
using "replay_public.sch"
|
|
using "commands_cutscene.sch"
|
|
using "mission_stat_public.sch"
|
|
using "cutscene_public.sch"
|
|
USING "CompletionPercentage_public.sch"
|
|
using "drunk_public.sch"
|
|
using "weapons_public.sch"
|
|
using "building_control_public.sch"
|
|
using "emergency_call.sch"
|
|
using "clearmissionarea.sch"
|
|
using "taxi_functions.sch"
|
|
using "ambient_common.sch"
|
|
using "cheat_controller_public.sch"
|
|
|
|
|
|
struct ped_structure
|
|
ped_index ped
|
|
model_names model
|
|
blip_index blip
|
|
AI_BLIP_STRUCT blip_2
|
|
vector pos
|
|
vector run_to_pos
|
|
float heading
|
|
int health
|
|
int accuracy
|
|
bool damaged_by_player
|
|
bool allow_body_armour
|
|
bool created
|
|
weapon_type weapon
|
|
text_label name
|
|
endstruct
|
|
|
|
|
|
struct vehicle_struct
|
|
vehicle_index veh
|
|
model_names model
|
|
blip_index blip
|
|
vector pos
|
|
float heading
|
|
float speed
|
|
float skip_time
|
|
int health
|
|
float engine_health
|
|
float petrol_tank_health
|
|
int colour
|
|
int recording_number
|
|
bool been_created
|
|
endstruct
|
|
|
|
struct object_struct
|
|
object_index obj
|
|
blip_index blip
|
|
model_names model
|
|
vector pos
|
|
vector offset_pos
|
|
vector offset_pos_2
|
|
vector rot
|
|
vector offset_rot
|
|
float heading
|
|
float scale
|
|
float health
|
|
string room_name
|
|
int time
|
|
bool been_created
|
|
endstruct
|
|
|
|
struct pickup_struct
|
|
pickup_index pickup
|
|
model_names model
|
|
pickup_type type
|
|
blip_index blip
|
|
vector pos
|
|
vector rot
|
|
bool collected
|
|
string room_name
|
|
endstruct
|
|
|
|
struct quaternion
|
|
float x
|
|
float y
|
|
float z
|
|
float w
|
|
endstruct
|
|
|
|
enum main_mission_flow
|
|
intro_mocap = 0,
|
|
stealth_cutscene,
|
|
get_to_locker,
|
|
stealth_the_cia_officer,
|
|
find_bodies,
|
|
shootout,
|
|
escape_cutscene,
|
|
lose_cops,
|
|
get_to_hills,
|
|
pass_cutscene,
|
|
mission_fail_stage,
|
|
load_stage_selector_assets
|
|
endenum
|
|
main_mission_flow mission_flow = intro_mocap
|
|
|
|
enum main_mission_shootout
|
|
attack_phase_1 = 0,
|
|
get_to_pos_1,
|
|
attack_phase_2,
|
|
get_to_pos_2,
|
|
do_nothing
|
|
endenum
|
|
main_mission_shootout cia_enemy_ai_status[total_number_of_cia_enemies]
|
|
main_mission_shootout cia_enemy_top_floor_ai_status[total_number_of_cia_enemies_top_floor]
|
|
main_mission_shootout cia_enemy_outside_ai_status[total_number_of_cia_enemies_outside]
|
|
|
|
enum doctor_ai_enum
|
|
action_1 = 0,
|
|
action_1_status,
|
|
action_2,
|
|
action_2_status,
|
|
action_3_status
|
|
endenum
|
|
doctor_ai_enum doctor_ai_status[total_number_of_doctors]
|
|
|
|
ped_structure cia_enemy[total_number_of_cia_enemies]
|
|
ped_structure cia_enemy_top_floor[total_number_of_cia_enemies_top_floor]
|
|
ped_structure cia_enemy_outside[total_number_of_cia_enemies_outside]
|
|
ped_structure doctor[total_number_of_doctors]
|
|
ped_structure dead_body[2]
|
|
ped_structure franklin
|
|
//ped_structure police_man[total_number_of_police_men]
|
|
ped_structure cia_stealth
|
|
ped_structure dave
|
|
|
|
vehicle_struct police_car[total_number_of_police_cars]
|
|
vehicle_struct ambient_car[2]
|
|
vehicle_struct franklins_car
|
|
|
|
object_struct clip_board
|
|
object_struct pen
|
|
object_struct bin_bag[2]
|
|
object_struct window
|
|
object_struct bone_saw
|
|
object_struct bin[total_number_of_bins]
|
|
object_struct cia_weapon_obj
|
|
|
|
bool stop_mission_fail_checks = false
|
|
bool alarm_on = false
|
|
bool activate_elevator_door_system = false
|
|
bool zip_sound_activated = false
|
|
bool dialogue_paused = false
|
|
bool dave_norton_phone_call_finished = false
|
|
bool break_the_glass_window = false
|
|
bool operating_table_fail = false
|
|
bool michael_clothes_set = false
|
|
bool rumble_pad = false
|
|
bool pistol_flash_light_equiped = false
|
|
bool intro_mocap_shake_pad = false
|
|
bool shootout_assets_removed = false
|
|
bool taxi_drop_off_set_for_pass_mocap = false
|
|
bool bypass_find_dead_bodies_stage = false
|
|
bool player_weapons_restored = false
|
|
bool stop_doctor_2_speaking = false
|
|
|
|
//int alarm_sound[5]
|
|
int alarm_time
|
|
int original_time
|
|
int intro_mocap_status = 0
|
|
int fbi1_stealth_cutscene_status = 0
|
|
int fbi1_master_controller_status = 0
|
|
int fbi1_escape_cutscene_status = 0
|
|
int current_line = -1
|
|
int phone_call_system_status = 0
|
|
int cutscene_index
|
|
int doctor_0_cutscene_index
|
|
int doctor_1_cutscene_index
|
|
int get_to_hills_status = 0
|
|
int zip_sound = 0
|
|
int lift_sound = 0
|
|
int i_triggered_text_hashes[22]
|
|
int dialogue_time
|
|
int dialogue_status = 0
|
|
int franklin_ai_system_status = 0
|
|
int shootout_time = 0
|
|
int doctor_4_time
|
|
int inspect_body_0_status = 0
|
|
int inspect_body_1_status = 0
|
|
int phone_hang_up_count = 0
|
|
int music_event_system_status = 0
|
|
int cia_stealth_enemy_ai_system_status = 0
|
|
int cia_stealth_dialogue_system_status = 0
|
|
int special_ability_help_text_system_status = 0
|
|
int help_time = 0
|
|
int attack_time = 0
|
|
int doctor_time[total_number_of_doctors]
|
|
int interactive_cutscene_cam_status
|
|
int phone_call_system_2_status = 0
|
|
int phone_call_time = 0
|
|
int delete_wave_one_cia_enemies_and_doctors_system_status = 0
|
|
int fail_safe_time
|
|
int break_entity_glass_system_status = 0
|
|
int replay_video_recorder_system_status = 0
|
|
|
|
int fbi_door[total_number_of_doors]
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
int p_skip_time
|
|
#endif
|
|
|
|
|
|
vector cutscene_pos
|
|
vector cutscene_rot
|
|
|
|
float zip_inc
|
|
float zip_y
|
|
|
|
string mission_failed_text
|
|
|
|
structpedsforconversation scripted_speech
|
|
|
|
locates_header_data locates_data
|
|
|
|
sequence_index seq
|
|
|
|
camera_index camera_a
|
|
|
|
interior_instance_index coroner_interior
|
|
|
|
blip_index escape_blip
|
|
|
|
coverpoint_index cia_enemy_cover_point[total_number_of_cia_enemies]
|
|
coverpoint_index cia_enemy_top_floor_cover_point[total_number_of_cia_enemies_top_floor]
|
|
|
|
vehicle_index players_last_vehicle
|
|
|
|
pickup_index fbi1_pickup[total_number_of_pickups]
|
|
|
|
//ptfx_id ptfx_paper
|
|
|
|
text_label dialogue_root
|
|
text_label specific_label
|
|
|
|
|
|
|
|
//**********not present in initialise_mission_variables()
|
|
int launch_mission_stage_menu_status = 0
|
|
bool replay_active = false
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
MissionStageMenuTextStruct menu_stage_selector[MAX_SKIP_MENU_LENGTH]
|
|
widget_group_id fbi1_widget_group
|
|
int menu_return_stage = 0
|
|
#endif
|
|
|
|
|
|
//****************************************lawrence sdk****************************************
|
|
|
|
proc disable_dispatch_services()
|
|
|
|
enable_dispatch_service(dt_fire_department, false)
|
|
enable_dispatch_service(dt_police_automobile, false)
|
|
enable_dispatch_service(dt_police_helicopter, false)
|
|
enable_dispatch_service(dt_ambulance_department, false)
|
|
|
|
endproc
|
|
|
|
proc enable_dispatch_services()
|
|
|
|
enable_dispatch_service(dt_fire_department, true)
|
|
enable_dispatch_service(dt_police_automobile, true)
|
|
enable_dispatch_service(dt_police_helicopter, true)
|
|
enable_dispatch_service(dt_ambulance_department, true)
|
|
|
|
endproc
|
|
|
|
func bool start_new_cutscene_no_fade(bool clear_players_tasks = true, bool hide_weapon_for_cutscene = true, bool kill_conversation_line_immediately = true, bool ignore_can_player_start_cutscene = false)
|
|
|
|
if can_player_start_cutscene() OR ignore_can_player_start_cutscene
|
|
|
|
clear_prints()
|
|
clear_help()
|
|
if kill_conversation_line_immediately
|
|
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
|
|
else
|
|
kill_any_conversation()
|
|
endif
|
|
|
|
SPECIAL_ABILITY_DEACTIVATE(player_id())
|
|
|
|
SET_SCRIPTS_SAFE_FOR_CUTSCENE(true)
|
|
|
|
display_hud(false)
|
|
display_radar(false)
|
|
set_widescreen_borders(true, 500)
|
|
|
|
if clear_players_tasks
|
|
set_player_control(player_id(), false, spc_clear_tasks)
|
|
else
|
|
set_player_control(player_id(), false)
|
|
endif
|
|
|
|
if hide_weapon_for_cutscene
|
|
hide_ped_weapon_for_scripted_cutscene(player_ped_id(), true)
|
|
endif
|
|
|
|
disable_dispatch_services()
|
|
|
|
return true
|
|
endif
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
|
|
proc end_cutscene(bool clear_tasks = true, float interp_heading = 0.0, float interp_pitch = 0.0, bool enable_emergency_services = true)
|
|
|
|
SET_SCRIPTS_SAFE_FOR_CUTSCENE(false)
|
|
|
|
clear_prints()
|
|
clear_help()
|
|
kill_face_to_face_conversation()
|
|
|
|
display_hud(true)
|
|
display_radar(true)
|
|
set_widescreen_borders(false, 500)
|
|
|
|
|
|
if is_player_playing(player_id())
|
|
|
|
destroy_all_cams()
|
|
|
|
render_script_cams(false, false)
|
|
set_gameplay_cam_relative_heading(interp_heading)
|
|
set_gameplay_cam_relative_pitch(interp_pitch)
|
|
|
|
if clear_tasks
|
|
clear_ped_tasks(player_ped_id())
|
|
endif
|
|
|
|
set_player_control(player_id(), true)
|
|
hide_ped_weapon_for_scripted_cutscene(player_ped_id(), false)
|
|
|
|
SET_PLAYER_CLOTH_PIN_FRAMES(player_id(), 1)
|
|
endif
|
|
|
|
if enable_emergency_services
|
|
enable_dispatch_services()
|
|
else
|
|
disable_dispatch_services()
|
|
endif
|
|
|
|
do_screen_fade_in(DEFAULT_FADE_TIME)
|
|
|
|
endproc
|
|
|
|
proc end_cutscene_no_fade(bool clear_tasks = true, bool update_game_camera = true, bool interpolate_behind_player = false, float interp_heading = 0.0, float interp_pitch = 0.0, int interp_to_game_time = 3000, bool enable_emergency_services = true)
|
|
|
|
SET_SCRIPTS_SAFE_FOR_CUTSCENE(false)
|
|
|
|
clear_prints()
|
|
clear_help()
|
|
kill_face_to_face_conversation()
|
|
|
|
display_hud(true)
|
|
display_radar(true)
|
|
set_widescreen_borders(false, 500)
|
|
|
|
if is_player_playing(player_id())
|
|
|
|
destroy_all_cams()
|
|
|
|
if update_game_camera
|
|
if interpolate_behind_player
|
|
render_script_cams(false, true, interp_to_game_time)
|
|
set_gameplay_cam_relative_heading(interp_heading)
|
|
set_gameplay_cam_relative_pitch(interp_pitch)
|
|
else
|
|
render_script_cams(false, false)
|
|
set_gameplay_cam_relative_heading(interp_heading)
|
|
set_gameplay_cam_relative_pitch(interp_pitch)
|
|
endif
|
|
endif
|
|
|
|
if clear_tasks
|
|
clear_ped_tasks(player_ped_id())
|
|
endif
|
|
set_player_control(player_id(), true)
|
|
hide_ped_weapon_for_scripted_cutscene(player_ped_id(), false)
|
|
|
|
SET_PLAYER_CLOTH_PIN_FRAMES(player_id(), 1)
|
|
endif
|
|
|
|
if enable_emergency_services
|
|
enable_dispatch_services()
|
|
else
|
|
disable_dispatch_services()
|
|
endif
|
|
|
|
endproc
|
|
|
|
func bool lk_timer(int &start_time, int time)
|
|
int current_time
|
|
current_time = get_game_timer()
|
|
|
|
if ((current_time - start_time) > time)
|
|
return true
|
|
endif
|
|
|
|
return false
|
|
endfunc
|
|
|
|
func bool is_skip_button_pressed()
|
|
|
|
return is_control_just_pressed(frontend_control, input_frontend_accept)
|
|
|
|
endfunc
|
|
|
|
func bool skip_scripted_cut(int &original_time_temp, int cutscene_skip_time)
|
|
if lk_timer(original_time_temp, cutscene_skip_time)
|
|
if is_screen_faded_in()
|
|
if is_cutscene_skip_button_pressed()
|
|
return true
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
return false
|
|
endfunc
|
|
|
|
func bool mission_ped_created_and_injured(bool &mission_ped_created, ped_index &mission_ped)
|
|
|
|
if mission_ped_created
|
|
return is_ped_injured(mission_ped)
|
|
endif
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
func bool mission_ped_injured(ped_index &this_ped)
|
|
|
|
if does_entity_exist(this_ped)
|
|
return is_ped_injured(this_ped)
|
|
endif
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
func bool mission_vehicle_injured(vehicle_index &this_vehicle)
|
|
|
|
if does_entity_exist(this_vehicle)
|
|
if not is_vehicle_driveable(this_vehicle)
|
|
return true
|
|
endif
|
|
endif
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
func bool is_mission_entity_attacked(ped_index &mission_ped, bool clear_damage_entity = false)
|
|
|
|
if does_entity_exist(mission_ped)
|
|
if not is_ped_injured(mission_ped)
|
|
if has_entity_been_damaged_by_entity(mission_ped, player_ped_id())
|
|
if clear_damage_entity
|
|
clear_entity_last_damage_entity(mission_ped)
|
|
endif
|
|
return true
|
|
endif
|
|
else
|
|
return true
|
|
endif
|
|
endif
|
|
|
|
return false
|
|
endfunc
|
|
|
|
func bool has_char_task_finished_2(ped_index ped, script_task_name taskname)
|
|
scripttaskstatus status
|
|
status = get_script_task_status(ped, taskname)
|
|
|
|
if status = finished_task
|
|
or status = dormant_task
|
|
return true
|
|
endif
|
|
|
|
return false
|
|
endfunc
|
|
|
|
//gets the currenent car the player is in
|
|
func bool get_current_player_vehicle(vehicle_index &test_car)
|
|
|
|
if is_ped_sitting_in_any_vehicle(player_ped_id())
|
|
test_car = get_players_last_vehicle()
|
|
if does_entity_exist(test_car)
|
|
if is_vehicle_driveable(test_car)
|
|
return true
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
return false
|
|
endfunc
|
|
|
|
proc stop_player_vehicle()
|
|
|
|
vehicle_index player_car
|
|
|
|
if get_current_player_vehicle(player_car)
|
|
|
|
float player_car_speed
|
|
|
|
set_player_control(player_id(), false)
|
|
set_entity_proofs(player_car, true, true, true, true, true)
|
|
|
|
player_car_speed = get_entity_speed(player_car)
|
|
|
|
while player_car_speed > 0.2
|
|
wait(0)
|
|
if not is_entity_dead(player_car)
|
|
player_car_speed = get_entity_speed(player_car)
|
|
endif
|
|
endwhile
|
|
|
|
set_entity_proofs(player_car, false, false, false, false, false)
|
|
set_player_control(player_id(), true)
|
|
|
|
endif
|
|
endproc
|
|
|
|
func bool add_ped_to_players_group(ped_index &this_ped, group_index &players_group)
|
|
|
|
if does_entity_exist(this_ped)
|
|
if not is_ped_injured(this_ped)
|
|
|
|
players_group = get_player_group(player_id())
|
|
|
|
set_ped_as_group_member(this_ped, players_group)
|
|
|
|
return true
|
|
endif
|
|
endif
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
func float distance_from_player_to_ped(ped_index &mission_ped)
|
|
|
|
vector player_pos
|
|
vector mission_ped_pos
|
|
|
|
if does_entity_exist(mission_ped)
|
|
if not is_ped_injured(mission_ped)
|
|
|
|
player_pos = get_entity_coords(player_ped_id())
|
|
mission_ped_pos = get_entity_coords(mission_ped)
|
|
|
|
return get_distance_between_coords(player_pos, mission_ped_pos)
|
|
endif
|
|
endif
|
|
|
|
return -1.0
|
|
|
|
endfunc
|
|
|
|
func bool has_ped_task_finished_2(ped_index ped, script_task_name taskname = script_task_perform_sequence, int sequence_progress = -2)
|
|
|
|
scripttaskstatus status
|
|
status = get_script_task_status(ped, taskname)
|
|
|
|
if status = finished_task
|
|
or status = dormant_task
|
|
or get_sequence_progress(ped) = sequence_progress
|
|
return true
|
|
endif
|
|
|
|
return false
|
|
endfunc
|
|
|
|
func bool is_ped_playing_anim_at_phase(string anim_dict_name, string anim_name, float phase_target)
|
|
|
|
if is_entity_playing_anim(player_ped_id(), anim_dict_name, anim_name)
|
|
if get_entity_anim_current_time(player_ped_id(), anim_dict_name, anim_name) > phase_target
|
|
return true
|
|
endif
|
|
endif
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
//the players group does not include the player himself. relgrouphash_player is the player
|
|
rel_group_hash player_group
|
|
rel_group_hash enemy_group
|
|
|
|
|
|
proc add_relationship_groups()
|
|
|
|
add_relationship_group("players group", player_group)
|
|
add_relationship_group("enemy group", enemy_group)
|
|
|
|
endproc
|
|
|
|
proc setup_relationship_contact(ped_index &this_ped, bool block_temporary_events = false)
|
|
|
|
set_relationship_between_groups(acquaintance_type_ped_like, player_group, relgrouphash_player)
|
|
set_relationship_between_groups(acquaintance_type_ped_like, relgrouphash_player, player_group)
|
|
|
|
set_relationship_between_groups(acquaintance_type_ped_hate, relgrouphash_player, enemy_group)
|
|
set_relationship_between_groups(acquaintance_type_ped_hate, player_group, enemy_group)
|
|
set_relationship_between_groups(acquaintance_type_ped_hate, enemy_group, relgrouphash_player)
|
|
set_relationship_between_groups(acquaintance_type_ped_hate, enemy_group, player_group)
|
|
|
|
if does_entity_exist(this_ped)
|
|
if not is_ped_injured(this_ped)
|
|
|
|
set_ped_relationship_group_hash(this_ped, player_group)
|
|
|
|
set_ped_target_loss_response(this_ped, tlr_never_lose_target)
|
|
|
|
SET_PED_COMBAT_ATTRIBUTES(this_ped, CA_USE_VEHICLE, false)
|
|
|
|
if block_temporary_events
|
|
set_blocking_of_non_temporary_events(this_ped, true)
|
|
else
|
|
set_blocking_of_non_temporary_events(this_ped, false)
|
|
endif
|
|
|
|
endif
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc setup_relationship_enemy(ped_index &this_ped, bool block_temporary_events = false)
|
|
|
|
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_LIKE, player_group, RELGROUPHASH_PLAYER)
|
|
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_LIKE, RELGROUPHASH_PLAYER, player_group)
|
|
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_LIKE, enemy_group, RELGROUPHASH_COP)
|
|
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_LIKE, RELGROUPHASH_COP, enemy_group)
|
|
|
|
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_HATE, RELGROUPHASH_PLAYER, enemy_group)
|
|
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_HATE, player_group, enemy_group)
|
|
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_HATE, enemy_group, RELGROUPHASH_PLAYER)
|
|
SET_RELATIONSHIP_between_groups(ACQUAINTANCE_TYPE_PED_HATE, enemy_group, player_group)
|
|
|
|
if does_entity_exist(this_ped)
|
|
if not is_ped_injured(this_ped)
|
|
|
|
set_ped_relationship_group_hash(this_ped, enemy_group)
|
|
|
|
//set_ped_combat_attributes(this_ped, ca_will_scan_for_dead_peds, false)
|
|
SET_PED_COMBAT_ATTRIBUTES(this_ped, CA_MOVE_TO_LOCATION_BEFORE_COVER_SEARCH, TRUE)
|
|
|
|
set_ped_target_loss_response(this_ped, tlr_never_lose_target)
|
|
|
|
set_entity_is_target_priority(this_ped, true)
|
|
|
|
if block_temporary_events
|
|
set_blocking_of_non_temporary_events(this_ped, true)
|
|
else
|
|
set_blocking_of_non_temporary_events(this_ped, false)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc setup_enemy(ped_structure &enemy, bool apply_ped_type_cop = false)
|
|
|
|
clear_area(enemy.pos, 1.5, true)
|
|
|
|
if not apply_ped_type_cop
|
|
enemy.ped = create_ped(pedtype_mission, enemy.model, enemy.pos, enemy.heading)
|
|
else
|
|
enemy.ped = create_ped(pedtype_cop, enemy.model, enemy.pos, enemy.heading)
|
|
endif
|
|
set_ped_random_component_variation(enemy.ped)
|
|
set_ped_dies_when_injured(enemy.ped, true)
|
|
set_ped_as_enemy(enemy.ped, true)
|
|
set_entity_is_target_priority(enemy.ped, true)
|
|
set_ped_keep_task(enemy.ped, true)
|
|
SET_PED_CONFIG_FLAG(enemy.ped, PCF_KeepRelationshipGroupAfterCleanUp, true)
|
|
|
|
SET_PED_MONEY(enemy.ped, 0)
|
|
|
|
give_weapon_to_ped(enemy.ped, enemy.weapon, infinite_ammo, true)
|
|
|
|
set_entity_health(enemy.ped, enemy.health)
|
|
set_ped_max_health(enemy.ped, enemy.health)
|
|
|
|
if enemy.damaged_by_player
|
|
set_entity_only_damaged_by_player(enemy.ped, true)
|
|
endif
|
|
|
|
if enemy.allow_body_armour
|
|
add_armour_to_ped(enemy.ped, 100)
|
|
endif
|
|
|
|
set_ped_name_debug(enemy.ped, enemy.name)
|
|
|
|
set_ped_seeing_range(enemy.ped, 250.00)
|
|
set_ped_hearing_range(enemy.ped, 250.00)
|
|
set_ped_id_range(enemy.ped, 250.00)
|
|
|
|
// enemy.blip = ADD_STEALTH_BLIP_FOR_PED(enemy.ped)
|
|
// set_blip_display(enemy.blip, DISPLAY_BLIP)
|
|
|
|
set_ped_can_evasive_dive(enemy.ped, true)
|
|
|
|
setup_relationship_enemy(enemy.ped, true)
|
|
|
|
set_ped_accuracy(enemy.ped, enemy.accuracy)
|
|
|
|
INFORM_MISSION_STATS_OF_HEADSHOT_WATCH_ENTITY(enemy.ped)
|
|
|
|
enemy.created = true
|
|
|
|
endproc
|
|
|
|
proc setup_enemy_in_vehicle(ped_structure &enemy, vehicle_index &mission_veh, vehicle_seat veh_seat = vs_driver, bool create_blip = false)
|
|
|
|
clear_area(enemy.pos, 2.0, true)
|
|
|
|
enemy.ped = create_ped_inside_vehicle(mission_veh, pedtype_cop, enemy.model, veh_seat)
|
|
set_ped_random_component_variation(enemy.ped)
|
|
set_ped_dies_when_injured(enemy.ped, true)
|
|
set_ped_as_enemy(enemy.ped, true)
|
|
set_entity_is_target_priority(enemy.ped, true)
|
|
set_ped_keep_task(enemy.ped, true)
|
|
SET_PED_CONFIG_FLAG(enemy.ped, PCF_KeepRelationshipGroupAfterCleanUp, false) //only for cops peds
|
|
|
|
give_weapon_to_ped(enemy.ped, enemy.weapon, infinite_ammo, true)
|
|
set_ped_accuracy(enemy.ped, enemy.accuracy)
|
|
|
|
SET_ENTITY_HEALTH(enemy.ped, enemy.health)
|
|
set_ped_max_health(enemy.ped, enemy.health)
|
|
|
|
if enemy.damaged_by_player
|
|
SET_ENTITY_ONLY_DAMAGED_BY_PLAYER(enemy.ped, true)
|
|
endif
|
|
|
|
if enemy.allow_body_armour
|
|
add_armour_to_ped(enemy.ped, 100)
|
|
endif
|
|
|
|
enemy.created = true
|
|
|
|
set_ped_name_debug(enemy.ped, enemy.name)
|
|
|
|
set_ped_hearing_range(enemy.ped, 250.00)
|
|
set_ped_seeing_range(enemy.ped, 250.00)
|
|
set_ped_id_range(enemy.ped, 250.00)
|
|
|
|
if create_blip
|
|
enemy.blip = create_blip_for_ped(enemy.ped, true)
|
|
set_blip_display(enemy.blip, DISPLAY_BLIP)
|
|
endif
|
|
|
|
set_ped_can_evasive_dive(enemy.ped, true)
|
|
|
|
setup_relationship_enemy(enemy.ped, true)
|
|
|
|
endproc
|
|
|
|
proc setup_enemy_attributes(ped_structure &enemy)
|
|
|
|
set_ped_dies_when_injured(enemy.ped, true)
|
|
set_ped_as_enemy(enemy.ped, true)
|
|
set_entity_is_target_priority(enemy.ped, true)
|
|
set_ped_keep_task(enemy.ped, true)
|
|
SET_PED_CONFIG_FLAG(enemy.ped, PCF_KeepRelationshipGroupAfterCleanUp, true)
|
|
|
|
SET_PED_MONEY(enemy.ped, 0)
|
|
|
|
enemy.blip = create_blip_for_ped(enemy.ped, true)
|
|
|
|
give_weapon_to_ped(enemy.ped, enemy.weapon, infinite_ammo, true)
|
|
|
|
set_entity_health(enemy.ped, enemy.health)
|
|
set_ped_max_health(enemy.ped, enemy.health)
|
|
|
|
if enemy.damaged_by_player
|
|
set_entity_only_damaged_by_player(enemy.ped, true)
|
|
endif
|
|
|
|
if enemy.allow_body_armour
|
|
add_armour_to_ped(enemy.ped, 100)
|
|
endif
|
|
|
|
set_ped_name_debug(enemy.ped, enemy.name)
|
|
|
|
set_ped_seeing_range(enemy.ped, 250.00)
|
|
set_ped_hearing_range(enemy.ped, 250.00)
|
|
set_ped_id_range(enemy.ped, 250.00)
|
|
|
|
set_ped_can_evasive_dive(enemy.ped, true)
|
|
|
|
set_ped_accuracy(enemy.ped, enemy.accuracy)
|
|
|
|
INFORM_MISSION_STATS_OF_HEADSHOT_WATCH_ENTITY(enemy.ped)
|
|
|
|
endproc
|
|
|
|
proc setup_buddy(ped_structure &mission_buddy)
|
|
|
|
clear_area(mission_buddy.pos, 4.0, true)
|
|
|
|
mission_buddy.ped = create_ped(pedtype_mission, mission_buddy.model, mission_buddy.pos, mission_buddy.heading)
|
|
set_entity_health(mission_buddy.ped, mission_buddy.health)
|
|
set_ped_dies_when_injured(mission_buddy.ped, false)
|
|
set_ped_can_be_targetted(mission_buddy.ped, false)
|
|
set_ped_suffers_critical_hits(mission_buddy.ped, false)
|
|
set_ped_can_evasive_dive(mission_buddy.ped, false)
|
|
set_entity_is_target_priority(mission_buddy.ped, false)
|
|
set_ped_keep_task(mission_buddy.ped, true)
|
|
SET_PED_CONFIG_FLAG(mission_buddy.ped, PCF_KeepRelationshipGroupAfterCleanUp, true)
|
|
SET_PED_CONFIG_FLAG(mission_buddy.ped, PCF_WillFlyThroughWindscreen, false)
|
|
set_ped_can_ragdoll(mission_buddy.ped, false)
|
|
|
|
give_weapon_to_ped(mission_buddy.ped, mission_buddy.weapon, infinite_ammo, false)
|
|
set_ped_seeing_range(mission_buddy.ped, 250.00)
|
|
set_ped_hearing_range(mission_buddy.ped, 250.00)
|
|
set_ped_id_range(mission_buddy.ped, 250.00)
|
|
|
|
set_blocking_of_non_temporary_events(mission_buddy.ped, true)
|
|
|
|
endproc
|
|
|
|
proc setup_buddy_attributes(ped_index mission_ped)
|
|
|
|
set_ped_dies_when_injured(mission_ped, false)
|
|
set_ped_can_be_targetted(mission_ped, false)
|
|
set_ped_suffers_critical_hits(mission_ped, false)
|
|
set_ped_can_evasive_dive(mission_ped, false)
|
|
set_entity_is_target_priority(mission_ped, false)
|
|
set_ped_can_ragdoll(mission_ped, false)
|
|
|
|
set_ped_seeing_range(mission_ped, 250.00)
|
|
set_ped_hearing_range(mission_ped, 250.00)
|
|
set_ped_id_range(mission_ped, 250.00)
|
|
|
|
SET_PED_CONFIG_FLAG(mission_ped, PCF_KeepRelationshipGroupAfterCleanUp, true)
|
|
SET_PED_CONFIG_FLAG(mission_ped, PCF_WillFlyThroughWindscreen, false)
|
|
SET_PED_CONFIG_FLAG(mission_ped, PCF_RunFromFiresAndExplosions, FALSE)
|
|
SET_PED_CONFIG_FLAG(mission_ped, PCF_DisableExplosionReactions, FALSE)
|
|
|
|
endproc
|
|
|
|
func bool ped_structure_are_all_enemies_dead(ped_structure &enemy_array[], bool set_ped_no_longer_needed = true)
|
|
|
|
int peds_dead = 0
|
|
int k = 0
|
|
|
|
for k = 0 to (count_of(enemy_array) - 1)
|
|
|
|
if does_entity_exist(enemy_array[k].ped)
|
|
if is_ped_injured(enemy_array[k].ped)
|
|
|
|
if set_ped_no_longer_needed
|
|
set_ped_as_no_longer_needed(enemy_array[k].ped)
|
|
endif
|
|
|
|
if does_blip_exist(enemy_array[k].blip)
|
|
remove_blip(enemy_array[k].blip)
|
|
endif
|
|
|
|
if is_special_ability_active(player_id())
|
|
INFORM_MISSION_STATS_OF_INCREMENT(FBI1_SPECKILLS)
|
|
endif
|
|
|
|
INFORM_MISSION_STATS_OF_INCREMENT(FBI1_KILLS)
|
|
peds_dead ++
|
|
endif
|
|
|
|
else
|
|
|
|
if enemy_array[k].created
|
|
peds_dead ++
|
|
endif
|
|
|
|
endif
|
|
|
|
//only process update_ai_ped_blip if a normal blip is not on the ped
|
|
if not does_blip_exist(enemy_array[k].blip)
|
|
UPDATE_AI_PED_BLIP(enemy_array[k].ped, enemy_array[k].blip_2)
|
|
endif
|
|
|
|
endfor
|
|
|
|
if peds_dead = count_of(enemy_array)
|
|
return true
|
|
endif
|
|
|
|
return false
|
|
endfunc
|
|
|
|
PROC REMOVE_VEHICLE(VEHICLE_INDEX &veh, BOOL b_force_delete = FALSE)
|
|
|
|
IF DOES_ENTITY_EXIST(veh)
|
|
|
|
IF IS_VEHICLE_DRIVEABLE(veh)
|
|
IF IS_ENTITY_ATTACHED(veh)
|
|
DETACH_ENTITY(veh)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_ENTITY_A_MISSION_ENTITY(veh) AND DOES_ENTITY_BELONG_TO_THIS_SCRIPT(veh, false)
|
|
|
|
if is_player_playing(player_id())
|
|
|
|
if is_vehicle_driveable(veh)
|
|
|
|
if not is_ped_sitting_in_vehicle(player_ped_id(), veh)
|
|
|
|
IF b_force_delete
|
|
DELETE_VEHICLE(veh)
|
|
ELSE
|
|
SET_VEHICLE_AS_NO_LONGER_NEEDED(veh)
|
|
ENDIF
|
|
|
|
else
|
|
|
|
SET_VEHICLE_AS_NO_LONGER_NEEDED(veh)
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
SET_VEHICLE_AS_NO_LONGER_NEEDED(veh)
|
|
|
|
endif
|
|
|
|
else
|
|
SET_VEHICLE_AS_NO_LONGER_NEEDED(veh) //can't delete vehicle with player in it. Fail system requires player to be in car can't use clear_ped_tasks_immediaely()
|
|
endif
|
|
endif
|
|
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
//*****call this function underneath ped_structure_are_all_enemies_dead
|
|
func bool ped_structure_are_specific_number_enemies_dead(ped_structure &enemy_array[], int number_of_dead_peds)
|
|
|
|
int peds_dead = 0
|
|
int k = 0
|
|
|
|
for k = 0 to count_of(enemy_array) - 1
|
|
if enemy_array[k].created
|
|
if is_ped_injured(enemy_array[k].ped)
|
|
peds_dead++
|
|
endif
|
|
endif
|
|
endfor
|
|
|
|
if peds_dead >= number_of_dead_peds
|
|
return true
|
|
endif
|
|
|
|
return false
|
|
endfunc
|
|
|
|
func int ped_structure_get_total_number_of_enemies_dead(ped_structure &enemy_array[])
|
|
|
|
int peds_dead = 0
|
|
int k = 0
|
|
|
|
for k = 0 to count_of(enemy_array) - 1
|
|
if enemy_array[k].created
|
|
if is_ped_injured(enemy_array[k].ped)
|
|
peds_dead++
|
|
endif
|
|
endif
|
|
endfor
|
|
|
|
return peds_dead
|
|
|
|
endfunc
|
|
|
|
|
|
|
|
func bool is_coord_in_area_2d(vector test_coord, vector top_left, vector bottom_right)
|
|
|
|
vector tl
|
|
vector br
|
|
|
|
if top_left.x < bottom_right.x
|
|
tl.x = top_left.x
|
|
br.x = bottom_right.x
|
|
else
|
|
tl.x = bottom_right.x
|
|
br.x = top_left.x
|
|
endif
|
|
|
|
if top_left.y < bottom_right.y
|
|
tl.y = top_left.y
|
|
br.y = bottom_right.y
|
|
else
|
|
tl.y = bottom_right.y
|
|
br.y = top_left.y
|
|
endif
|
|
|
|
if (test_coord.x > tl.x) and (test_coord.x < br.x)
|
|
if (test_coord.y > tl.y) and (test_coord.y < br.y)
|
|
return true
|
|
endif
|
|
endif
|
|
|
|
return false
|
|
endfunc
|
|
|
|
func bool has_ped_been_harmed(ped_index &mission_ped, int &original_health)
|
|
|
|
int current_health
|
|
|
|
if does_entity_exist(mission_ped)
|
|
if not is_ped_injured(mission_ped)
|
|
|
|
current_health = get_entity_health(mission_ped)
|
|
|
|
if has_entity_been_damaged_by_entity(mission_ped , player_ped_id())
|
|
or (current_health < original_health)
|
|
or is_ped_responding_to_event(mission_ped, event_damage)
|
|
|
|
return true
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
return true
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
func bool has_peds_been_harmed(ped_structure &ped_struct[])
|
|
|
|
int k = 0
|
|
|
|
for k = 0 to (count_of(ped_struct) - 1)
|
|
|
|
if has_ped_been_harmed(ped_struct[k].ped, ped_struct[k].health)
|
|
return true
|
|
endif
|
|
|
|
endfor
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
func bool has_player_antagonised_ped(ped_index &mission_ped, float distance, bool distance_check_on = true)
|
|
|
|
if not is_ped_injured(mission_ped)
|
|
|
|
if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(mission_ped)) < distance
|
|
//if has_char_spotted_char(this_ped, player_char_id())
|
|
if CAN_PED_SEE_HATED_PED(mission_ped, PLAYER_PED_ID())
|
|
IF IS_ped_ARMED(PLAYER_ped_ID(), WF_INCLUDE_MELEE|WF_INCLUDE_PROJECTILE|WF_INCLUDE_GUN)
|
|
|
|
if IS_PLAYER_TARGETTING_ENTITY(player_id(), mission_ped)
|
|
return TRUE
|
|
endif
|
|
|
|
if is_player_free_aiming_at_entity(player_id(), mission_ped)
|
|
return TRUE
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if is_ped_shooting(player_ped_id())
|
|
return true
|
|
endif
|
|
|
|
endif
|
|
|
|
if is_bullet_in_area(get_entity_coords(mission_ped), 4.0)
|
|
return true
|
|
endif
|
|
|
|
if distance_check_on
|
|
if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(mission_ped)) < 1.5
|
|
return true
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
|
|
return FALSE
|
|
endfunc
|
|
|
|
func bool is_player_targeting_ped(ped_index &mission_ped)
|
|
|
|
if not is_ped_injured(mission_ped)
|
|
if is_player_targetting_entity(player_id(), mission_ped)
|
|
return true
|
|
endif
|
|
endif
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
func bool is_player_targeting_any_peds(ped_structure &mission_ped_array[])
|
|
|
|
int k = 0
|
|
|
|
for k = 0 to count_of(mission_ped_array) - 1
|
|
if is_player_targeting_ped(mission_ped_array[k].ped)
|
|
return true
|
|
endif
|
|
endfor
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
|
|
func bool has_vehicle_been_harmed(vehicle_index &mission_vehicle, int &original_car_health)
|
|
|
|
int vehicle_health
|
|
|
|
if does_entity_exist(mission_vehicle)
|
|
if is_vehicle_driveable(mission_vehicle)
|
|
|
|
vehicle_health = get_entity_health(mission_vehicle)
|
|
|
|
if get_vehicle_petrol_tank_health(mission_vehicle) < original_car_health
|
|
or get_vehicle_engine_health(mission_vehicle) < original_car_health
|
|
or has_entity_been_damaged_by_entity(mission_vehicle, player_ped_id())
|
|
or vehicle_health < original_car_health
|
|
|
|
return true
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
return true
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
func bool has_vehicles_been_harmed(vehicle_struct &veh_struct[])
|
|
|
|
int k = 0
|
|
|
|
for k = 0 to (count_of(veh_struct) - 1)
|
|
|
|
if has_vehicle_been_harmed(veh_struct[k].veh, veh_struct[k].health)
|
|
return true
|
|
endif
|
|
|
|
endfor
|
|
|
|
return false
|
|
endfunc
|
|
|
|
func bool is_ped_at_coords(ped_index &mission_ped, vector pos, vector locate_size)
|
|
|
|
if not is_ped_injured(mission_ped)
|
|
if is_entity_at_coord(mission_ped, pos, locate_size)
|
|
return true
|
|
endif
|
|
endif
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
func quaternion build_quaternion_from_euler_angles(float fpitch, float froll, float fheading)
|
|
|
|
quaternion quat
|
|
|
|
float fltpitch2
|
|
float fltyaw2
|
|
float fltroll2
|
|
|
|
fltpitch2 = fpitch * 0.5
|
|
fltyaw2 = froll * 0.5
|
|
fltroll2 = fheading * 0.5
|
|
|
|
float cosy2 = cos(fltyaw2)
|
|
float siny2 = sin(fltyaw2)
|
|
float cosp2 = cos(fltpitch2)
|
|
float sinp2 = sin(fltpitch2)
|
|
float cosr2 = cos(fltroll2)
|
|
float sinr2 = sin(fltroll2)
|
|
|
|
quat.x = cosr2 * sinp2 * cosy2 + sinr2 * cosp2 * siny2
|
|
quat.y = cosr2 * cosp2 * siny2 - sinr2 * sinp2 * cosy2
|
|
quat.y *= -1.0
|
|
quat.z = sinr2 * cosp2 * cosy2 - cosr2 * sinp2 * siny2
|
|
quat.w = cosr2 * cosp2 * cosy2 + sinr2 * sinp2 * siny2
|
|
|
|
return quat
|
|
|
|
endfunc
|
|
|
|
func bool are_vectors_alomost_equal(vector vector_a, vector vector_b, vector unit_vector_x_multiplier)
|
|
|
|
//vec b is the target vector
|
|
//vec a is the current positon of the object
|
|
//unit_vector_x_multiplier is the unitvector * frame time * multiplier
|
|
|
|
vector vector_ba
|
|
vector future_vector
|
|
|
|
vector_ba = vector_b - vector_a
|
|
|
|
if (vmag(vector_ba) < 0.2)
|
|
return true
|
|
endif
|
|
|
|
future_vector = (vector_b - (vector_a + unit_vector_x_multiplier))
|
|
if (vmag(future_vector) > vmag(vector_ba))
|
|
return true
|
|
endif
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
func bool is_ped_in_front_of_ped(ped_index mission_ped_0, ped_index mission_ped_1)
|
|
|
|
if does_entity_exist(mission_ped_0)
|
|
if does_entity_exist(mission_ped_1)
|
|
if not is_ped_injured(mission_ped_0)
|
|
if not is_ped_injured(mission_ped_1)
|
|
|
|
vector pos_a
|
|
vector pos_b
|
|
vector vec_ba
|
|
|
|
vector ped_1_offset
|
|
vector ped_1_unit_vector
|
|
|
|
get_entity_coords(mission_ped_0, pos_a.x, pos_a.y, pos_a.z)
|
|
|
|
get_entity_coords(mission_ped_1, pos_b.x, pos_b.y, pos_b.z)
|
|
|
|
vec_ba = pos_b - pos_a
|
|
|
|
get_offset_from_entity_in_world_coords(mission_ped_1, 0.0, 0.5, 0.0, ped_1_offset.x, ped_1_offset.y, ped_1_offset.z)
|
|
ped_1_unit_vector = ped_1_offset - pos_b
|
|
|
|
if dot_product(vec_ba, ped_1_unit_vector) < 0.0
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
printstring("infront")
|
|
printnl()
|
|
#endif
|
|
|
|
return (true)
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
printstring("behind")
|
|
printnl()
|
|
#endif
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
func bool is_vehicle_stuck_every_check(vehicle_index &vehicle)
|
|
|
|
if does_entity_exist(vehicle)
|
|
|
|
if is_vehicle_driveable(vehicle)
|
|
|
|
if is_vehicle_stuck_timer_up(vehicle, veh_stuck_on_roof, roof_time)
|
|
or is_vehicle_stuck_timer_up(vehicle, veh_stuck_jammed, jammed_time)
|
|
or is_vehicle_stuck_timer_up(vehicle, veh_stuck_hung_up, hung_up_time)
|
|
or is_vehicle_stuck_timer_up(vehicle, veh_stuck_on_side, side_time)
|
|
|
|
return true
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
return false
|
|
endfunc
|
|
|
|
|
|
proc repostion_players_last_vehicle(vehicle_index &mission_veh, vector area_pos_check, vector area_dimensions, vector veh_pos, float veh_heading)
|
|
|
|
mission_veh = get_players_last_vehicle()
|
|
|
|
if does_entity_exist(mission_veh)
|
|
if is_vehicle_driveable(mission_veh)
|
|
if not is_big_vehicle(mission_veh)
|
|
if not (get_entity_model(mission_veh) = taxi)
|
|
if is_entity_at_coord(mission_veh, area_pos_check, area_dimensions)
|
|
|
|
if not is_entity_a_mission_entity(mission_veh)
|
|
set_entity_as_mission_entity(mission_veh)
|
|
endif
|
|
|
|
if not is_vehicle_in_players_garage(mission_veh, get_current_player_ped_enum(), false)
|
|
|
|
clear_area(veh_pos, 10.0, true)
|
|
set_entity_coords(mission_veh, veh_pos)
|
|
set_entity_heading(mission_veh, veh_heading)
|
|
set_vehicle_on_ground_properly(mission_veh)
|
|
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
endproc
|
|
|
|
func bool is_ped_inside_interior(ped_index mission_ped, vector interior_pos)
|
|
|
|
interior_instance_index interior
|
|
interior_instance_index mission_ped_interior
|
|
|
|
interior = get_interior_at_coords(interior_pos)
|
|
mission_ped_interior = get_interior_from_entity(mission_ped)
|
|
|
|
if not (mission_ped_interior = null)
|
|
if (mission_ped_interior = interior)
|
|
return true
|
|
endif
|
|
endif
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
func bool is_ped_in_specific_room(ped_index mission_ped, vector interior_pos, string room_name, string interior_name)
|
|
|
|
interior_instance_index interior
|
|
interior_instance_index ped_current_interior
|
|
|
|
int ped_current_room_hash_key
|
|
int room_hash_key
|
|
|
|
if not is_ped_injured(mission_ped)
|
|
|
|
interior = get_interior_at_coords_with_type(interior_pos, interior_name)
|
|
ped_current_interior = GET_INTERIOR_FROM_ENTITY(mission_ped)
|
|
|
|
if not (interior = null)
|
|
|
|
if (interior = ped_current_interior)
|
|
|
|
ped_current_room_hash_key = GET_KEY_FOR_ENTITY_IN_ROOM(mission_ped)
|
|
room_hash_key = get_hash_key(room_name)
|
|
|
|
if (ped_current_room_hash_key != 0)
|
|
|
|
if ped_current_room_hash_key = room_hash_key
|
|
return true
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
/// PURPOSE:
|
|
/// Sorts the triggered label array such that all the empty elements are at the end.
|
|
PROC REMOVE_LABEL_ARRAY_SPACES()
|
|
INT k = 0
|
|
REPEAT (COUNT_OF(i_triggered_text_hashes) - 1) k
|
|
IF i_triggered_text_hashes[k] = 0
|
|
IF i_triggered_text_hashes[k+1] != 0
|
|
i_triggered_text_hashes[k] = i_triggered_text_hashes[k+1]
|
|
i_triggered_text_hashes[k+1] = 0
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Finds the array index of a particular triggered label, or -1 if the label hasn't been added.
|
|
FUNC INT GET_LABEL_INDEX(INT i_label_hash)
|
|
INT k = 0
|
|
REPEAT COUNT_OF(i_triggered_text_hashes) k
|
|
IF i_triggered_text_hashes[k] = 0 //We've reached the end of the filled section of the array, no need to continue.
|
|
RETURN -1
|
|
ELIF i_triggered_text_hashes[k] = i_label_hash
|
|
RETURN k
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
RETURN -1
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns TRUE if the given label has been triggered.
|
|
FUNC BOOL HAS_LABEL_BEEN_TRIGGERED(STRING str_label)
|
|
RETURN (GET_LABEL_INDEX(GET_HASH_KEY(str_label)) != -1)
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Adds/removes a text label to/from the list of labels that have been triggered.
|
|
PROC SET_LABEL_AS_TRIGGERED(STRING str_label, BOOL b_trigger)
|
|
|
|
INT i_hash = GET_HASH_KEY(str_label)
|
|
INT k = 0
|
|
|
|
IF b_trigger
|
|
BOOL b_added = FALSE
|
|
|
|
WHILE NOT b_added AND k < COUNT_OF(i_triggered_text_hashes)
|
|
|
|
IF i_triggered_text_hashes[k] = i_hash //The label is already in the array, don't add it again.
|
|
b_added = TRUE
|
|
ELIF i_triggered_text_hashes[k] = 0
|
|
i_triggered_text_hashes[k] = i_hash
|
|
b_added = TRUE
|
|
ENDIF
|
|
|
|
k++
|
|
ENDWHILE
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF NOT b_added
|
|
SCRIPT_ASSERT("SET_LABEL_AS_TRIGGERED: Failed to add label, array is full.")
|
|
ENDIF
|
|
#ENDIF
|
|
ELSE
|
|
|
|
INT i_index = GET_LABEL_INDEX(i_hash)
|
|
IF i_index != -1
|
|
i_triggered_text_hashes[i_index] = 0
|
|
REMOVE_LABEL_ARRAY_SPACES()
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC CLEAR_TRIGGERED_LABELS()
|
|
INT k = 0
|
|
REPEAT COUNT_OF(i_triggered_text_hashes) k
|
|
i_triggered_text_hashes[k] = 0
|
|
ENDREPEAT
|
|
ENDPROC
|
|
|
|
|
|
proc setup_ped_proofs(ped_index &this_ped)
|
|
|
|
if does_entity_exist(this_ped)
|
|
if not is_ped_injured(this_ped)
|
|
set_entity_proofs(this_ped, true, true, true, true, true)
|
|
endif
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc deactivate_ped_proofs(ped_index &this_ped)
|
|
|
|
int ped_health
|
|
|
|
if does_entity_exist(this_ped)
|
|
if not is_ped_injured(this_ped)
|
|
|
|
ped_health = get_entity_health(this_ped)
|
|
|
|
if ped_health < 110
|
|
set_entity_health(this_ped, 120)
|
|
else
|
|
set_entity_health(this_ped, ped_health)
|
|
endif
|
|
|
|
set_entity_proofs(this_ped, false, false, false, false, false)
|
|
endif
|
|
endif
|
|
|
|
endproc
|
|
|
|
|
|
proc setup_vehicle_proofs(vehicle_index &this_vehicle)
|
|
|
|
if does_entity_exist(this_vehicle)
|
|
if is_vehicle_driveable(this_vehicle)
|
|
|
|
if get_entity_health(this_vehicle) < 500
|
|
set_entity_health(this_vehicle, 500)
|
|
endif
|
|
|
|
if get_vehicle_engine_health(this_vehicle) < 500
|
|
set_vehicle_engine_health(this_vehicle, 500.00)
|
|
endif
|
|
|
|
if get_vehicle_petrol_tank_health(this_vehicle) < 500.00
|
|
set_vehicle_petrol_tank_health(this_vehicle, 500.00)
|
|
endif
|
|
|
|
set_entity_proofs(this_vehicle, true, true, true, true, true)
|
|
endif
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc restore_vehicle_health(vehicle_index &mission_vehicle)
|
|
|
|
if does_entity_exist(mission_vehicle)
|
|
if is_vehicle_driveable(mission_vehicle)
|
|
|
|
if get_entity_health(mission_vehicle) < 500
|
|
set_entity_health(mission_vehicle, 500)
|
|
endif
|
|
|
|
if get_vehicle_engine_health(mission_vehicle) < 500
|
|
set_vehicle_engine_health(mission_vehicle, 500.00)
|
|
endif
|
|
|
|
if get_vehicle_petrol_tank_health(mission_vehicle) < 500.00
|
|
set_vehicle_petrol_tank_health(mission_vehicle, 500.00)
|
|
endif
|
|
|
|
endif
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc deactivate_vehicle_proofs(vehicle_index &this_vehicle)
|
|
|
|
if does_entity_exist(this_vehicle)
|
|
if is_vehicle_driveable(this_vehicle)
|
|
set_entity_proofs(this_vehicle, false, false, false, false, false)
|
|
restore_vehicle_health(this_vehicle)
|
|
endif
|
|
endif
|
|
|
|
endproc
|
|
|
|
PROC EQUIP_BEST_PLAYER_WEAPON(ped_index mission_ped, BOOL bForceIntoHand = true)
|
|
|
|
IF NOT IS_PED_INJURED(mission_ped)
|
|
|
|
WEAPON_TYPE bestWeapon = GET_BEST_PED_WEAPON(mission_ped)
|
|
|
|
IF bestWeapon != WEAPONTYPE_UNARMED
|
|
SET_CURRENT_PED_WEAPON(mission_ped, bestWeapon, bForceIntoHand)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
proc setup_player_fail_weapon(ped_index mission_ped, weapon_type backup_weapon, int num_of_bullets)
|
|
|
|
weapon_type players_weapon
|
|
|
|
players_weapon = Get_Fail_Weapon(enum_to_int(get_player_ped_enum(mission_ped)))
|
|
|
|
if players_weapon != WEAPONTYPE_INVALID
|
|
and players_weapon != WEAPONTYPE_UNARMED
|
|
|
|
if get_ammo_in_ped_weapon(mission_ped, players_weapon) < 10
|
|
set_ped_ammo(mission_ped, players_weapon, 10)
|
|
endif
|
|
|
|
set_current_ped_weapon(mission_ped, players_weapon, true)
|
|
|
|
else
|
|
|
|
if not HAS_PED_GOT_WEAPON(mission_ped, backup_weapon)
|
|
give_weapon_to_ped(mission_ped, backup_weapon, num_of_bullets, true, true)
|
|
else
|
|
if get_ammo_in_ped_weapon(mission_ped, backup_weapon) < num_of_bullets
|
|
set_ped_ammo(mission_ped, backup_weapon, num_of_bullets)
|
|
set_current_ped_weapon(mission_ped, backup_weapon, true)
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc setup_weapon_for_ped(ped_index mission_ped, weapon_type ped_weapon, int num_of_bullets, bool force_weapon_into_hand = true, bool equip_weapon = true, bool equipe_best_weapon = true)
|
|
|
|
IF not HAS_PED_GOT_FIREARM(mission_ped, false)
|
|
|
|
give_weapon_to_ped(mission_ped, ped_weapon, num_of_bullets, force_weapon_into_hand, equip_weapon)
|
|
|
|
else
|
|
|
|
weapon_type players_weapon
|
|
|
|
if equipe_best_weapon
|
|
|
|
EQUIP_BEST_PLAYER_WEAPON(mission_ped, force_weapon_into_hand)
|
|
get_current_ped_weapon(mission_ped, players_weapon)
|
|
|
|
else
|
|
|
|
players_weapon = Get_Fail_Weapon(enum_to_int(get_player_ped_enum(mission_ped)))
|
|
|
|
if players_weapon = WEAPONTYPE_INVALID
|
|
or players_weapon = WEAPONTYPE_UNARMED
|
|
|
|
if not HAS_PED_GOT_WEAPON(mission_ped, ped_weapon)
|
|
give_weapon_to_ped(mission_ped, ped_weapon, num_of_bullets, force_weapon_into_hand, equip_weapon)
|
|
players_weapon = ped_weapon
|
|
exit
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
|
|
if players_weapon = WEAPONTYPE_GRENADELAUNCHER
|
|
or players_weapon = WEAPONTYPE_RPG
|
|
|
|
if get_ammo_in_ped_weapon(mission_ped, players_weapon) < 5
|
|
set_ped_ammo(mission_ped, players_weapon, 5)
|
|
endif
|
|
|
|
else
|
|
|
|
if get_ammo_in_ped_weapon(mission_ped, players_weapon) < num_of_bullets
|
|
set_ped_ammo(mission_ped, players_weapon, num_of_bullets)
|
|
endif
|
|
|
|
endif
|
|
|
|
set_current_ped_weapon(mission_ped, players_weapon, force_weapon_into_hand)
|
|
|
|
endif
|
|
|
|
endproc
|
|
|
|
FUNC VECTOR CONVERT_ROTATION_TO_DIRECTION_VECTOR(VECTOR vRot)
|
|
RETURN <<-SIN(vRot.z) * COS(vRot.x), COS(vRot.z) * COS(vRot.x), SIN(vRot.x)>>
|
|
ENDFUNC
|
|
|
|
func bool is_ped_within_range_of_target_heading(ped_index miss_ped, float target_heading, float heading_range)
|
|
|
|
float heading_dif
|
|
|
|
heading_dif = (target_heading - get_entity_heading(miss_ped))
|
|
|
|
if heading_dif > 180
|
|
heading_dif -= 360
|
|
endif
|
|
if heading_dif < -180
|
|
heading_dif += 360
|
|
endif
|
|
|
|
if absf(heading_dif) <= heading_range
|
|
return true
|
|
endif
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
func bool is_ped_within_heading_range_of_entity(ped_index miss_ped, entity_index miss_entity, float heading_range)
|
|
|
|
vector vec_ba
|
|
float heading_dif
|
|
|
|
if does_entity_exist(miss_entity)
|
|
|
|
vec_ba = get_entity_coords(miss_entity, false) - get_entity_coords(miss_ped)
|
|
|
|
heading_dif = (get_heading_from_vector_2d(vec_ba.x, vec_ba.y) - get_entity_heading(miss_ped))
|
|
|
|
if heading_dif > 180
|
|
heading_dif -= 360
|
|
endif
|
|
if heading_dif < -180
|
|
heading_dif += 360
|
|
endif
|
|
|
|
if absf(heading_dif) <= heading_range
|
|
return true
|
|
endif
|
|
|
|
endif
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
func float get_relative_heading_beteween_player_and_ped(ped_index miss_ped)
|
|
|
|
vector vec_ba
|
|
float aim_heading
|
|
|
|
vec_ba = get_entity_coords(miss_ped, false) - get_entity_coords(player_ped_id())
|
|
|
|
printstring("get_heading_from_vector_2d(vec_ba.x, vec_ba.y): ")
|
|
printfloat(get_heading_from_vector_2d(vec_ba.x, vec_ba.y))
|
|
printnl()
|
|
|
|
printstring("player heading: ")
|
|
printfloat(get_entity_heading(player_ped_id()))
|
|
printnl()
|
|
|
|
//z rotation
|
|
aim_heading = (get_heading_from_vector_2d(vec_ba.x, vec_ba.y) - get_entity_heading(player_ped_id()))
|
|
|
|
|
|
printstring("heading diff: ")
|
|
printfloat(aim_heading)
|
|
printnl()
|
|
|
|
if aim_heading > 180
|
|
aim_heading -= 360
|
|
endif
|
|
if aim_heading < -180
|
|
aim_heading += 360
|
|
endif
|
|
|
|
printstring("relative heading: ")
|
|
printfloat(aim_heading)
|
|
printnl()
|
|
|
|
return aim_heading
|
|
|
|
endfunc
|
|
|
|
func bool move_door_with_new_door_system(int door_hash, bool open_door = true, float door_speed = 1.0)
|
|
|
|
float door_ratio
|
|
|
|
// if DOOR_SYSTEM_GET_IS_PHYSICS_LOADED(door_hash)
|
|
|
|
door_ratio = DOOR_SYSTEM_GET_OPEN_RATIO(door_hash)
|
|
|
|
if open_door
|
|
|
|
door_ratio += get_frame_time() * door_speed
|
|
|
|
if door_ratio >= 1.0
|
|
door_ratio = 1.0
|
|
endif
|
|
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(door_hash, door_ratio, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(door_hash, DOORSTATE_force_locked_this_frame, false, true)
|
|
|
|
if door_ratio = 1.0
|
|
return true
|
|
endif
|
|
|
|
else
|
|
|
|
door_ratio -= get_frame_time() * door_speed
|
|
|
|
if door_ratio <= 0.0
|
|
door_ratio = 0.0
|
|
endif
|
|
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(door_hash, door_ratio, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(door_hash, DOORSTATE_force_locked_this_frame, false, true)
|
|
|
|
if door_ratio = 0.0
|
|
return true
|
|
endif
|
|
|
|
endif
|
|
|
|
// endif
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
func bool move_doors_with_new_door_system(int left_door_hash, int right_door_hash, bool open_door = true, float door_speed = 1.0)
|
|
|
|
float left_door_ratio
|
|
float right_door_ratio
|
|
|
|
if DOOR_SYSTEM_GET_IS_PHYSICS_LOADED(left_door_hash)
|
|
and DOOR_SYSTEM_GET_IS_PHYSICS_LOADED(right_door_hash)
|
|
|
|
left_door_ratio = DOOR_SYSTEM_GET_OPEN_RATIO(left_door_hash)
|
|
right_door_ratio = DOOR_SYSTEM_GET_OPEN_RATIO(right_door_hash)
|
|
|
|
if open_door
|
|
|
|
left_door_ratio -= get_frame_time() * door_speed
|
|
|
|
if left_door_ratio <= -1.0
|
|
left_door_ratio = -1.0
|
|
endif
|
|
|
|
right_door_ratio += get_frame_time() * door_speed
|
|
|
|
if right_door_ratio >= 1.0
|
|
right_door_ratio = 1.0
|
|
endif
|
|
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(left_door_hash, left_door_ratio, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(left_door_hash, DOORSTATE_force_locked_this_frame, false, true)
|
|
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(right_door_hash, right_door_ratio, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(right_door_hash, DOORSTATE_force_locked_this_frame, false, true)
|
|
|
|
if (left_door_ratio = -1.0) and (right_door_ratio = 1.0)
|
|
return true
|
|
endif
|
|
|
|
else
|
|
|
|
left_door_ratio += get_frame_time() * door_speed
|
|
|
|
if left_door_ratio >= 0.0
|
|
left_door_ratio = 0.0
|
|
endif
|
|
|
|
right_door_ratio -= get_frame_time() * door_speed
|
|
|
|
if right_door_ratio <= 0.0
|
|
right_door_ratio = 0.0
|
|
endif
|
|
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(left_door_hash, left_door_ratio, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(left_door_hash, DOORSTATE_force_locked_this_frame, false, true)
|
|
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(right_door_hash, right_door_ratio, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(right_door_hash, DOORSTATE_force_locked_this_frame, false, true)
|
|
|
|
if (left_door_ratio = 0.0) and (right_door_ratio = 0.0)
|
|
return true
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
proc set_players_last_vehicle_to_vehicle_gen(vector car_pos, float car_heading, bool switch_vehicle_engine_off = true)
|
|
vehicle_index players_last_car
|
|
|
|
players_last_car = GET_PLAYERS_LAST_VEHICLE()//GET_MISSION_START_VEHICLE_INDEX()
|
|
|
|
if does_entity_exist(players_last_car)
|
|
if is_vehicle_driveable(players_last_car)
|
|
|
|
if switch_vehicle_engine_off
|
|
set_vehicle_engine_on(players_last_car, true, true)
|
|
endif
|
|
|
|
SET_MISSION_VEHICLE_GEN_VEHICLE(players_last_car, car_pos, car_heading)
|
|
|
|
endif
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc remove_player_ped_props(ped_index mission_ped, bool head_prop = true, bool eyes_prop = true, bool ears_prop = true)
|
|
|
|
if head_prop
|
|
set_ped_comp_item_current_sp(mission_ped, COMP_TYPE_PROPS, PROPS_HEAD_NONE, false)
|
|
endif
|
|
|
|
if eyes_prop
|
|
set_ped_comp_item_current_sp(mission_ped, COMP_TYPE_PROPS, PROPS_EYES_NONE, false)
|
|
endif
|
|
|
|
if ears_prop
|
|
set_ped_comp_item_current_sp(mission_ped, COMP_TYPE_PROPS, PROPS_EARS_NONE, false)
|
|
endif
|
|
|
|
endproc
|
|
|
|
//****************************************end of lawrence sdk****************************************
|
|
|
|
|
|
//**************************************widgets****************************************
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
bool widget_reset_cutscene = false
|
|
bool widget_vehicle_colour_active = false
|
|
bool widget_entity_camera_active = false
|
|
bool widget_play_ptfx = false
|
|
bool widget_use_shallow_dof_mode = false
|
|
bool widget_apply_dof_change = false
|
|
bool widget_activate_ptfx = false
|
|
|
|
float widget_temp_width
|
|
float widget_temp_height
|
|
float widget_temp_depth
|
|
float widget_angled_length
|
|
float widget_anim_speed = 1.0
|
|
float widget_heading
|
|
float widget_pitch
|
|
float widget_fov
|
|
float widget_near_dof = 0.1
|
|
float widget_far_dof = 150.0
|
|
float widget_dof_strength = 1.0
|
|
|
|
vector widget_offset_bl
|
|
vector widget_offset_br
|
|
vector widget_bl
|
|
vector widget_br
|
|
vector widget_object_pos
|
|
vector widget_object_rot
|
|
vector widget_object_pos_2
|
|
vector widget_object_rot_2
|
|
vector widget_cam_attach_offset
|
|
vector widget_cam_point_offset
|
|
vector widget_ptfx_pos
|
|
vector widget_ptfx_rot
|
|
|
|
camera_index widget_camera
|
|
|
|
|
|
|
|
//mission specific widget variables
|
|
int widget_colour_0
|
|
int widget_colour_1
|
|
|
|
int mop_bone
|
|
|
|
|
|
proc locate_widget()
|
|
|
|
vector widget_player_pos
|
|
|
|
widget_player_pos = get_entity_coords(player_ped_id())
|
|
is_entity_at_coord(player_ped_id(), widget_player_pos, <<widget_temp_width, widget_temp_depth, widget_temp_height>>, false, true)
|
|
|
|
endproc
|
|
|
|
proc angled_area_locate_widget(entity_index mission_entity)
|
|
|
|
if does_entity_exist(mission_entity)
|
|
|
|
widget_bl = get_offset_from_entity_in_world_coords(mission_entity, widget_offset_bl)
|
|
widget_br = get_offset_from_entity_in_world_coords(mission_entity, widget_offset_br)
|
|
|
|
is_entity_in_angled_area(mission_entity, widget_bl, widget_br, widget_angled_length, false, true)
|
|
|
|
if widget_offset_br.z > 0.0
|
|
set_entity_heading(mission_entity, widget_heading)
|
|
endif
|
|
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc object_angled_area_widget(object_index &mission_object)
|
|
|
|
if does_entity_exist(mission_object)
|
|
|
|
widget_bl = get_offset_from_entity_in_world_coords(player_ped_id(), widget_offset_bl)
|
|
widget_br = get_offset_from_entity_in_world_coords(player_ped_id(), widget_offset_br)
|
|
|
|
is_entity_in_angled_area(mission_object, widget_bl, widget_br, widget_angled_length, false, true)
|
|
|
|
if widget_offset_br.z > 0.0
|
|
set_entity_heading(player_ped_id(), widget_heading)
|
|
endif
|
|
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc attach_object_to_ped_and_move(ped_index mission_ped, object_index &mission_object)
|
|
|
|
if does_entity_exist(mission_ped)
|
|
if not is_ped_injured(mission_ped)
|
|
if does_entity_exist(mission_object)
|
|
attach_entity_to_entity(mission_object, mission_ped, bonetag_r_hand, widget_object_pos, widget_object_rot)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc set_the_ped_anim_speed(ped_index mission_ped, string dict_name, string anim_name, float anim_speed)
|
|
|
|
if does_entity_exist(mission_ped)
|
|
if not is_ped_injured(mission_ped)
|
|
if is_entity_playing_anim(mission_ped, dict_name, anim_name)
|
|
set_entity_anim_speed(mission_ped, dict_name, anim_name, anim_speed)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc create_and_move_object(object_index &mission_object)
|
|
|
|
if does_entity_exist(mission_object)
|
|
set_entity_coords_no_offset(mission_object, widget_object_pos)
|
|
set_entity_rotation(mission_object, widget_object_rot)
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc create_and_move_object_2(object_index &mission_object)
|
|
|
|
if does_entity_exist(mission_object)
|
|
set_entity_coords_no_offset(mission_object, widget_object_pos_2)
|
|
set_entity_rotation(mission_object, widget_object_rot_2)
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc attach_object_to_object_and_move(object_index &parent_object, object_index &mission_object)
|
|
|
|
if does_entity_exist(parent_object)
|
|
if does_entity_exist(mission_object)
|
|
attach_entity_to_entity(mission_object, parent_object, 0, widget_object_pos_2, widget_object_rot_2)
|
|
endif
|
|
endif
|
|
|
|
endproc
|
|
|
|
|
|
proc vehicle_colour_widget()
|
|
|
|
vehicle_index mission_car
|
|
|
|
get_current_player_vehicle(mission_car)
|
|
|
|
if widget_vehicle_colour_active
|
|
if does_entity_exist(mission_car)
|
|
if is_vehicle_driveable(mission_car)
|
|
set_vehicle_colours(mission_car, widget_colour_0, widget_colour_1)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc camera_attached_to_entity_widget(entity_index mission_entity)
|
|
|
|
if widget_entity_camera_active
|
|
if not does_cam_exist(widget_camera)
|
|
|
|
widget_camera = create_cam("default_scripted_camera", false)
|
|
attach_cam_to_entity(widget_camera, mission_entity, widget_cam_attach_offset)
|
|
point_cam_at_entity(widget_camera, mission_entity, widget_cam_point_offset)
|
|
|
|
set_cam_active(widget_camera, true)
|
|
|
|
render_script_cams(true, false)
|
|
|
|
else
|
|
|
|
attach_cam_to_entity(widget_camera, mission_entity, widget_cam_attach_offset)
|
|
|
|
point_cam_at_entity(widget_camera, mission_entity, widget_cam_point_offset)
|
|
|
|
set_cam_fov(widget_camera, widget_fov)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc play_ptfx_on_truck_widget()
|
|
|
|
// if widget_play_ptfx
|
|
//
|
|
// clear_player_wanted_level(player_id())
|
|
//
|
|
// if does_entity_exist(players_truck.veh)
|
|
//
|
|
// if is_vehicle_driveable(players_truck.veh)
|
|
//
|
|
// START_PARTICLE_FX_NON_LOOPED_ON_ENTITY("scr_fbi1_paper_landing", players_truck.veh, <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
//
|
|
// widget_play_ptfx = false
|
|
//
|
|
// endif
|
|
//
|
|
// endif
|
|
//
|
|
// endif
|
|
|
|
endproc
|
|
|
|
proc relative_pitch_and_heading_widget()
|
|
|
|
SET_GAMEPLAY_CAM_RELATIVE_HEADING(widget_heading)
|
|
SET_GAMEPLAY_CAM_RELATIVE_PITCH(widget_pitch)
|
|
|
|
endproc
|
|
|
|
proc pfx_widget()
|
|
|
|
if widget_activate_ptfx
|
|
|
|
START_PARTICLE_FX_NON_LOOPED_AT_COORD("scr_fbi_autopsy_blood", widget_ptfx_pos, widget_ptfx_rot)
|
|
|
|
widget_activate_ptfx = false
|
|
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc load_lk_widgets()
|
|
|
|
fbi1_widget_group = start_widget_group("fbi1")
|
|
|
|
start_widget_group("locate widget")
|
|
add_widget_float_slider("width", widget_temp_width, -500.0, 500.0, 0.1)
|
|
add_widget_float_slider("depth", widget_temp_depth, -500.0, 500.0, 0.1)
|
|
add_widget_float_slider("height", widget_temp_height, -500.0, 500.0, 0.1)
|
|
stop_widget_group()
|
|
|
|
start_widget_group("angled_area")
|
|
add_widget_float_slider("left offset x", widget_offset_bl.x, -5000.0, 5000.0, 0.1)
|
|
add_widget_float_slider("left offset y", widget_offset_bl.y, -5000.0, 5000.0, 0.1)
|
|
add_widget_float_slider("left offset z", widget_offset_bl.z, -5000.0, 5000.0, 0.1)
|
|
|
|
add_widget_float_slider("right offset x", widget_offset_br.x, -5000.0, 5000.0, 0.1)
|
|
add_widget_float_slider("right offset y", widget_offset_br.y, -5000.0, 5000.0, 0.1)
|
|
add_widget_float_slider("right offset z", widget_offset_br.z, -5000.0, 5000.0, 0.1)
|
|
|
|
add_widget_float_slider("angled area length", widget_angled_length, -5000.0, 5000.0, 0.1)
|
|
|
|
add_widget_float_slider("heading", widget_heading, -5000.0, 5000.0, 0.1)
|
|
|
|
add_widget_float_read_only("widget_bl x", widget_bl.x)
|
|
add_widget_float_read_only("widget_bl y", widget_bl.y)
|
|
add_widget_float_read_only("widget_bl z", widget_bl.z)
|
|
|
|
add_widget_float_read_only("widget_br x", widget_br.x)
|
|
add_widget_float_read_only("widget_br y", widget_br.y)
|
|
add_widget_float_read_only("widget_br z", widget_br.z)
|
|
|
|
stop_widget_group()
|
|
|
|
start_widget_group("object attach to ped widget")
|
|
add_widget_float_slider("pos offset x", widget_object_pos.x, -3000.0, 3000.0, 0.01)
|
|
add_widget_float_slider("pos offset y", widget_object_pos.y, -3000.0, 3000.0, 0.01)
|
|
add_widget_float_slider("pos offset z", widget_object_pos.z, -3000.0, 3000.0, 0.01)
|
|
|
|
add_widget_float_slider("rot offset x", widget_object_rot.x, -3000.0, 3000.0, 0.01)
|
|
add_widget_float_slider("rot offset y", widget_object_rot.y, -3000.0, 3000.0, 0.01)
|
|
add_widget_float_slider("rot offset z", widget_object_rot.z, -3000.0, 3000.0, 0.01)
|
|
stop_widget_group()
|
|
|
|
start_widget_group("anim speed widget")
|
|
add_widget_float_slider("anim speed", widget_anim_speed, 0.1, 10.0, 0.01)
|
|
stop_widget_group()
|
|
|
|
start_widget_group("reset cutscene widget")
|
|
add_widget_bool("reset cutscene", widget_reset_cutscene)
|
|
stop_widget_group()
|
|
|
|
|
|
start_widget_group("object pos and rot widget")
|
|
add_widget_float_slider("pos x", widget_object_pos.x, -3000.0, 3000.0, 0.01)
|
|
add_widget_float_slider("pos y", widget_object_pos.y, -3000.0, 3000.0, 0.01)
|
|
add_widget_float_slider("pos z", widget_object_pos.z, -3000.0, 3000.0, 0.01)
|
|
|
|
add_widget_float_slider("rot x", widget_object_rot.x, -3000.0, 3000.0, 0.01)
|
|
add_widget_float_slider("rot y", widget_object_rot.y, -3000.0, 3000.0, 0.01)
|
|
add_widget_float_slider("rot z", widget_object_rot.z, -3000.0, 3000.0, 0.01)
|
|
stop_widget_group()
|
|
|
|
start_widget_group("object pos and rot widget 2")
|
|
add_widget_float_slider("pos x", widget_object_pos_2.x, -3000.0, 3000.0, 0.01)
|
|
add_widget_float_slider("pos y", widget_object_pos_2.y, -3000.0, 3000.0, 0.01)
|
|
add_widget_float_slider("pos z", widget_object_pos_2.z, -3000.0, 3000.0, 0.01)
|
|
|
|
add_widget_float_slider("rot x", widget_object_rot_2.x, -3000.0, 3000.0, 0.01)
|
|
add_widget_float_slider("rot y", widget_object_rot_2.y, -3000.0, 3000.0, 0.01)
|
|
add_widget_float_slider("rot z", widget_object_rot_2.z, -3000.0, 3000.0, 0.01)
|
|
stop_widget_group()
|
|
|
|
start_widget_group("attach object to object pos and rot widget")
|
|
add_widget_float_slider("pos x", widget_object_pos_2.x, -3000.0, 3000.0, 0.01)
|
|
add_widget_float_slider("pos y", widget_object_pos_2.y, -3000.0, 3000.0, 0.01)
|
|
add_widget_float_slider("pos z", widget_object_pos_2.z, -3000.0, 3000.0, 0.01)
|
|
|
|
add_widget_float_slider("rot x", widget_object_rot_2.x, -3000.0, 3000.0, 0.01)
|
|
add_widget_float_slider("rot y", widget_object_rot_2.y, -3000.0, 3000.0, 0.01)
|
|
add_widget_float_slider("rot z", widget_object_rot_2.z, -3000.0, 3000.0, 0.01)
|
|
stop_widget_group()
|
|
|
|
start_widget_group("mop bone widget")
|
|
add_widget_int_slider("mop bone pos", mop_bone, 0, 30, 1)
|
|
stop_widget_group()
|
|
|
|
start_widget_group("vehicle colour")
|
|
add_widget_bool("activate car colour", widget_vehicle_colour_active)
|
|
|
|
add_widget_int_slider("colour 0:", widget_colour_0, -50, 550, 1)
|
|
add_widget_int_slider("colour 1", widget_colour_1, -50, 550, 1)
|
|
stop_widget_group()
|
|
|
|
start_widget_group("camaera attached to entity widget")
|
|
add_widget_bool("create camera", widget_entity_camera_active)
|
|
|
|
add_widget_float_slider("pos x", widget_cam_attach_offset.x, -3000.0, 3000.0, 0.01)
|
|
add_widget_float_slider("pos y", widget_cam_attach_offset.y, -3000.0, 3000.0, 0.01)
|
|
add_widget_float_slider("pos z", widget_cam_attach_offset.z, -3000.0, 3000.0, 0.01)
|
|
|
|
add_widget_float_slider("point offset x", widget_cam_point_offset.x, -3000.0, 3000.0, 0.1)
|
|
add_widget_float_slider("point offset y", widget_cam_point_offset.y, -3000.0, 3000.0, 0.1)
|
|
add_widget_float_slider("point offset z", widget_cam_point_offset.z, -3000.0, 3000.0, 0.1)
|
|
|
|
add_widget_float_slider("fov", widget_fov, -3000.0, 3000.0, 0.1)
|
|
stop_widget_group()
|
|
|
|
start_widget_group("trigger truck ptfx")
|
|
add_widget_bool("Start ptfx", widget_play_ptfx)
|
|
stop_widget_group()
|
|
|
|
start_widget_group("mission flag status")
|
|
ADD_WIDGET_int_read_only("fbi1_master_controller_status", fbi1_master_controller_status)
|
|
stop_widget_group()
|
|
|
|
start_widget_group("camaera DOF")
|
|
|
|
add_widget_float_slider("near DOF", widget_near_dof, -3000.0, 3000.0, 1.0)
|
|
add_widget_float_slider("far DOF", widget_far_dof, -3000.0, 3000.0, 1.0)
|
|
add_widget_float_slider("SET_CAM_DOF_STRENGTH", WIDGET_dof_strength, -3000.0, 3000.0, 1.0)
|
|
add_widget_bool("SET_CAM_USE_SHALLOW_DOF_MODE", widget_use_shallow_dof_mode)
|
|
add_widget_bool("apply dof to camera", widget_apply_dof_change)
|
|
|
|
stop_widget_group()
|
|
|
|
start_widget_group("relative_pitch_and_heading_widget")
|
|
|
|
add_widget_float_slider("widget_heading", widget_heading, -3000.0, 3000.0, 0.01)
|
|
add_widget_float_slider("widget_pitch", widget_pitch, -3000.0, 3000.0, 0.01)
|
|
|
|
stop_widget_group()
|
|
|
|
start_WIDGET_GROUP("activate ptfx")
|
|
add_widget_bool("toggle ptfx", widget_activate_ptfx)
|
|
add_widget_float_slider("widget_ptfx_pos x", widget_ptfx_pos.x, -4000.0, 4000.0, 0.1)
|
|
add_widget_float_slider("widget_ptfx_pos y", widget_ptfx_pos.y, -4000.0, 4000.0, 0.1)
|
|
add_widget_float_slider("widget_ptfx_pos z", widget_ptfx_pos.z, -4000.0, 4000.0, 0.1)
|
|
|
|
add_widget_float_slider("widget_ptfx_rot x", widget_ptfx_rot.x, -4000.0, 4000.0, 0.1)
|
|
add_widget_float_slider("widget_ptfx_rot y", widget_ptfx_rot.y, -4000.0, 4000.0, 0.1)
|
|
add_widget_float_slider("widget_ptfx_rot z", widget_ptfx_rot.z, -4000.0, 4000.0, 0.1)
|
|
stop_widget_group()
|
|
|
|
stop_widget_group()
|
|
|
|
endproc
|
|
|
|
#endif
|
|
|
|
|
|
//*************************************end widget******************************************
|
|
|
|
proc reset_glass_window()
|
|
|
|
if window.been_created
|
|
|
|
set_object_as_no_longer_needed(window.obj)
|
|
|
|
remove_model_swap(<<236.03, -1357.49, 40.45>>, 1.0, V_ILev_Cor_windowSolid, V_ILev_Cor_windowSmash)
|
|
|
|
window.been_created = false
|
|
//script_assert("window swapped")
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc remove_all_mission_doors()
|
|
|
|
int i
|
|
|
|
for i = 0 to count_of(fbi_door) - 1
|
|
if is_door_registered_with_system(fbi_door[i])
|
|
REMOVE_DOOR_FROM_SYSTEM(fbi_door[i])
|
|
endif
|
|
endfor
|
|
|
|
endproc
|
|
|
|
proc mission_cleanup()
|
|
|
|
if IS_CUTSCENE_PLAYING()
|
|
STOP_CUTSCENE()
|
|
else
|
|
REMOVE_CUTSCENE()
|
|
endif
|
|
|
|
REMOVE_CUTSCENE()
|
|
|
|
SET_PLAYER_PED_DATA_IN_CUTSCENES()
|
|
|
|
kill_any_conversation()
|
|
|
|
set_building_state(BUILDINGNAME_IPL_CORONER_INTERIOR, BUILDINGSTATE_NORMAL, true)
|
|
|
|
//BLOCK_PLAYER_PED_WEAPON_STORE(CHAR_MICHAEL, FALSE)
|
|
//RESTORE_PLAYER_PED_WEAPONS(player_ped_id()) //gives the player back all their weapons
|
|
if not player_weapons_restored
|
|
RESTORE_PLAYER_PED_WEAPONS_IN_SNAPSHOT(player_ped_id(), false)
|
|
endif
|
|
|
|
DISABLE_CHEAT(CHEAT_TYPE_GIVE_WEAPONS, false)
|
|
|
|
if is_player_playing(player_id())
|
|
|
|
SET_PED_STEALTH_MOVEMENT(player_ped_id(), false)
|
|
SET_PED_USING_ACTION_MODE(player_ped_id(), false)
|
|
SET_PED_RESET_FLAG(PLAYER_PED_ID(), PRF_DisablePlayerAutoVaulting, false)
|
|
|
|
set_player_control(player_id(), true)
|
|
|
|
if not is_entity_attached(player_ped_id())
|
|
freeze_entity_position(player_ped_id(), false)
|
|
endif
|
|
endif
|
|
|
|
stop_alarm("FBI_01_MORGUE_ALARMS", false)
|
|
|
|
trigger_music_event("FBI1_DEAD")
|
|
|
|
stop_audio_scenes()
|
|
|
|
SET_AUDIO_SCRIPT_CLEANUP_TIME(5000)
|
|
|
|
disable_cellphone(false)
|
|
|
|
SET_INSTANCE_PRIORITY_HINT(INSTANCE_HINT_NONE)
|
|
|
|
set_max_wanted_level(6)
|
|
set_create_random_cops(true)
|
|
set_wanted_level_multiplier(1.0)
|
|
sET_WANTED_LEVEL_DIFFICULTY(player_id(), 0)
|
|
|
|
RELEASE_SUPPRESSED_EMERGENCY_CALLS()
|
|
|
|
SET_SCRIPT_GFX_DRAW_ORDER(gfx_order_after_hud)
|
|
SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(false)
|
|
|
|
display_hud(true)
|
|
display_radar(true)
|
|
set_widescreen_borders(false, 500)
|
|
|
|
remove_all_mission_doors()
|
|
|
|
reset_glass_window()
|
|
|
|
terminate_this_thread()
|
|
|
|
endproc
|
|
|
|
proc mission_passed()
|
|
|
|
mission_flow_mission_passed()
|
|
|
|
clear_player_wanted_level(player_id())
|
|
|
|
mission_cleanup()
|
|
|
|
endproc
|
|
|
|
proc mission_failed()
|
|
|
|
//reset_glass_window()
|
|
|
|
// check if we need to respawn the player in a different position,
|
|
// if so call MISSION_FLOW_SET_FAIL_WARP_LOCATION() + SET_REPLAY_DECLINED_VEHICLE_WARP_LOCATION here
|
|
|
|
DELETE_TEXT_MESSAGE_BY_LABEL_FROM_ALL_PLAYER_CHARACTERS("FBI1_WPN")
|
|
|
|
MISSION_CLEANUP() // must only take 1 frame and terminate the thread
|
|
endproc
|
|
|
|
proc initialise_mission_variables()
|
|
|
|
int i
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
menu_stage_selector[0].sTxtLabel = "Start of mission"
|
|
menu_stage_selector[1].sTxtLabel = "stealth cia guard"
|
|
menu_stage_selector[2].sTxtLabel = "start of shootout"
|
|
menu_stage_selector[3].sTxtLabel = "half way through shootout"
|
|
menu_stage_selector[4].sTxtLabel = "escape cutscene - FBI_1_MCS_2"
|
|
menu_stage_selector[5].sTxtLabel = "outside coroners"
|
|
menu_stage_selector[6].sTxtLabel = "pass mocap"
|
|
#endif
|
|
|
|
stop_mission_fail_checks = false
|
|
alarm_on = false
|
|
activate_elevator_door_system = false
|
|
dialogue_paused = false
|
|
dave_norton_phone_call_finished = false
|
|
break_the_glass_window = false
|
|
operating_table_fail = false
|
|
michael_clothes_set = false
|
|
rumble_pad = false
|
|
pistol_flash_light_equiped = false
|
|
intro_mocap_shake_pad = false
|
|
zip_sound_activated = false
|
|
shootout_assets_removed = false
|
|
taxi_drop_off_set_for_pass_mocap = false
|
|
bypass_find_dead_bodies_stage = false
|
|
stop_doctor_2_speaking = false
|
|
|
|
intro_mocap_status = 0
|
|
fbi1_stealth_cutscene_status = 0
|
|
fbi1_master_controller_status = 0
|
|
fbi1_escape_cutscene_status = 0
|
|
current_line = -1
|
|
phone_call_system_status = 0
|
|
get_to_hills_status = 0
|
|
dialogue_status = 0
|
|
franklin_ai_system_status = 0
|
|
inspect_body_0_status = 0
|
|
inspect_body_1_status = 0
|
|
phone_hang_up_count = 0
|
|
music_event_system_status = 0
|
|
cia_stealth_enemy_ai_system_status = 0
|
|
cia_stealth_dialogue_system_status = 0
|
|
special_ability_help_text_system_status = 0
|
|
help_time = 0
|
|
//fail_time = 0
|
|
attack_time = 0
|
|
interactive_cutscene_cam_status = 0
|
|
phone_call_system_2_status = 0
|
|
phone_call_time = 0
|
|
delete_wave_one_cia_enemies_and_doctors_system_status = 0
|
|
fail_safe_time = 0
|
|
break_entity_glass_system_status = 0
|
|
replay_video_recorder_system_status = 0
|
|
|
|
zip_inc = 0.0
|
|
zip_y = 0.0
|
|
|
|
dialogue_root = ""
|
|
specific_label = ""
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
#endif
|
|
|
|
|
|
CLEAR_TRIGGERED_LABELS()
|
|
|
|
zip_sound = get_sound_id()
|
|
lift_sound = get_sound_id()
|
|
// for i = 0 to count_of(alarm_sound) - 1
|
|
// alarm_sound[i] = get_sound_id()
|
|
// endfor
|
|
|
|
clip_board.model = P_CS_Clipboard
|
|
|
|
pen.model = Prop_Pencil_01
|
|
|
|
bone_saw.model = Prop_Bonesaw
|
|
|
|
bin_bag[0].model = Prop_LD_rub_binbag_01
|
|
bin_bag[0].pos = <<274.700, -1375.760, 23.810>>
|
|
bin_bag[0].heading = 0.0
|
|
|
|
bin_bag[1].model = Prop_LD_rub_binbag_01
|
|
bin_bag[1].pos = <<249.200, -1375.4077, 38.81>>
|
|
bin_bag[1].heading = 0.0
|
|
|
|
bin[0].model = Prop_Bin_14b
|
|
bin[0].pos = <<233.890, -1355.930, 29.560>>
|
|
bin[0].rot = <<0.0, 0.0, 318.070>>
|
|
|
|
//right
|
|
doctor[0].model = S_M_Y_Autopsy_01
|
|
doctor[0].pos = <<278.6999, -1337.5455, 23.2610>>
|
|
doctor[0].heading = 328.00
|
|
doctor[0].weapon = weapontype_unarmed
|
|
doctor[0].health = 200
|
|
doctor[0].name = "doctor 0"
|
|
|
|
doctor[1].model = S_M_Y_Autopsy_01
|
|
doctor[1].pos = <<280.0447, -1336.3368, 23.2419>>
|
|
doctor[1].heading = 148.5733
|
|
doctor[1].weapon = weapontype_unarmed
|
|
doctor[1].health = 200
|
|
doctor[1].name = "doctor 1"
|
|
|
|
doctor[2].model = S_M_Y_Autopsy_01
|
|
doctor[2].pos = <<265.6501, -1360.3425, 23.2419>>
|
|
doctor[2].heading = 5.1035
|
|
doctor[2].weapon = weapontype_unarmed
|
|
doctor[2].health = 150
|
|
doctor[2].name = "doctor 2"
|
|
|
|
|
|
doctor[3].model = S_M_Y_Autopsy_01
|
|
doctor[3].pos = <<261.4272, -1354.8154, 23.2419>>
|
|
doctor[3].heading = 135.6336
|
|
doctor[3].run_to_pos = <<253.3714, -1373.1748, 23.5377>>
|
|
doctor[3].weapon = weapontype_unarmed
|
|
doctor[3].health = 150
|
|
doctor[3].name = "doctor 3"
|
|
|
|
|
|
doctor[4].model = S_M_Y_Autopsy_01
|
|
doctor[4].pos = <<265.6501, -1360.3425, 23.2419>>
|
|
doctor[4].heading = 5.1035
|
|
doctor[4].run_to_pos = <<265.6501, -1360.3425, 23.2419>>
|
|
doctor[4].weapon = weapontype_unarmed
|
|
doctor[4].health = 150
|
|
doctor[4].name = "doctor 4"
|
|
|
|
|
|
dead_body[0].pos = <<292.205, -1345.025, 24.270>>
|
|
dead_body[0].heading = 142.000
|
|
dead_body[0].health = 200
|
|
dead_body[0].model = u_f_y_corpse_01
|
|
dead_body[0].weapon = weapontype_unarmed
|
|
|
|
dead_body[1].pos = <<297.302, -1348.671, 24.270>>
|
|
dead_body[1].heading = 140.000
|
|
dead_body[1].health = 200
|
|
dead_body[1].model = U_F_M_Corpse_01
|
|
dead_body[1].weapon = weapontype_unarmed
|
|
|
|
cia_stealth.pos = <<284.5221, -1343.0671, 23.5380>>
|
|
cia_stealth.heading = 231.3517
|
|
cia_stealth.weapon = weapontype_combatpistol
|
|
cia_stealth.model = s_m_m_ciasec_01
|
|
cia_stealth.health = 200
|
|
cia_stealth.accuracy = 5
|
|
cia_stealth.name = "cia enemy 0"
|
|
|
|
for i = 0 to count_of(cia_enemy) - 1
|
|
cia_enemy[i].created = false
|
|
cia_enemy_ai_status[i] = attack_phase_1
|
|
endfor
|
|
|
|
for i = 0 to count_of(cia_enemy_top_floor) - 1
|
|
cia_enemy_top_floor[i].created = false
|
|
cia_enemy_top_floor_ai_status[i] = attack_phase_1
|
|
endfor
|
|
|
|
for i = 0 to count_of(cia_enemy_outside_ai_status) - 1
|
|
cia_enemy_outside[i].created = false
|
|
cia_enemy_outside_ai_status[i] = attack_phase_1
|
|
endfor
|
|
|
|
for i = 0 to count_of(doctor) - 1
|
|
doctor_ai_status[i] = action_1
|
|
endfor
|
|
|
|
cia_enemy[0].model = s_m_m_ciasec_01
|
|
cia_enemy[0].weapon = weapontype_combatpistol
|
|
cia_enemy[0].pos = <<269.8, -1344.5, 23.5380>>//<<269.3957, -1344.9933, 23.5380>>
|
|
cia_enemy[0].run_to_pos = <<272.15137, -1343.91382, 23.53772>>
|
|
cia_enemy[0].heading = 314.0738//324.5547
|
|
cia_enemy[0].health = 200
|
|
cia_enemy[0].accuracy = 5
|
|
cia_enemy[0].name = "cia enemy 0"
|
|
|
|
cia_enemy[1].model = s_m_m_ciasec_01
|
|
cia_enemy[1].weapon = weapontype_combatpistol
|
|
cia_enemy[1].pos = <<264.3177, -1339.1743, 23.5380>>//<<264.8243, -1338.9841, 23.2419>>
|
|
cia_enemy[1].heading = 223.5415//230.0393
|
|
cia_enemy[1].run_to_pos = <<271.2230, -1342.7653, 23.5380>>//<<266.8404, -1351.8467, 23.2419>>
|
|
cia_enemy[1].health = 150
|
|
cia_enemy[1].accuracy = 5
|
|
cia_enemy[1].name = "cia enemy 1"
|
|
|
|
cia_enemy[2].model = s_m_m_ciasec_01
|
|
cia_enemy[2].weapon = weapontype_combatpistol
|
|
cia_enemy[2].pos = <<265.7096, -1354.0114, 23.2419>>
|
|
cia_enemy[2].heading = 316.8201
|
|
cia_enemy[2].run_to_pos = <<260.8433, -1353.2159, 23.2419>>
|
|
cia_enemy[2].health = 200
|
|
cia_enemy[2].accuracy = 5
|
|
cia_enemy[2].name = "cia enemy 2"
|
|
|
|
cia_enemy[3].model = s_m_m_ciasec_01
|
|
cia_enemy[3].weapon = weapontype_pumpshotgun
|
|
cia_enemy[3].pos = <<265.5608, -1354.8715, 23.5380>>
|
|
cia_enemy[3].heading = 349.8424
|
|
cia_enemy[3].run_to_pos = <<269.4462, -1345.0549, 23.5380>>
|
|
cia_enemy[3].health = 200
|
|
cia_enemy[3].accuracy = 5
|
|
cia_enemy[3].name = "cia enemy 3"
|
|
|
|
cia_enemy[4].model = s_m_m_ciasec_01
|
|
cia_enemy[4].weapon = weapontype_combatpistol
|
|
cia_enemy[4].pos = <<263.1902, -1359.3120, 23.2419>>
|
|
cia_enemy[4].heading = 351.5096
|
|
cia_enemy[4].run_to_pos = <<263.1902, -1359.3120, 23.5377>>
|
|
cia_enemy[4].health = 125
|
|
cia_enemy[4].accuracy = 5
|
|
cia_enemy[4].name = "cia enemy 4"
|
|
|
|
cia_enemy[5].model = s_m_m_ciasec_01
|
|
cia_enemy[5].weapon = weapontype_combatpistol
|
|
cia_enemy[5].pos = <<249.5796, -1365.9684, 23.2392>>
|
|
cia_enemy[5].heading = 222.9028
|
|
cia_enemy[5].run_to_pos = <<255.7347, -1363.1337, 23.2419>>
|
|
cia_enemy[5].health = 200
|
|
cia_enemy[5].accuracy = 5
|
|
cia_enemy[5].name = "cia enemy 5"
|
|
|
|
cia_enemy[6].model = s_m_m_ciasec_01
|
|
cia_enemy[6].weapon = weapontype_pumpshotgun
|
|
cia_enemy[6].pos = <<253.0823, -1356.3030, 23.2419>>
|
|
cia_enemy[6].heading = 182.8046
|
|
cia_enemy[6].run_to_pos = <<258.29, -1361.33, 23.24>>
|
|
cia_enemy[6].health = 200
|
|
cia_enemy[6].accuracy = 5
|
|
cia_enemy[6].name = "cia enemy 6"
|
|
|
|
cia_enemy[7].model = s_m_m_ciasec_01
|
|
cia_enemy[7].weapon = weapontype_combatpistol
|
|
cia_enemy[7].pos = <<261.5150, -1348.8262, 23.2419>>//<<258.7434, -1351.2220, 23.2419>>
|
|
cia_enemy[7].heading = 34.0855
|
|
cia_enemy[7].run_to_pos = <<254.9045, -1344.0269, 23.2419>>
|
|
cia_enemy[7].health = 200
|
|
cia_enemy[7].accuracy = 5
|
|
cia_enemy[7].name = "cia enemy 7"
|
|
cia_enemy[7].created = true
|
|
|
|
cia_enemy[8].model = s_m_m_ciasec_01
|
|
cia_enemy[8].weapon = weapontype_combatpistol
|
|
cia_enemy[8].pos = <<255.6730, -1354.5822, 23.2419>>
|
|
cia_enemy[8].heading = 213.8065
|
|
cia_enemy[8].run_to_pos = <<250.03, -1350.03, 24.25>>
|
|
cia_enemy[8].health = 200
|
|
cia_enemy[8].accuracy = 5
|
|
cia_enemy[8].name = "cia enemy 8"
|
|
|
|
cia_enemy[9].model = s_m_m_ciasec_01
|
|
cia_enemy[9].weapon = weapontype_smg
|
|
cia_enemy[9].pos = <<247.1438, -1371.6957, 23.2391>>
|
|
cia_enemy[9].heading = 322.0567
|
|
cia_enemy[9].run_to_pos = <<248.4301, -1366.5393, 23.5377>>//<<247.1438, -1371.6957, 23.2391>>
|
|
cia_enemy[9].health = 200
|
|
cia_enemy[9].accuracy = 5
|
|
cia_enemy[9].name = "cia enemy 9"
|
|
|
|
cia_enemy[10].model = s_m_m_ciasec_01
|
|
cia_enemy[10].weapon = weapontype_combatpistol
|
|
cia_enemy[10].pos = <<248.9279, -1366.2971, 23.5380>>
|
|
cia_enemy[10].heading = 312.8393
|
|
cia_enemy[10].run_to_pos = <<265.0469, -1350.6741, 23.5380>>
|
|
cia_enemy[10].health = 200
|
|
cia_enemy[10].accuracy = 5
|
|
cia_enemy[10].name = "cia enemy 10"
|
|
|
|
cia_enemy[11].model = s_m_m_ciasec_01
|
|
cia_enemy[11].weapon = weapontype_combatpistol
|
|
cia_enemy[11].pos = <<244.5939, -1365.7068, 28.3555>>
|
|
cia_enemy[11].heading = 143.0724
|
|
cia_enemy[11].run_to_pos = <<241.3390, -1369.8662, 28.3555>>
|
|
cia_enemy[11].health = 200
|
|
cia_enemy[11].accuracy = 5
|
|
cia_enemy[11].name = "cia enemy 11"
|
|
|
|
cia_enemy[12].model = s_m_m_ciasec_01
|
|
cia_enemy[12].weapon = weapontype_combatpistol
|
|
cia_enemy[12].pos = <<256.1583, -1357.6641, 36.0631>>
|
|
cia_enemy[12].heading = 227.00
|
|
cia_enemy[12].run_to_pos = <<251.7, -1362.8, 33.2999>>//<<253.4599, -1364.3124, 33.2999>>
|
|
cia_enemy[12].health = 200
|
|
cia_enemy[12].accuracy = 5
|
|
cia_enemy[12].name = "cia enemy 12"
|
|
|
|
cia_enemy[13].model = s_m_m_ciasec_01
|
|
cia_enemy[13].weapon = weapontype_combatpistol
|
|
cia_enemy[13].pos = <<258.8216, -1361.4050, 31.1218>>//<<257.5641, -1363.1951, 30.2194>>//<<258.8216, -1361.4050, 31.1218>>
|
|
cia_enemy[13].heading = 169.2
|
|
cia_enemy[13].run_to_pos = <<250.1255, -1366.6589, 28.6482>>
|
|
cia_enemy[13].health = 200
|
|
cia_enemy[13].accuracy = 5
|
|
cia_enemy[13].name = "cia enemy 13"
|
|
|
|
cia_enemy[14].model = s_m_m_ciasec_01
|
|
cia_enemy[14].weapon = weapontype_smg
|
|
cia_enemy[14].pos = <<248.9279, -1366.2971, 23.5380>>
|
|
cia_enemy[14].heading = 312.8393
|
|
cia_enemy[14].run_to_pos = <<258.1613, -1360.3820, 23.5380>>
|
|
cia_enemy[14].health = 200
|
|
cia_enemy[14].accuracy = 5
|
|
cia_enemy[14].name = "cia enemy 14"
|
|
|
|
cia_enemy[15].model = s_m_m_ciasec_01
|
|
cia_enemy[15].weapon = weapontype_combatpistol
|
|
cia_enemy[15].pos = <<266.83777, -1345.47253, 23.53782>>//<<267.8736, -1344.3663, 23.5378>>//<<276.8777, -1342.9612, 23.2416>>
|
|
cia_enemy[15].heading = 315.5344 //229.9195
|
|
cia_enemy[15].run_to_pos = <<284.2000, -1344.5238, 23.5344>>
|
|
cia_enemy[15].health = 200
|
|
cia_enemy[15].accuracy = 5
|
|
cia_enemy[15].name = "cia enemy 15"
|
|
|
|
cia_enemy[16].model = s_m_m_ciasec_01
|
|
cia_enemy[16].weapon = weapontype_combatpistol//WEAPONTYPE_PUMPSHOTGUN
|
|
cia_enemy[16].pos = <<274.4696, -1341.7974, 23.2416>>
|
|
cia_enemy[16].heading = 229.5128
|
|
cia_enemy[16].run_to_pos = <<279.2521, -1344.3408, 23.5344>>
|
|
cia_enemy[16].health = 200
|
|
cia_enemy[16].accuracy = 5
|
|
cia_enemy[16].name = "cia enemy 16"
|
|
cia_enemy[16].created = true
|
|
|
|
cia_enemy_top_floor[0].model = s_m_m_ciasec_01
|
|
cia_enemy_top_floor[0].weapon = weapontype_combatpistol
|
|
cia_enemy_top_floor[0].pos = <<242.2337, -1367.5201, 38.5343>>//<<241.9199, -1367.1750, 38.5343>>
|
|
cia_enemy_top_floor[0].heading = 332.00
|
|
cia_enemy_top_floor[0].run_to_pos = <<242.5351, -1374.2463, 38.5343>>
|
|
cia_enemy_top_floor[0].health = 200
|
|
cia_enemy_top_floor[0].accuracy = 5
|
|
cia_enemy_top_floor[0].name = "top floor 0"
|
|
|
|
cia_enemy_top_floor[1].model = s_m_m_ciasec_01
|
|
cia_enemy_top_floor[1].weapon = weapontype_combatpistol
|
|
cia_enemy_top_floor[1].pos = <<236.2051, -1369.0114, 38.5344>>
|
|
cia_enemy_top_floor[1].heading = 239.4541
|
|
cia_enemy_top_floor[1].run_to_pos = <<242.2337, -1367.5201, 38.5343>>//<<237.8856, -1367.4769, 38.5342>>
|
|
cia_enemy_top_floor[1].health = 200
|
|
cia_enemy_top_floor[1].accuracy = 5
|
|
cia_enemy_top_floor[1].name = "top floor 1"
|
|
|
|
cia_enemy_top_floor[2].model = s_m_m_ciasec_01
|
|
cia_enemy_top_floor[2].weapon = weapontype_smg
|
|
cia_enemy_top_floor[2].pos = <<239.4661, -1379.3192, 38.5342>>
|
|
cia_enemy_top_floor[2].heading = 11.6926
|
|
cia_enemy_top_floor[2].run_to_pos = <<242.9099, -1375.5717, 38.5342>>
|
|
cia_enemy_top_floor[2].health = 200
|
|
cia_enemy_top_floor[2].accuracy = 5
|
|
cia_enemy_top_floor[2].name = "top floor 2"
|
|
|
|
//peds who run up stairs.
|
|
cia_enemy_top_floor[3].model = s_m_m_ciasec_01
|
|
cia_enemy_top_floor[3].weapon = weapontype_combatpistol
|
|
cia_enemy_top_floor[3].pos = <<254.7773, -1366.0381, 33.5921>>
|
|
cia_enemy_top_floor[3].heading = 323.0041
|
|
cia_enemy_top_floor[3].run_to_pos = <<246.0538, -1364.6686, 38.5342>>
|
|
cia_enemy_top_floor[3].health = 200
|
|
cia_enemy_top_floor[3].accuracy = 5
|
|
cia_enemy_top_floor[3].name = "top floor 3"
|
|
|
|
cia_enemy_top_floor[4].model = s_m_m_ciasec_01
|
|
cia_enemy_top_floor[4].weapon = weapontype_combatpistol
|
|
cia_enemy_top_floor[4].pos = <<252.0599, -1362.6416, 33.5921>>
|
|
cia_enemy_top_floor[4].heading = 193.9636
|
|
cia_enemy_top_floor[4].run_to_pos = <<254.2647, -1371.1111, 38.5342>>
|
|
cia_enemy_top_floor[4].health = 200
|
|
cia_enemy_top_floor[4].accuracy = 5
|
|
cia_enemy_top_floor[4].name = "top floor 4"
|
|
|
|
cia_enemy_top_floor[5].model = s_m_m_ciasec_01
|
|
cia_enemy_top_floor[5].weapon = weapontype_combatpistol
|
|
cia_enemy_top_floor[5].pos = <<245.1608, -1371.3011, 38.2413>>
|
|
cia_enemy_top_floor[5].heading = 252.7770
|
|
cia_enemy_top_floor[5].run_to_pos = <<245.2636, -1376.6038, 38.2673>>
|
|
cia_enemy_top_floor[5].health = 200
|
|
cia_enemy_top_floor[5].accuracy = 5
|
|
cia_enemy_top_floor[5].name = "top floor 5"
|
|
|
|
cia_enemy_top_floor[6].model = s_m_m_ciasec_01
|
|
cia_enemy_top_floor[6].weapon = weapontype_combatpistol
|
|
cia_enemy_top_floor[6].pos = <<238.59, -1368.96, 38.24>>
|
|
cia_enemy_top_floor[6].heading = 50.00
|
|
cia_enemy_top_floor[6].run_to_pos = <<238.59, -1368.96, 38.24>>
|
|
cia_enemy_top_floor[6].health = 200
|
|
cia_enemy_top_floor[6].accuracy = 5
|
|
cia_enemy_top_floor[6].name = "top floor 6"
|
|
|
|
|
|
cia_enemy_outside[0].model = s_m_m_ciasec_01
|
|
cia_enemy_outside[0].weapon = weapontype_combatpistol
|
|
cia_enemy_outside[0].pos = <<249.5792, -1342.7684, 30.8178>>
|
|
cia_enemy_outside[0].heading = 114.22
|
|
cia_enemy_outside[0].run_to_pos = <<231.9526, -1348.4601, 29.4711>>
|
|
cia_enemy_outside[0].health = 200
|
|
cia_enemy_outside[0].accuracy = 2
|
|
cia_enemy_outside[0].name = "out 0"
|
|
|
|
cia_enemy_outside[1].model = s_m_m_ciasec_01
|
|
cia_enemy_outside[1].weapon = weapontype_combatpistol
|
|
cia_enemy_outside[1].pos = <<228.5237, -1376.5032, 29.7040>>//<<225.8327, -1373.3615, 29.6405>>
|
|
cia_enemy_outside[1].heading = 87.4471
|
|
cia_enemy_outside[1].run_to_pos = <<225.1319, -1361.1047, 29.5114>>
|
|
cia_enemy_outside[1].health = 200
|
|
cia_enemy_outside[1].accuracy = 2
|
|
cia_enemy_outside[1].name = "out 1"
|
|
|
|
cia_enemy_outside[2].model = s_m_m_ciasec_01
|
|
cia_enemy_outside[2].weapon = weapontype_combatpistol
|
|
cia_enemy_outside[2].pos = <<230.6237, -1386.9448, 29.4619>>//<<213.9920, -1372.0195, 29.5875>>
|
|
cia_enemy_outside[2].heading = 41.9494
|
|
cia_enemy_outside[2].run_to_pos = <<222.6815, -1356.7540, 29.5875>>
|
|
cia_enemy_outside[2].health = 200
|
|
cia_enemy_outside[2].accuracy = 2
|
|
cia_enemy_outside[2].name = "out 2"
|
|
|
|
cia_enemy_outside[3].model = S_M_Y_Cop_01
|
|
cia_enemy_outside[3].weapon = weapontype_pistol
|
|
cia_enemy_outside[3].run_to_pos = <<222.4067, -1363.6194, 29.5217>>
|
|
cia_enemy_outside[3].health = 200
|
|
cia_enemy_outside[3].accuracy = 2
|
|
cia_enemy_outside[3].name = "out 3 "
|
|
|
|
cia_enemy_outside[4].model = S_M_Y_Cop_01
|
|
cia_enemy_outside[4].weapon = weapontype_pistol
|
|
cia_enemy_outside[4].run_to_pos = <<217.4619, -1361.3063, 29.5875>>
|
|
cia_enemy_outside[4].health = 200
|
|
cia_enemy_outside[4].accuracy = 2
|
|
cia_enemy_outside[4].name = "out 4"
|
|
|
|
|
|
|
|
// players_truck.model = biff
|
|
|
|
franklin.pos = <<1600.4019, -1944.4766, 99.6178>>
|
|
franklin.heading = 16.6913
|
|
franklin.model = GET_PLAYER_PED_MODEL(char_franklin)
|
|
|
|
|
|
|
|
// police_man[2].model = S_M_Y_Cop_01
|
|
// police_man[2].weapon = weapontype_pistol
|
|
//
|
|
// police_man[3].model = S_M_Y_Cop_01
|
|
// police_man[3].weapon = weapontype_pistol
|
|
|
|
police_car[0].model = police3
|
|
police_car[0].pos = <<230.1168, -1396.6647, 29.4900>>
|
|
police_car[0].heading = 7.3
|
|
police_car[0].recording_number = 001
|
|
|
|
police_car[1].model = police3
|
|
police_car[1].pos = <<120.5738, -1449.2554, 28.2778>>
|
|
police_car[1].heading = 28.9034
|
|
|
|
ambient_car[0].pos = <<223.1269, -1352.6667, 29.5775>>
|
|
ambient_car[0].heading = 229.9205
|
|
ambient_car[0].model = felon
|
|
|
|
ambient_car[1].pos = <<225.6844, -1349.6250, 29.5556>>
|
|
ambient_car[1].heading = 229.4848
|
|
ambient_car[1].model = baller2
|
|
|
|
franklins_car.pos = <<1604.959,-1944.817,100.693>>
|
|
franklins_car.heading = 98.9533
|
|
franklins_car.model = GET_PLAYER_VEH_MODEL(CHAR_FRANKLIN, VEHICLE_TYPE_BIKE)
|
|
|
|
endproc
|
|
|
|
proc load_text_and_dialogue()
|
|
|
|
register_script_with_audio()
|
|
|
|
add_ped_for_dialogue(scripted_speech, ConvertSingleCharacter("0"), player_ped_id(), "michael")
|
|
|
|
request_additional_text("fbi1", mission_text_slot)
|
|
request_additional_text("fbi1aud", mission_dialogue_text_slot)
|
|
|
|
while not has_additional_text_loaded(mission_text_slot)
|
|
or not has_additional_text_loaded(mission_dialogue_text_slot)
|
|
wait(0)
|
|
endwhile
|
|
|
|
endproc
|
|
|
|
proc trigger_alarm(bool force_trigger_alarm = false)
|
|
|
|
if not alarm_on
|
|
|
|
if (dave_norton_phone_call_finished and lk_timer(alarm_time, 2000))
|
|
or not is_entity_in_angled_area(player_ped_id(), <<287.544, -1354.412, 23.247>>, <<294.497, -1345.887, 26.247>>, 13.4)
|
|
or lk_timer(shootout_time, 40000)
|
|
or force_trigger_alarm
|
|
|
|
if PREPARE_ALARM("FBI_01_MORGUE_ALARMS")
|
|
|
|
START_ALARM("FBI_01_MORGUE_ALARMS", false)
|
|
|
|
// PLAY_SOUND_FROM_COORD(alarm_sound[0], "FBI_01_DMW_ALARM_E", <<285.07, -1346.1, 26.39>>) //BIOTECH_HEIST_ALARM_BELL
|
|
// PLAY_SOUND_FROM_COORD(alarm_sound[1], "FBI_01_DMW_ALARM_E", <<256.63, -1357.34, 26.39>>)
|
|
// PLAY_SOUND_FROM_COORD(alarm_sound[2], "FBI_01_DMW_ALARM_E", <<247.92, -1363.22, 31.5>>)
|
|
// PLAY_SOUND_FROM_COORD(alarm_sound[3], "FBI_01_DMW_ALARM_E", <<258.47, -1358.14, 41.36>>)
|
|
// PLAY_SOUND_FROM_COORD(alarm_sound[4], "FBI_01_DMW_ALARM_E", <<237.23, -1366.36, 41.34>>)
|
|
|
|
alarm_time = get_game_timer()
|
|
alarm_on = true
|
|
|
|
trigger_music_event("FBI1_ALARM")
|
|
|
|
endif
|
|
|
|
endif
|
|
endif
|
|
|
|
endproc
|
|
|
|
//proc setup_radio_station()
|
|
//
|
|
// SET_INITIAL_PLAYER_STATION("RADIO_01_CLASS_ROCK")
|
|
// FREEZE_RADIO_STATION("RADIO_01_CLASS_ROCK")
|
|
// SET_RADIO_AUTO_UNFREEZE(FALSE)
|
|
// SET_RADIO_TRACK("RADIO_01_CLASS_ROCK", "FBI1_COPS_LOST_RADIO")
|
|
//
|
|
//endproc
|
|
|
|
func bool allow_doctor_4_to_run()
|
|
|
|
//if (is_ped_in_specific_room(player_ped_id(), <<251.12, -1367.35, 25.00>>, "CorridorBottom") and is_sphere_visible(get_entity_coords(doctor[4].ped), 2.0))
|
|
if is_entity_in_angled_area(player_ped_id(), <<244.300, -1368.440, 23.543>>, <<248.479, -1363.460, 26.743>>, 7.6)
|
|
and ((get_entity_heading(player_ped_id()) > 4.49 and get_entity_heading(player_ped_id()) < 90.31) or get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(doctor[4].ped)) < 2.0)
|
|
|
|
return true
|
|
|
|
endif
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
proc cia_stealth_dialogue_system()
|
|
|
|
switch cia_stealth_dialogue_system_status
|
|
|
|
case 0
|
|
|
|
if create_conversation(scripted_speech, "FBI1AUD", "fbi1_look", conv_priority_medium)
|
|
cia_stealth_dialogue_system_status++
|
|
endif
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
if not is_any_text_being_displayed(locates_data)
|
|
cia_stealth_dialogue_system_status++
|
|
endif
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
if lk_timer(original_time, 7000)
|
|
if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(cia_stealth.ped)) < 25.00
|
|
if not is_any_text_being_displayed(locates_data)
|
|
if create_conversation(scripted_speech, "FBI1AUD", "fbi1_look", conv_priority_medium)
|
|
original_time = get_game_timer()
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
endproc
|
|
|
|
proc cia_stealth_enemy_ai_system()
|
|
|
|
if not is_ped_injured(cia_stealth.ped)
|
|
|
|
set_ped_reset_flag(cia_stealth.ped, PRF_ForceEnableFlashLightForAI, true)
|
|
|
|
//if is_entity_in_angled_area(player_ped_id(), get_offset_from_entity_in_world_coords(cia_stealth.ped, <<-5.0, 0.5, -1.0>>), get_offset_from_entity_in_world_coords(cia_stealth.ped, <<5.0, 0.5, -1.0>>))
|
|
if cia_stealth_enemy_ai_system_status < 22
|
|
|
|
vector vec_cia
|
|
vector vec_player
|
|
|
|
vec_cia = get_offset_from_entity_in_world_coords(cia_stealth.ped, <<0.0, 0.5, 0.0>>) - get_entity_coords(cia_stealth.ped)
|
|
vec_player = get_entity_coords(cia_stealth.ped) - get_entity_coords(player_ped_id())
|
|
|
|
// printfloat(dot_product(vec_cia, vec_player))
|
|
// printnl()
|
|
|
|
|
|
// if (dot_product(vec_cia, vec_player) < 0.0 and CAN_PED_SEE_HATED_PED(cia_stealth.ped, player_ped_id()))
|
|
// script_Assert("test 0")
|
|
// printstring("cia test 0")
|
|
// printnl()
|
|
// endif
|
|
//
|
|
// if has_ped_been_harmed(cia_stealth.ped, cia_stealth.health)
|
|
// script_Assert("test 1")
|
|
// printstring("cia test 1")
|
|
// printnl()
|
|
// endif
|
|
//
|
|
// if is_entity_touching_entity(player_ped_id(), cia_stealth.ped)
|
|
// script_Assert("test 2")
|
|
// printstring("cia test 2")
|
|
// printnl()
|
|
// endif
|
|
//
|
|
// if can_ped_hear_player(player_id(), cia_stealth.ped)
|
|
// script_Assert("test 3")
|
|
// printstring("cia test 3")
|
|
// printnl()
|
|
// endif
|
|
//
|
|
// if is_entity_in_angled_area(player_ped_id(), <<283.228, -1348.540, 23.538>>, <<279.005, -1344.710, 26.538>>, 2.0)
|
|
// script_Assert("test 4")
|
|
// printstring("cia test 4")
|
|
// printnl()
|
|
// endif
|
|
|
|
|
|
|
|
if (dot_product(vec_cia, vec_player) < 0.0 and CAN_PED_SEE_HATED_PED(cia_stealth.ped, player_ped_id()))
|
|
or has_ped_been_harmed(cia_stealth.ped, cia_stealth.health)
|
|
or is_entity_touching_entity(player_ped_id(), cia_stealth.ped)
|
|
or can_ped_hear_player(player_id(), cia_stealth.ped)
|
|
or is_entity_in_angled_area(player_ped_id(), <<283.228, -1348.540, 23.538>>, <<279.005, -1344.710, 26.538>>, 2.0)
|
|
|
|
set_blocking_of_non_temporary_events(cia_stealth.ped, false)
|
|
task_combat_ped(cia_stealth.ped, player_ped_id())
|
|
|
|
original_time = get_game_timer()
|
|
|
|
cia_stealth_enemy_ai_system_status = 22
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
switch cia_stealth_enemy_ai_system_status
|
|
|
|
case 0
|
|
|
|
open_sequence_task(seq)
|
|
task_play_anim(null, "missfbi1ig_7", "idle_a", slow_blend_in)
|
|
task_play_anim(null, "missfbi1ig_7", "idle_b")
|
|
task_play_anim(null, "missfbi1ig_7", "idle_c", normal_blend_in, slow_blend_out)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(cia_stealth.ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
// open_sequence_task(seq)
|
|
// task_go_to_coord_while_aiming_at_coord(null, <<287.6915, -1346.0591, 23.5377>>, <<295.7, -1352.8, 25.2>>, pedmove_walk, false, 0.2, 0.2, true, ENAV_STOP_EXACTLY)
|
|
// task_aim_gun_at_coord(null, <<285.2, -1351.1, 25.0>>, 1000)
|
|
// task_go_to_coord_while_aiming_at_coord(null, <<286.7805, -1348.7582, 23.5377>>, <<285.4, -1352.0, 25.00>>, pedmove_walk, false, 0.1, 0.1, true, enav_stop_exactly)
|
|
// close_sequence_task(seq)
|
|
// task_perform_sequence(cia_stealth.ped, seq)
|
|
// clear_sequence_task(seq)
|
|
|
|
cia_stealth_enemy_ai_system_status++
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
// cia_stealth_system()
|
|
//
|
|
// func bool cia_stealth_system()
|
|
//
|
|
// one anim phase > 0.99 start idle_b
|
|
//
|
|
// endfunc
|
|
|
|
if has_ped_task_finished_2(cia_stealth.ped)
|
|
|
|
force_ped_motion_state(cia_stealth.ped, ms_aiming)
|
|
|
|
open_sequence_task(seq)
|
|
task_aim_gun_at_coord(null, <<296.9, -1352.5, 24.00>>, 4000, true)
|
|
task_aim_gun_at_coord(null, <<296.3, -1348.3, 25.00>>, 4000)
|
|
task_aim_gun_at_coord(null, <<296.9, -1352.5, 24.00>>, 4000)
|
|
task_aim_gun_at_coord(null, <<296.3, -1348.3, 25.00>>, 4000)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(cia_stealth.ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
cia_stealth_enemy_ai_system_status++
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
if has_ped_task_finished_2(cia_stealth.ped)
|
|
|
|
open_sequence_task(seq)
|
|
task_go_to_coord_while_aiming_at_coord(null, <<288.09836, -1346.54749, 23.53782>>, <<285.4, -1352.0, 25.00>>, pedmove_walk, false, 0.1, 0.1, true, enav_no_stopping)
|
|
task_go_to_coord_while_aiming_at_coord(null, <<286.7805, -1348.7582, 23.5377>>, <<285.4, -1352.0, 25.00>>, pedmove_walk, false, 0.1, 0.1, true, enav_stop_exactly)
|
|
task_aim_gun_at_coord(null, <<284.2, -1351.1, 24.00>>, 1500)
|
|
task_aim_gun_at_coord(null, <<284.1, -1351.8, 25.7>>, 2000)
|
|
task_aim_gun_at_coord(null, <<286.9, -1352.0, 25.00>>, 2000)
|
|
//TASK_FOLLOW_WAYPOINT_RECORDING(null, "fbi1_0", 0, EWAYPOINT_START_FROM_CLOSEST_POINT | EWAYPOINT_START_TASK_INITIALLY_AIMING)
|
|
task_go_to_coord_while_aiming_at_coord(null, <<290.86984, -1348.44971, 23.53797>>, <<295.6, -1352.3, 25.0>>, pedmove_walk, false)
|
|
task_aim_gun_at_coord(null, <<295.6, -1352.3, 25.0>>, 4000)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(cia_stealth.ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
cia_stealth_enemy_ai_system_status++
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 3
|
|
|
|
if not is_ped_facing_ped(cia_stealth.ped, player_ped_id(), 35)
|
|
or not is_ped_at_coords(cia_stealth.ped, get_entity_coords(cia_stealth.ped), <<1.0, 1.0, 1.6>>)
|
|
|
|
if has_ped_task_finished_2(cia_stealth.ped)
|
|
|
|
open_sequence_task(seq)
|
|
task_turn_ped_to_face_entity(null, player_ped_id())
|
|
task_go_to_coord_while_aiming_at_coord(null, get_entity_coords(player_ped_id()), get_entity_coords(player_ped_id()), pedmove_walk, false, 0.1, 0.1, true, enav_stop_exactly)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(cia_stealth.ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
endif
|
|
endif
|
|
|
|
break
|
|
|
|
|
|
// if IS_WAYPOINT_PLAYBACK_GOING_ON_FOR_PED(cia_stealth.ped)
|
|
// WAYPOINT_PLAYBACK_OVERRIDE_SPEED(cia_stealth.ped, 1.0)
|
|
// WAYPOINT_PLAYBACK_START_AIMING_AT_COORD(cia_stealth.ped, <<295.6, -1352.3, 25.0>>, false)
|
|
// endif
|
|
//
|
|
// if is_entity_at_coord(cia_stealth.ped, <<291.8003, -1349.1173, 23.5377>>, <<1.0, 1.0, 2.0>>)
|
|
//
|
|
// open_sequence_task(seq)
|
|
// task_aim_gun_at_coord(null, <<296.9, -1352.5, 24.00>>, 4000)
|
|
// task_aim_gun_at_coord(null, <<296.3, -1348.3, 25.00>>, 4000)
|
|
// set_sequence_to_repeat(seq, repeat_forever)
|
|
// close_sequence_task(seq)
|
|
// task_perform_sequence(cia_stealth.ped, seq)
|
|
// clear_sequence_task(seq)
|
|
//
|
|
// cia_stealth_enemy_ai_system_status++
|
|
//
|
|
// endif
|
|
|
|
// break
|
|
|
|
case 22
|
|
|
|
set_ped_reset_flag(cia_stealth.ped, PRF_PreventAllMeleeTakedowns, true)
|
|
|
|
if lk_timer(original_time, 1500)
|
|
STOP_PED_SPEAKING(cia_stealth.ped, false)
|
|
cia_stealth_enemy_ai_system_status++
|
|
endif
|
|
|
|
break
|
|
|
|
case 23
|
|
|
|
set_ped_reset_flag(cia_stealth.ped, PRF_PreventAllMeleeTakedowns, true)
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
cia_stealth_dialogue_system()
|
|
|
|
endif
|
|
|
|
endproc
|
|
|
|
// // Set health pack placement flags
|
|
// iPlacementFlags = 0
|
|
// SET_BIT(iPlacementFlags, ENUM_TO_INT(PLACEMENT_FLAG_REGENERATES)) // You might not want this?
|
|
// SET_BIT(iPlacementFlags, ENUM_TO_INT(PLACEMENT_FLAG_FIXED))
|
|
// SET_BIT(iPlacementFlags, ENUM_TO_INT(PLACEMENT_FLAG_UPRIGHT))
|
|
// SET_BIT(iPlacementFlags, ENUM_TO_INT(PLACEMENT_FLAG_ORIENT_TO_GROUND))
|
|
// iPlacementFlagsNoSnap = iPlacementFlags
|
|
// SET_BIT(iPlacementFlags, ENUM_TO_INT(PLACEMENT_FLAG_SNAP_TO_GROUND))
|
|
|
|
proc create_pickups()
|
|
|
|
fbi1_pickup[0] = CREATE_PICKUP_ROTATE(PICKUP_HEALTH_STANDARD, <<262.4710, -1357.8521, 24.8703>>, <<0,0,63>>, 0)
|
|
ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME(fbi1_pickup[0], "Reception")
|
|
|
|
fbi1_pickup[1] = CREATE_PICKUP_ROTATE(PICKUP_HEALTH_STANDARD, <<240.8327, -1359.4211, 38.6342>>, <<0,0,27>>, 0)
|
|
ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME(fbi1_pickup[1], "topoff_right")
|
|
|
|
fbi1_pickup[2] = CREATE_PICKUP_ROTATE(PICKUP_HEALTH_STANDARD, <<254.350, -1342.04, 24.610>>, <<0,0,50>>, 0)
|
|
ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME(fbi1_pickup[2], "AutopsyLargeA")
|
|
|
|
fbi1_pickup[3] = CREATE_PICKUP_ROTATE(PICKUP_HEALTH_STANDARD, <<248.130, -1355.140, 24.620>>, <<90,0,-40>>, 0)
|
|
ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME(fbi1_pickup[3], "AutopsyLargeB")
|
|
|
|
fbi1_pickup[4] = CREATE_PICKUP_ROTATE(PICKUP_HEALTH_STANDARD, <<241.8990, -1364.6920, 24.9978>>, <<0.0000, 0.0000, -39.4400>>, 0)
|
|
ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME(fbi1_pickup[4], "CorridorBottom")
|
|
|
|
fbi1_pickup[5] = CREATE_PICKUP_ROTATE(PICKUP_ARMOUR_STANDARD, <<247.6937, -1374.5460, 38.7342>>, <<0.0000, 0.0000, 20.00>>, 0)
|
|
ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME(fbi1_pickup[5], "topoff_mid")
|
|
|
|
ENDPROC
|
|
|
|
proc remove_pickups()
|
|
|
|
int i = 0
|
|
|
|
for i = 0 to count_of(fbi1_pickup) - 1
|
|
|
|
IF DOES_PICKUP_EXIST(fbi1_pickup[i])
|
|
REMOVE_PICKUP(fbi1_pickup[i])
|
|
ENDIF
|
|
|
|
endfor
|
|
|
|
endproc
|
|
|
|
proc load_normal_start_of_mission()
|
|
|
|
if replay_active
|
|
start_replay_setup(<<280.645, -1335.833, 24.500>>, -138.000, false)
|
|
endif
|
|
|
|
request_model(doctor[0].model)
|
|
request_model(doctor[2].model)
|
|
request_model(dead_body[0].model)
|
|
set_ped_model_is_suppressed(dead_body[0].model, true)
|
|
request_model(dead_body[1].model)
|
|
set_ped_model_is_suppressed(dead_body[1].model, true)
|
|
request_model(cia_enemy[0].model)
|
|
|
|
request_model(clip_board.model)
|
|
request_model(pen.model)
|
|
request_model(bone_saw.model)
|
|
request_model(bin_bag[0].model)
|
|
request_model(bin[0].model)
|
|
request_model(get_weapontype_model(cia_stealth.weapon))
|
|
request_weapon_asset(cia_stealth.weapon, enum_to_int(wrf_request_all_anims), WEAPON_COMPONENT_FLASH)
|
|
|
|
request_anim_dict("missfbi1")//mini@cpr@char_b@cpr_def missfbi1
|
|
|
|
request_streamed_texture_dict("fbi1")
|
|
|
|
PREPARE_ALARM("FBI_01_MORGUE_ALARMS")
|
|
|
|
request_ambient_audio_bank("SCRIPT\\FBI_01_DMW_01")
|
|
request_ambient_audio_bank("SCRIPT\\FBI_01_DMW_02")
|
|
request_ambient_audio_bank("FBI_01_DMW_Autopsy_1")
|
|
load_stream("FIB1_MORGUE_AMBIENCE_master")
|
|
|
|
prepare_music_event("FBI1_WAKE_UP")
|
|
|
|
|
|
set_building_state(BUILDINGNAME_IPL_CORONER_INTERIOR, BUILDINGSTATE_DESTROYED)
|
|
|
|
coroner_interior = get_interior_at_coords_with_type(<<279.9322, -1337.4902, 23.7419>>, "v_coroner")
|
|
|
|
while not is_valid_interior(coroner_interior)
|
|
coroner_interior = get_interior_at_coords_with_type(<<279.9322, -1337.4902, 23.7419>>, "v_coroner")
|
|
wait(0)
|
|
endwhile
|
|
|
|
pin_interior_in_memory(coroner_interior)
|
|
|
|
REQUEST_PTFX_ASSET()
|
|
|
|
// assisted_movement_request_route("coroner1")
|
|
assisted_movement_request_route("coroner2")
|
|
assisted_movement_request_route("coroner_stairs")
|
|
|
|
if replay_active
|
|
END_REPLAY_SETUP()
|
|
endif
|
|
|
|
while not has_model_loaded(doctor[0].model)
|
|
or not has_model_loaded(doctor[2].model)
|
|
or not has_model_loaded(dead_body[0].model)
|
|
or not has_model_loaded(dead_body[1].model)
|
|
or not has_model_loaded(cia_enemy[0].model)
|
|
or not has_model_loaded(clip_board.model)
|
|
or not has_model_loaded(pen.model)
|
|
or not has_model_loaded(bone_saw.model)
|
|
or not has_model_loaded(bin_bag[0].model)
|
|
or not has_model_loaded(bin[0].model)
|
|
or not has_model_loaded(get_weapontype_model(cia_stealth.weapon))
|
|
or not has_weapon_asset_loaded(cia_stealth.weapon)
|
|
or not has_anim_dict_loaded("missfbi1")
|
|
or not has_streamed_texture_dict_loaded("fbi1")
|
|
or not request_ambient_audio_bank("SCRIPT\\FBI_01_DMW_01")
|
|
or not request_ambient_audio_bank("SCRIPT\\FBI_01_DMW_02")
|
|
or not request_ambient_audio_bank("script\\FBI_01_DMW_Autopsy_1")
|
|
or not load_stream("FIB1_MORGUE_AMBIENCE_master")
|
|
or not has_ptfx_asset_loaded()
|
|
or not prepare_music_event("FBI1_WAKE_UP")
|
|
or not is_interior_ready(coroner_interior)
|
|
or not has_PTFX_ASSET_loaded()
|
|
|
|
wait(0)
|
|
|
|
draw_rect(0.5, 0.5, 1, 1, 0, 0, 0, 255)
|
|
|
|
endwhile
|
|
|
|
disable_cellphone(true)
|
|
|
|
add_scenario_blocking_area(<<278.00, -1473.12, 100.00>>, <<222.50, -1243.38, -100.00>>)
|
|
|
|
clear_area(<<287.9576, -1345.7250, 23.2416>>, 300.00, true)
|
|
remove_decals_in_range(<<287.9576, -1345.7250, 23.2416>>, 300.00)
|
|
|
|
SET_PED_RESET_FLAG(PLAYER_PED_ID(), PRF_DisablePlayerAutoVaulting, TRUE)
|
|
|
|
create_pickups()
|
|
|
|
PLAY_STREAM_FRONTEND()
|
|
|
|
//PLAY_STREAM_FRONTEND()
|
|
|
|
end_cutscene_no_fade()
|
|
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(0, "Start of mission")
|
|
|
|
mission_flow = stealth_cutscene
|
|
|
|
//***************debug jumps
|
|
//mission_flow = escape_cutscene
|
|
//***************end jumps
|
|
|
|
endproc
|
|
|
|
proc load_trip_skip_data_0()
|
|
|
|
//BLOCK_PLAYER_PED_WEAPON_STORE(CHAR_MICHAEL, TRUE)
|
|
remove_all_ped_weapons(player_ped_id())
|
|
|
|
DISABLE_CHEAT(CHEAT_TYPE_GIVE_WEAPONS, true)
|
|
|
|
load_normal_start_of_mission() //can be achieved because the script fades out after the intro mocap.
|
|
|
|
endproc
|
|
|
|
//PURPOSE: Player fails between getting start of stealth guard and before killing guard = start of stealth guard
|
|
proc load_trip_skip_data_1()
|
|
|
|
int i
|
|
|
|
if replay_active
|
|
start_replay_setup(<<279.0734, -1337.0759, 23.5545>>, 227.22, false)
|
|
endif
|
|
|
|
request_model(doctor[0].model)
|
|
request_model(dead_body[0].model)
|
|
set_ped_model_is_suppressed(dead_body[0].model, true)
|
|
request_model(dead_body[1].model)
|
|
set_ped_model_is_suppressed(dead_body[1].model, true)
|
|
request_model(cia_enemy[0].model)
|
|
|
|
request_model(bin_bag[0].model)
|
|
|
|
request_model(bin[0].model)
|
|
|
|
request_model(get_weapontype_model(weapontype_combatpistol))
|
|
request_weapon_asset(WEAPONTYPE_combatpistol)
|
|
|
|
request_anim_dict("missfbi1")
|
|
request_anim_dict("missfbi1ig_7")
|
|
request_anim_dict("dead")
|
|
|
|
REQUEST_STEALTH_MODE_ASSET("MICHAEL_ACTION")
|
|
|
|
request_ambient_audio_bank("SCRIPT\\FBI_01_DMW_01")
|
|
request_ambient_audio_bank("SCRIPT\\FBI_01_DMW_02")
|
|
|
|
// SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_HEAD, 0, 0)
|
|
// SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_BERD, 0, 0)
|
|
// SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_HAIR, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_TORSO, 19, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_LEG, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_HAND, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_FEET, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_TEETH, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_DECL, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_JBIB, 0, 0)
|
|
|
|
REQUEST_PTFX_ASSET()
|
|
|
|
set_building_state(BUILDINGNAME_IPL_CORONER_INTERIOR, BUILDINGSTATE_DESTROYED)
|
|
|
|
coroner_interior = get_interior_at_coords_with_type(<<279.9322, -1337.4902, 23.7419>>, "v_coroner")
|
|
|
|
while not is_valid_interior(coroner_interior)
|
|
coroner_interior = get_interior_at_coords_with_type(<<279.9322, -1337.4902, 23.7419>>, "v_coroner")
|
|
wait(0)
|
|
endwhile
|
|
|
|
pin_interior_in_memory(coroner_interior)
|
|
|
|
assisted_movement_request_route("coroner2")
|
|
assisted_movement_request_route("coroner_stairs")
|
|
|
|
if replay_active
|
|
END_REPLAY_SETUP()
|
|
endif
|
|
|
|
|
|
while not has_model_loaded(doctor[0].model)
|
|
or not has_model_loaded(dead_body[0].model)
|
|
or not has_model_loaded(dead_body[1].model)
|
|
or not has_model_loaded(cia_enemy[0].model)
|
|
or not has_model_loaded(bin_bag[0].model)
|
|
or not has_model_loaded(bin[0].model)
|
|
or not has_model_loaded(get_weapontype_model(weapontype_combatpistol))
|
|
or not has_weapon_asset_loaded(weapontype_combatpistol)
|
|
or not has_anim_dict_loaded("missfbi1")
|
|
or not has_anim_dict_loaded("missfbi1ig_7")
|
|
or not has_anim_dict_loaded("dead")
|
|
or not HAS_stealth_MODE_ASSET_LOADED("michael_action")
|
|
or not request_ambient_audio_bank("SCRIPT\\FBI_01_DMW_01")
|
|
or not request_ambient_audio_bank("SCRIPT\\FBI_01_DMW_02")
|
|
or not has_ped_preload_variation_data_finished(player_ped_id())
|
|
or not has_ptfx_asset_loaded()
|
|
or not is_interior_ready(coroner_interior)
|
|
|
|
wait(0)
|
|
|
|
endwhile
|
|
|
|
add_scenario_blocking_area(<<278.00, -1473.12, 100.00>>, <<222.50, -1243.38, -100.00>>)
|
|
|
|
clear_area(<<278.58, -1336.61, 23.68>>, 1000, true)
|
|
remove_decals_in_range(<<278.58, -1336.61, 23.68>>, 1000.00)
|
|
|
|
create_pickups()
|
|
|
|
//BLOCK_PLAYER_PED_WEAPON_STORE(CHAR_MICHAEL, TRUE)
|
|
remove_all_ped_weapons(player_ped_id())
|
|
|
|
DISABLE_CHEAT(CHEAT_TYPE_GIVE_WEAPONS, true)
|
|
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_HEAD, 0, 0)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_BERD, 0, 0)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_HAIR, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TORSO, 19, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_LEG, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_FEET, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_JBIB, 0, 0)
|
|
//clear_all_ped_props(PLAYER_PED_ID())
|
|
set_ped_comp_item_current_sp(player_ped_id(), COMP_TYPE_PROPS, PROPS_HEAD_NONE, false)
|
|
|
|
|
|
clear_ped_tasks_immediately(player_ped_id())
|
|
set_entity_coords(player_ped_id(), <<279.0734, -1337.0759, 23.5545>>)
|
|
set_entity_heading(player_ped_id(), 227.5366)
|
|
SET_PED_STEALTH_MOVEMENT(player_ped_id(), true)
|
|
force_ped_motion_state(player_ped_id(), MS_STEALTHMODE_IDLE)
|
|
force_ped_ai_and_animation_update(player_ped_id())
|
|
add_ped_for_dialogue(scripted_speech, 0, player_ped_id(), "michael")
|
|
FORCE_ROOM_FOR_ENTITY(player_ped_id(), coroner_interior, get_hash_key("AutopsySmall"))
|
|
FORCE_ROOM_FOR_GAME_VIEWPORT(coroner_interior, get_hash_key("AutopsySmall"))
|
|
|
|
setup_enemy(cia_stealth)
|
|
cia_stealth.blip = create_blip_for_ped(cia_stealth.ped, true)
|
|
GIVE_WEAPON_COMPONENT_TO_PED(cia_stealth.ped, weapontype_combatpistol, WEAPONCOMPONENT_AT_PI_FLSH)
|
|
set_current_ped_weapon(cia_stealth.ped, weapontype_combatpistol, true)
|
|
STOP_PED_SPEAKING(cia_stealth.ped, true)
|
|
add_ped_for_dialogue(scripted_speech, ConvertSingleCharacter("6"), cia_stealth.ped, "CIA1")
|
|
fORCE_PED_MOTION_STATE(cia_stealth.ped, MS_aiming, TRUE)
|
|
cia_stealth_enemy_ai_system()
|
|
force_ped_ai_and_animation_update(cia_stealth.ped)
|
|
|
|
for i = 0 to count_of(bin_bag) - 1
|
|
|
|
bin_bag[i].obj = create_object_no_offset(bin_bag[i].model, bin_bag[i].pos)
|
|
set_entity_heading(bin_bag[i].obj, bin_bag[i].heading)
|
|
|
|
if i = 0
|
|
FORCE_ROOM_FOR_ENTITY(bin_bag[i].obj, get_interior_at_coords_with_type(<<277.2329, -1336.3568, 24.00>>, "V_coroner"), get_hash_key("AutopsySmall"))
|
|
elif i = 1
|
|
FORCE_ROOM_FOR_ENTITY(bin_bag[i].obj, get_interior_at_coords_with_type(<<249.00, -1372.3, 39.5>>, "V_coroner"), get_hash_key("topoff_mid"))
|
|
endif
|
|
|
|
endfor
|
|
|
|
bin[0].obj = create_object(bin[0].model, bin[0].pos)
|
|
set_entity_rotation(bin[0].obj, bin[0].rot)
|
|
freeze_entity_position(bin[0].obj, true)
|
|
|
|
setup_buddy(dead_body[0])
|
|
remove_blip(dead_body[0].blip)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_HEAD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_BERD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_HAIR, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_TORSO, 2, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_LEG, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_FEET, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_JBIB, 0, 0)
|
|
DISABLE_PED_INJURED_ON_GROUND_BEHAVIOUR(dead_body[0].ped)
|
|
set_ped_can_ragdoll(dead_body[0].ped, true)
|
|
RETAIN_ENTITY_IN_INTERIOR(dead_body[0].ped, get_interior_at_coords_with_type(<<292.205, -1345.025, 24.570>>, "V_Coroner"))
|
|
set_entity_load_collision_flag(dead_body[0].ped, true)
|
|
|
|
cutscene_pos = <<291.552, -1345.871, 24.57>>//24.62
|
|
cutscene_rot = <<0.000, 0.000, 147.000>>
|
|
|
|
task_play_anim_advanced(dead_body[0].ped, "missfbi1", "cpr_pumpchest_idle", cutscene_pos, cutscene_rot, INSTANT_BLEND_IN, normal_BLEND_OUT, -1, AF_ENDS_IN_DEAD_POSE | AF_OVERRIDE_PHYSICS | af_extract_initial_offset | AF_NOT_INTERRUPTABLE, 0.99)
|
|
force_ped_ai_and_animation_update(dead_body[0].ped)
|
|
|
|
|
|
setup_buddy(dead_body[1])
|
|
remove_blip(dead_body[1].blip)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_HEAD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_BERD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_HAIR, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_TORSO, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_LEG, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_FEET, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_JBIB, 0, 0)
|
|
DISABLE_PED_INJURED_ON_GROUND_BEHAVIOUR(dead_body[1].ped)
|
|
set_ped_can_ragdoll(dead_body[1].ped, true)
|
|
RETAIN_ENTITY_IN_INTERIOR(dead_body[1].ped, get_interior_at_coords_with_type(<<297.302, -1348.671, 24.570>>, "V_Coroner"))
|
|
set_entity_load_collision_flag(dead_body[1].ped, true)
|
|
|
|
cutscene_pos = <<296.702, -1349.621, 24.570>>
|
|
cutscene_rot = <<0.000, 0.000, 140.000>>
|
|
|
|
task_play_anim_advanced(dead_body[1].ped, "missfbi1", "cpr_pumpchest_idle", cutscene_pos, cutscene_rot, INSTANT_BLEND_IN, normal_BLEND_OUT, -1, AF_ENDS_IN_DEAD_POSE | AF_OVERRIDE_PHYSICS | af_extract_initial_offset | AF_NOT_INTERRUPTABLE, 0.99)
|
|
force_ped_ai_and_animation_update(dead_body[1].ped)
|
|
|
|
setup_enemy(doctor[1])
|
|
DISABLE_PED_INJURED_ON_GROUND_BEHAVIOUR(doctor[1].ped)
|
|
DISABLE_PED_PAIN_AUDIO(doctor[1].ped, true)
|
|
STOP_PED_SPEAKING(doctor[1].ped, true)
|
|
SET_PED_COMPONENT_VARIATION(doctor[1].ped, PED_COMP_HEAD, 1, 0)
|
|
SET_PED_COMPONENT_VARIATION(doctor[1].ped, PED_COMP_TORSO, 0, 1)
|
|
remove_blip(doctor[1].blip)
|
|
SET_PED_CAN_RAGDOLL(doctor[1].ped, TRUE)
|
|
|
|
//reception ped doctor.
|
|
setup_enemy(doctor[4])
|
|
remove_blip(doctor[4].blip)
|
|
set_ped_can_be_targetted(doctor[4].ped, false)
|
|
|
|
task_play_anim_advanced(doctor[1].ped, "Dead", "dead_c", <<278.835, -1336.046, 24.580>>, <<0.000, 0.000, 74.000>>, instant_blend_in, normal_blend_out, -1, AF_ENDS_IN_DEAD_POSE | AF_OVERRIDE_PHYSICS | af_extract_initial_offset | AF_NOT_INTERRUPTABLE, 0.99)
|
|
force_ped_ai_and_animation_update(doctor[1].ped)
|
|
|
|
if not replay_active
|
|
|
|
NEW_LOAD_SCENE_START(<<279.0734, -1337.0759, 23.5545>>, CONVERT_ROTATION_TO_DIRECTION_VECTOR(<<0.0, 0.0, 227.5366>>), 8.0)
|
|
|
|
while not IS_NEW_LOAD_SCENE_LOADED()
|
|
wait(0)
|
|
endwhile
|
|
|
|
NEW_LOAD_SCENE_STOP()
|
|
|
|
endif
|
|
|
|
trigger_music_event("FBI1_WAKE_UP_RT")
|
|
|
|
start_audio_scene("FBI_1_STEALTH_KILL_AGENT")
|
|
|
|
end_cutscene(false, 0, 0, false)
|
|
|
|
mission_flow = stealth_the_cia_officer
|
|
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(1, "stealth the cia guard")
|
|
|
|
endproc
|
|
|
|
proc load_trip_skip_data_2()
|
|
|
|
int i
|
|
|
|
if replay_active
|
|
start_replay_setup(<<294.4570, -1351.7913, 23.5344>>, 58.34, false)
|
|
endif
|
|
|
|
request_model(doctor[0].model)
|
|
request_model(doctor[2].model)
|
|
request_model(dead_body[0].model)
|
|
set_ped_model_is_suppressed(dead_body[0].model, true)
|
|
request_model(dead_body[1].model)
|
|
set_ped_model_is_suppressed(dead_body[1].model, true)
|
|
request_model(cia_enemy[0].model)
|
|
request_model(bin[0].model)
|
|
request_model(bin_bag[0].model)
|
|
|
|
request_anim_dict("missfbi1")//mini@cpr@char_b@cpr_def missfbi1
|
|
request_anim_dict("dead")
|
|
|
|
request_ambient_audio_bank("SCRIPT\\FBI_01_DMW_01")
|
|
request_ambient_audio_bank("SCRIPT\\FBI_01_DMW_02")
|
|
|
|
REQUEST_PTFX_ASSET()
|
|
|
|
set_building_state(BUILDINGNAME_IPL_CORONER_INTERIOR, BUILDINGSTATE_DESTROYED)
|
|
|
|
coroner_interior = get_interior_at_coords_with_type(<<279.9322, -1337.4902, 23.7419>>, "v_coroner")
|
|
|
|
while not is_valid_interior(coroner_interior)
|
|
coroner_interior = get_interior_at_coords_with_type(<<279.9322, -1337.4902, 23.7419>>, "v_coroner")
|
|
wait(0)
|
|
endwhile
|
|
|
|
pin_interior_in_memory(coroner_interior)
|
|
|
|
// SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_HEAD, 0, 0)
|
|
// SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_BERD, 0, 0)
|
|
// SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_HAIR, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_TORSO, 19, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_LEG, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_HAND, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_FEET, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_TEETH, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_DECL, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_JBIB, 0, 0)
|
|
|
|
// assisted_movement_request_route("coroner1")
|
|
assisted_movement_request_route("coroner2")
|
|
assisted_movement_request_route("coroner_stairs")
|
|
|
|
if replay_active
|
|
END_REPLAY_SETUP()
|
|
endif
|
|
|
|
while not has_model_loaded(doctor[0].model)
|
|
or not has_model_loaded(doctor[2].model)
|
|
or not has_model_loaded(dead_body[0].model)
|
|
or not has_model_loaded(dead_body[1].model)
|
|
or not has_model_loaded(cia_enemy[0].model)
|
|
or not has_model_loaded(bin[0].model)
|
|
or not has_model_loaded(bin_bag[0].model)
|
|
or not has_anim_dict_loaded("missfbi1")
|
|
or not has_anim_dict_loaded("dead")
|
|
or not request_ambient_audio_bank("SCRIPT\\FBI_01_DMW_01")
|
|
or not request_ambient_audio_bank("SCRIPT\\FBI_01_DMW_02")
|
|
or not has_ptfx_asset_loaded()
|
|
or not is_interior_ready(coroner_interior)
|
|
or not has_ped_preload_variation_data_finished(player_ped_id())
|
|
|
|
wait(0)
|
|
|
|
draw_rect(0.5, 0.5, 1, 1, 0, 0, 0, 255)
|
|
|
|
endwhile
|
|
|
|
//
|
|
// //lift doors
|
|
// set_state_of_closest_door_of_type(V_ILev_Cor_DoorLift01, <<248.9, -1371.0, 23.2>>, true, 0.0)
|
|
// set_state_of_closest_door_of_type(V_ILev_Cor_DoorLift02, <<247.6, -1369.9, 23.2>>, true, 0.0)
|
|
//
|
|
// //SET_LOCKED_UNSTREAMED_IN_DOOR_OF_TYPE(v_ilev_cor_doorglassa, <<285.58, -1345.97, 24.68>>, true, 0.0, 0.0, -1.0)
|
|
// set_state_of_closest_door_of_type(v_ilev_cor_doorglassa, <<285.58, -1345.97, 24.68>>, true, -1.0)
|
|
// set_state_of_closest_door_of_type(v_ilev_cor_doorglassa, <<285.58, -1345.97, 24.68>>, false, -1.0)
|
|
|
|
add_scenario_blocking_area(<<278.00, -1473.12, 100.00>>, <<222.50, -1243.38, -100.00>>)
|
|
|
|
clear_area(<<287.9576, -1345.7250, 23.2416>>, 300.00, true)
|
|
remove_decals_in_range(<<287.9576, -1345.7250, 23.2416>>, 300.00)
|
|
|
|
create_pickups()
|
|
|
|
clear_ped_tasks_immediately(player_ped_id())
|
|
set_entity_visible(player_ped_id(), true)
|
|
set_entity_coords(player_ped_id(), <<294.4570, -1351.7913, 23.5344>>)
|
|
set_entity_heading(player_ped_id(), 58.3410)
|
|
SET_PED_RESET_FLAG(PLAYER_PED_ID(), PRF_DisablePlayerAutoVaulting, TRUE)
|
|
SET_PED_USING_ACTION_MODE(player_ped_id(), true)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_HEAD, 0, 0)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_BERD, 0, 0)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_HAIR, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TORSO, 19, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_LEG, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_FEET, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_JBIB, 0, 0)
|
|
//clear_all_ped_props(PLAYER_PED_ID())
|
|
remove_player_ped_props(player_ped_id())
|
|
add_ped_for_dialogue(scripted_speech, 0, player_ped_id(), "michael")
|
|
FORCE_ROOM_FOR_ENTITY(player_ped_id(), coroner_interior, get_hash_key("BodyStorage"))
|
|
FORCE_ROOM_FOR_GAME_VIEWPORT(coroner_interior, get_hash_key("BodyStorage"))
|
|
|
|
//BLOCK_PLAYER_PED_WEAPON_STORE(CHAR_MICHAEL, TRUE)
|
|
remove_all_ped_weapons(player_ped_id())
|
|
|
|
if not has_ped_got_weapon(player_ped_id(), weapontype_combatpistol)
|
|
give_weapon_to_ped(player_ped_id(), weapontype_combatpistol, 50, true, true)
|
|
else
|
|
if get_ammo_in_ped_weapon(player_ped_id(), weapontype_combatpistol) < 50
|
|
set_ped_ammo(player_ped_id(), weapontype_combatpistol, 50)
|
|
endif
|
|
set_current_ped_weapon(player_ped_id(), weapontype_combatpistol, true)
|
|
endif
|
|
|
|
for i = 1 to count_of(bin_bag) - 1
|
|
|
|
bin_bag[i].obj = create_object_no_offset(bin_bag[i].model, bin_bag[i].pos)
|
|
set_entity_heading(bin_bag[i].obj, bin_bag[i].heading)
|
|
|
|
if i = 0
|
|
FORCE_ROOM_FOR_ENTITY(bin_bag[i].obj, get_interior_at_coords_with_type(<<277.2329, -1336.3568, 24.00>>, "V_coroner"), get_hash_key("AutopsySmall"))
|
|
elif i = 1
|
|
FORCE_ROOM_FOR_ENTITY(bin_bag[i].obj, get_interior_at_coords_with_type(<<249.00, -1372.3, 39.5>>, "V_coroner"), get_hash_key("topoff_mid"))
|
|
endif
|
|
|
|
endfor
|
|
|
|
bin[0].obj = create_object(bin[0].model, bin[0].pos)
|
|
set_entity_rotation(bin[0].obj, bin[0].rot)
|
|
freeze_entity_position(bin[0].obj, true)
|
|
|
|
if not replay_active
|
|
|
|
NEW_LOAD_SCENE_START(<<294.4570, -1351.7913, 23.5344>>, CONVERT_ROTATION_TO_DIRECTION_VECTOR(<<0.0, 0.0, 58.34>>), 8.0)
|
|
|
|
while not IS_NEW_LOAD_SCENE_LOADED()
|
|
wait(0)
|
|
endwhile
|
|
|
|
NEW_LOAD_SCENE_STOP()
|
|
|
|
endif
|
|
|
|
setup_buddy(dead_body[0])
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_HEAD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_BERD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_HAIR, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_TORSO, 2, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_LEG, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_FEET, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_JBIB, 0, 0)
|
|
DISABLE_PED_INJURED_ON_GROUND_BEHAVIOUR(dead_body[0].ped)
|
|
set_ped_can_ragdoll(dead_body[0].ped, true)
|
|
RETAIN_ENTITY_IN_INTERIOR(dead_body[0].ped, get_interior_at_coords_with_type(<<292.205, -1345.025, 24.570>>, "V_Coroner"))
|
|
set_entity_load_collision_flag(dead_body[0].ped, true)
|
|
|
|
cutscene_pos = <<291.552, -1345.871, 24.570>>
|
|
cutscene_rot = <<0.000, 0.000, 147.000>>
|
|
|
|
task_play_anim_advanced(dead_body[0].ped, "missfbi1", "cpr_pumpchest_idle", cutscene_pos, cutscene_rot, INSTANT_BLEND_IN, normal_BLEND_OUT, -1, AF_ENDS_IN_DEAD_POSE |AF_OVERRIDE_PHYSICS | af_extract_initial_offset | AF_NOT_INTERRUPTABLE, 0.99)
|
|
force_ped_ai_and_animation_update(dead_body[0].ped)
|
|
|
|
setup_buddy(dead_body[1])
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_HEAD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_BERD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_HAIR, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_TORSO, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_LEG, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_FEET, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_JBIB, 0, 0)
|
|
DISABLE_PED_INJURED_ON_GROUND_BEHAVIOUR(dead_body[1].ped)
|
|
set_ped_can_ragdoll(dead_body[1].ped, true)
|
|
RETAIN_ENTITY_IN_INTERIOR(dead_body[1].ped, get_interior_at_coords_with_type(<<297.302, -1348.671, 24.570>>, "V_Coroner"))
|
|
set_entity_load_collision_flag(dead_body[1].ped, true)
|
|
|
|
cutscene_pos = <<296.702, -1349.621, 24.570>>
|
|
cutscene_rot = <<0.000, 0.000, 140.000>>
|
|
|
|
task_play_anim_advanced(dead_body[1].ped, "missfbi1", "cpr_pumpchest_idle", cutscene_pos, cutscene_rot, INSTANT_BLEND_IN, normal_BLEND_OUT, -1, AF_ENDS_IN_DEAD_POSE | AF_OVERRIDE_PHYSICS | af_extract_initial_offset | AF_NOT_INTERRUPTABLE, 0.99)
|
|
force_ped_ai_and_animation_update(dead_body[1].ped)
|
|
|
|
|
|
setup_enemy(doctor[1])
|
|
DISABLE_PED_INJURED_ON_GROUND_BEHAVIOUR(doctor[1].ped)
|
|
DISABLE_PED_PAIN_AUDIO(doctor[1].ped, true)
|
|
STOP_PED_SPEAKING(doctor[1].ped, true)
|
|
SET_PED_COMPONENT_VARIATION(doctor[1].ped, PED_COMP_HEAD, 1, 0)
|
|
SET_PED_COMPONENT_VARIATION(doctor[1].ped, PED_COMP_TORSO, 0, 1)
|
|
remove_blip(doctor[1].blip)
|
|
SET_PED_CAN_RAGDOLL(doctor[1].ped, TRUE)
|
|
|
|
task_play_anim_advanced(doctor[1].ped, "Dead", "dead_c", <<278.835, -1336.046, 24.580>>, <<0.000, 0.000, 74.000>>, instant_blend_in, normal_blend_out, -1, AF_ENDS_IN_DEAD_POSE | AF_OVERRIDE_PHYSICS | af_extract_initial_offset | AF_NOT_INTERRUPTABLE, 0.99)
|
|
force_ped_ai_and_animation_update(doctor[1].ped)
|
|
|
|
|
|
// while not HAVE_ALL_STREAMING_REQUESTS_COMPLETED(player_ped_id())
|
|
// wait(0)
|
|
// endwhile
|
|
|
|
RELEASE_PED_PRELOAD_VARIATION_DATA(player_ped_id())
|
|
|
|
|
|
phone_call_system_status = 3
|
|
|
|
escape_blip = create_blip_for_coord(<<236.4304, -1357.7548, 38.5342>>)
|
|
|
|
trigger_alarm(true)
|
|
|
|
trigger_music_event("FBI1_SHOOTOUT_RT")
|
|
|
|
start_audio_scene("FBI_1_ESCAPE_BASE_SCENE")
|
|
|
|
end_cutscene(false, 0.0, 0.0, false)
|
|
|
|
// clear_prints()
|
|
// print_now("FBI1_God_7", default_god_text_time, 1)
|
|
// escape_building_text_printed = true
|
|
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(2, "Start of shootout")
|
|
|
|
mission_flow = shootout
|
|
|
|
endproc
|
|
|
|
proc load_trip_skip_data_3()
|
|
|
|
int i = 0
|
|
|
|
if replay_active
|
|
start_replay_setup(<<248.6566, -1366.2362, 23.5377>>, 90.17, false)
|
|
endif
|
|
|
|
request_model(doctor[0].model)
|
|
|
|
request_model(dead_body[0].model)
|
|
set_ped_model_is_suppressed(dead_body[0].model, true)
|
|
request_model(dead_body[1].model)
|
|
set_ped_model_is_suppressed(dead_body[1].model, true)
|
|
request_model(cia_enemy[0].model)
|
|
request_model(bin_bag[0].model)
|
|
request_model(bin[0].model)
|
|
|
|
request_anim_dict("missfbi1")//mini@cpr@char_b@cpr_def missfbi1
|
|
|
|
request_ambient_audio_bank("SCRIPT\\FBI_01_DMW_01")
|
|
request_ambient_audio_bank("SCRIPT\\FBI_01_DMW_02")
|
|
|
|
REQUEST_PTFX_ASSET()
|
|
|
|
set_building_state(BUILDINGNAME_IPL_CORONER_INTERIOR, BUILDINGSTATE_DESTROYED)
|
|
|
|
coroner_interior = get_interior_at_coords_with_type(<<279.9322, -1337.4902, 23.7419>>, "v_coroner")
|
|
|
|
while not is_valid_interior(coroner_interior)
|
|
coroner_interior = get_interior_at_coords_with_type(<<279.9322, -1337.4902, 23.7419>>, "v_coroner")
|
|
wait(0)
|
|
endwhile
|
|
|
|
pin_interior_in_memory(coroner_interior)
|
|
|
|
// assisted_movement_request_route("coroner1")
|
|
assisted_movement_request_route("coroner2")
|
|
assisted_movement_request_route("coroner_stairs")
|
|
|
|
// SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_HEAD, 0, 0)
|
|
// SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_BERD, 0, 0)
|
|
// SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_HAIR, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_TORSO, 19, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_LEG, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_HAND, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_FEET, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_TEETH, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_DECL, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_JBIB, 0, 0)
|
|
|
|
REQUEST_ACTION_MODE_ASSET("michael_ACTION")
|
|
|
|
if replay_active
|
|
END_REPLAY_SETUP()
|
|
endif
|
|
|
|
while not has_model_loaded(doctor[0].model)
|
|
or not has_model_loaded(dead_body[0].model)
|
|
or not has_model_loaded(dead_body[1].model)
|
|
or not has_model_loaded(cia_enemy[0].model)
|
|
or not has_model_loaded(bin[0].model)
|
|
or not has_model_loaded(bin_bag[0].model)
|
|
or not has_anim_dict_loaded("missfbi1")
|
|
or not request_ambient_audio_bank("SCRIPT\\FBI_01_DMW_01")
|
|
or not request_ambient_audio_bank("SCRIPT\\FBI_01_DMW_02")
|
|
or not has_ptfx_asset_loaded()
|
|
or not is_interior_ready(coroner_interior)
|
|
or not has_ped_preload_variation_data_finished(player_ped_id())
|
|
or not HAS_ACTION_MODE_ASSET_LOADED("michael_action")
|
|
|
|
wait(0)
|
|
|
|
endwhile
|
|
|
|
//lift doors
|
|
// set_state_of_closest_door_of_type(V_ILev_Cor_DoorLift01, <<248.9, -1371.0, 23.2>>, true, -1.0)
|
|
// set_state_of_closest_door_of_type(V_ILev_Cor_DoorLift02, <<247.6, -1369.9, 23.2>>, true, 1.0)
|
|
//
|
|
// set_state_of_closest_door_of_type(v_ilev_cor_firedoor, <<252.87, -1366.76, 29.67>>, true, 1.0)
|
|
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(fbi_door[8], -1.0, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(fbi_door[8], DOORSTATE_force_locked_this_frame, false, true)
|
|
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(fbi_door[9], 1.0, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(fbi_door[9], DOORSTATE_force_locked_this_frame, false, true)
|
|
|
|
add_scenario_blocking_area(<<278.00, -1473.12, 100.00>>, <<222.50, -1243.38, -100.00>>)//door enemy 13 runs through down stairs
|
|
|
|
clear_area(<<287.9576, -1345.7250, 23.2416>>, 300.00, true)
|
|
remove_decals_in_range(<<287.9576, -1345.7250, 23.2416>>, 300.00)
|
|
|
|
create_pickups()
|
|
|
|
clear_ped_tasks_immediately(player_ped_id())
|
|
set_entity_visible(player_ped_id(), true)
|
|
set_entity_coords(player_ped_id(), <<248.6566, -1366.2362, 23.5377>>)
|
|
set_entity_heading(player_ped_id(), 90.1748)
|
|
//setup_weapon_for_ped(player_ped_id(), weapontype_combatpistol, 50, true, true, false)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_HEAD, 0, 0)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_BERD, 0, 0)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_HAIR, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TORSO, 19, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_LEG, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_FEET, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_JBIB, 0, 0)
|
|
//clear_all_ped_props(PLAYER_PED_ID())
|
|
remove_player_ped_props(player_ped_id())
|
|
|
|
//This will restore the players weapons using the chached weapon data that was stored at the checkpoint.
|
|
remove_all_ped_weapons(player_ped_id())
|
|
SET_PED_WEAPONS(player_ped_id(), fbi1_player_stored_weapons, true)
|
|
|
|
setup_player_fail_weapon(player_ped_id(), weapontype_combatpistol, 50)
|
|
SET_PED_RESET_FLAG(PLAYER_PED_ID(), PRF_DisablePlayerAutoVaulting, TRUE)
|
|
SET_PED_USING_ACTION_MODE(player_ped_id(), true)
|
|
force_ped_motion_state(player_ped_id(), MS_ACTIONMODE_idle)
|
|
force_ped_ai_and_animation_update(player_ped_id())
|
|
SET_PED_USING_ACTION_MODE(player_ped_id(), true)
|
|
add_ped_for_dialogue(scripted_speech, 0, player_ped_id(), "michael")
|
|
FORCE_ROOM_FOR_ENTITY(PLAYER_PED_ID(), coroner_interior, get_hash_key("CorridorBottom"))
|
|
FORCE_ROOM_FOR_GAME_VIEWPORT(coroner_interior, get_hash_key("CorridorBottom"))
|
|
|
|
setup_buddy(dead_body[0])
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_HEAD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_BERD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_HAIR, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_TORSO, 2, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_LEG, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_FEET, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_JBIB, 0, 0)
|
|
DISABLE_PED_INJURED_ON_GROUND_BEHAVIOUR(dead_body[0].ped)
|
|
set_ped_can_ragdoll(dead_body[0].ped, true)
|
|
RETAIN_ENTITY_IN_INTERIOR(dead_body[0].ped, get_interior_at_coords_with_type(<<292.205, -1345.025, 24.570>>, "V_Coroner"))
|
|
set_entity_load_collision_flag(dead_body[0].ped, true)
|
|
|
|
cutscene_pos = <<291.552, -1345.871, 24.570>>
|
|
cutscene_rot = <<0.000, 0.000, 147.000>>
|
|
|
|
task_play_anim_advanced(dead_body[0].ped, "missfbi1", "cpr_pumpchest_idle", cutscene_pos, cutscene_rot, INSTANT_BLEND_IN, normal_BLEND_OUT, -1, AF_ENDS_IN_DEAD_POSE | AF_OVERRIDE_PHYSICS | af_extract_initial_offset | AF_NOT_INTERRUPTABLE, 0.99)
|
|
force_ped_ai_and_animation_update(dead_body[0].ped)
|
|
|
|
setup_buddy(dead_body[1])
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_HEAD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_BERD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_HAIR, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_TORSO, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_LEG, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_FEET, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_JBIB, 0, 0)
|
|
DISABLE_PED_INJURED_ON_GROUND_BEHAVIOUR(dead_body[1].ped)
|
|
set_ped_can_ragdoll(dead_body[1].ped, true)
|
|
RETAIN_ENTITY_IN_INTERIOR(dead_body[1].ped, get_interior_at_coords_with_type(<<297.302, -1348.671, 24.570>>, "V_Coroner"))
|
|
set_entity_load_collision_flag(dead_body[1].ped, true)
|
|
|
|
cutscene_pos = <<296.702, -1349.621, 24.570>>
|
|
cutscene_rot = <<0.000, 0.000, 140.000>>
|
|
task_play_anim_advanced(dead_body[1].ped, "missfbi1", "cpr_pumpchest_idle", cutscene_pos, cutscene_rot, INSTANT_BLEND_IN, normal_BLEND_OUT, -1, AF_ENDS_IN_DEAD_POSE | AF_OVERRIDE_PHYSICS | af_extract_initial_offset | AF_NOT_INTERRUPTABLE, 0.99)
|
|
force_ped_ai_and_animation_update(dead_body[1].ped)
|
|
|
|
setup_enemy(doctor[3])
|
|
remove_blip(doctor[3].blip)
|
|
set_ped_can_be_targetted(doctor[3].ped, false)
|
|
add_ped_for_dialogue(scripted_speech, ConvertSingleCharacter("D"), doctor[3].ped, "doctor1")
|
|
task_cower(doctor[3].ped, -1)
|
|
doctor_ai_status[3] = action_1_status
|
|
|
|
for i = 1 to count_of(bin_bag) - 1
|
|
|
|
bin_bag[i].obj = create_object_no_offset(bin_bag[i].model, bin_bag[i].pos)
|
|
set_entity_heading(bin_bag[i].obj, bin_bag[i].heading)
|
|
|
|
if i = 0
|
|
FORCE_ROOM_FOR_ENTITY(bin_bag[i].obj, get_interior_at_coords_with_type(<<277.2329, -1336.3568, 24.00>>, "V_coroner"), get_hash_key("AutopsySmall"))
|
|
elif i = 1
|
|
FORCE_ROOM_FOR_ENTITY(bin_bag[i].obj, get_interior_at_coords_with_type(<<249.00, -1372.3, 39.5>>, "V_coroner"), get_hash_key("topoff_mid"))
|
|
endif
|
|
|
|
endfor
|
|
|
|
bin[0].obj = create_object(bin[0].model, bin[0].pos)
|
|
set_entity_rotation(bin[0].obj, bin[0].rot)
|
|
freeze_entity_position(bin[0].obj, true)
|
|
|
|
wait(0)
|
|
|
|
while not HAVE_ALL_STREAMING_REQUESTS_COMPLETED(player_ped_id())
|
|
wait(0)
|
|
endwhile
|
|
|
|
|
|
escape_blip = create_blip_for_coord(<<236.4304, -1357.7548, 38.5342>>)
|
|
|
|
special_ability_help_text_system_status = 3 //deactivates help text
|
|
|
|
fbi1_master_controller_status = 2
|
|
|
|
phone_call_system_status = 3
|
|
|
|
music_event_system_status = 2
|
|
|
|
trigger_alarm(true)
|
|
|
|
trigger_music_event("FBI1_SHOOTOUT_HALFWAY_RT")
|
|
|
|
start_audio_scene("FBI_1_ESCAPE_BASE_SCENE")
|
|
|
|
end_cutscene(false, 0.0, 0.0, false)
|
|
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(3, "half way through shootout")
|
|
|
|
mission_flow = shootout
|
|
|
|
endproc
|
|
|
|
proc load_trip_skip_data_4()
|
|
|
|
int i = 0
|
|
|
|
if replay_active
|
|
start_replay_setup(<<235.5931, -1354.1631, 29.5508>>, 34.39)
|
|
endif
|
|
|
|
request_model(franklin.model)
|
|
request_model(cia_enemy_outside[1].model)
|
|
request_model(cia_enemy_outside[3].model)
|
|
|
|
request_model(ambient_car[0].model)
|
|
request_model(ambient_car[1].model)
|
|
request_model(police_car[0].model)
|
|
request_model(franklins_car.model)
|
|
set_vehicle_model_is_suppressed(franklins_car.model, true)
|
|
|
|
request_model(bin[0].model)
|
|
|
|
request_anim_dict("MISSFBI1LEADINOUTFBI_1_EXT")
|
|
request_anim_dict("missfbi1")//mini@cpr@char_b@cpr_def missfbi1
|
|
|
|
request_vehicle_recording(police_car[0].recording_number, "lkfbi1")
|
|
|
|
//request_ambient_audio_bank("SCRIPT\\Alarms")
|
|
|
|
REQUEST_PTFX_ASSET()
|
|
|
|
// SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_HEAD, 0, 0)
|
|
// SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_BERD, 0, 0)
|
|
// SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_HAIR, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_TORSO, 19, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_LEG, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_HAND, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_FEET, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_TEETH, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_DECL, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_JBIB, 0, 0)
|
|
|
|
if replay_active
|
|
END_REPLAY_SETUP()
|
|
endif
|
|
|
|
while not has_model_loaded(franklin.model)
|
|
or not has_model_loaded(cia_enemy_outside[1].model)
|
|
or not has_model_loaded(cia_enemy_outside[3].model)
|
|
or not has_model_loaded(ambient_car[0].model)
|
|
or not has_model_loaded(ambient_car[1].model)
|
|
or not has_model_loaded(police_car[0].model)
|
|
or not has_model_loaded(franklins_car.model)
|
|
or not has_model_loaded(bin[0].model)
|
|
or not has_anim_dict_loaded("MISSFBI1LEADINOUTFBI_1_EXT")
|
|
or not has_anim_dict_loaded("missfbi1")
|
|
or not has_vehicle_recording_been_loaded(police_car[0].recording_number, "lkfbi1")
|
|
or not has_ptfx_asset_loaded()
|
|
or not has_ped_preload_variation_data_finished(player_ped_id())
|
|
|
|
wait(0)
|
|
|
|
endwhile
|
|
|
|
clear_area(<<287.9576, -1345.7250, 23.2416>>, 300.00, true)
|
|
|
|
DISTANT_COP_CAR_SIRENS(true)
|
|
|
|
clear_ped_tasks_immediately(player_ped_id())
|
|
set_entity_coords(player_ped_id(), <<235.5931, -1354.1631, 29.5508>>)
|
|
set_entity_heading(player_ped_id(), 34.3910)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_HEAD, 0, 0)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_BERD, 0, 0)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_HAIR, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TORSO, 19, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_LEG, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_FEET, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_JBIB, 0, 0)
|
|
//clear_all_ped_props(PLAYER_PED_ID())
|
|
remove_player_ped_props(player_ped_id())
|
|
|
|
remove_all_ped_weapons(player_ped_id())
|
|
SET_PED_WEAPONS(player_ped_id(), fbi1_player_stored_weapons, true)
|
|
|
|
add_ped_for_dialogue(scripted_speech, 0, player_ped_id(), "michael")
|
|
|
|
bin[0].obj = create_object(bin[0].model, bin[0].pos)
|
|
set_entity_rotation(bin[0].obj, bin[0].rot)
|
|
freeze_entity_position(bin[0].obj, true)
|
|
|
|
for i = 0 to count_of(ambient_car) - 1
|
|
ambient_car[i].veh = create_vehicle(ambient_car[i].model, ambient_car[i].pos, ambient_car[i].heading)
|
|
set_vehicle_as_no_longer_needed(ambient_car[i].veh)
|
|
set_model_as_no_longer_needed(ambient_car[i].model)
|
|
endfor
|
|
|
|
if not replay_active
|
|
load_scene(get_entity_coords(player_ped_id()))
|
|
endif
|
|
|
|
set_max_wanted_level(3)
|
|
set_create_random_cops(false)
|
|
set_wanted_level_multiplier(0.5)
|
|
|
|
set_player_wanted_level(player_id(), 3)
|
|
set_player_wanted_level_now(player_id())
|
|
sET_WANTED_LEVEL_DIFFICULTY(player_id(), 0)
|
|
SET_ALL_RANDOM_PEDS_FLEE(player_id(), true)
|
|
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_OPEN(FBI1_COP_LOSS_TIME)
|
|
|
|
|
|
while not HAVE_ALL_STREAMING_REQUESTS_COMPLETED(player_ped_id())
|
|
wait(0)
|
|
endwhile
|
|
|
|
//setup_radio_station()
|
|
|
|
special_ability_help_text_system_status = 3 //deactivates help text
|
|
|
|
end_cutscene()
|
|
|
|
trigger_music_event("FBI1_OUTSIDE_CORONERS_RT")
|
|
|
|
start_audio_scene("FBI_1_LOSE_COPS")
|
|
|
|
print_now("LOSE_WANTED", default_god_text_time, 1)
|
|
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(4, "outside coroners escape police", true)
|
|
|
|
mission_flow = get_to_hills
|
|
|
|
SET_ALL_RANDOM_PEDS_FLEE(player_id(), true)
|
|
endproc
|
|
|
|
proc load_trip_skip_data_5()
|
|
|
|
if replay_active
|
|
start_replay_setup(<<1612.0714, -1943.6034, 100.9448>>, 153.72)
|
|
endif
|
|
|
|
request_model(get_player_ped_model(char_michael))
|
|
request_model(ambient_car[0].model)
|
|
request_model(franklins_car.model)
|
|
set_vehicle_model_is_suppressed(franklins_car.model, true)
|
|
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_TORSO, 19, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_LEG, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_HAND, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_FEET, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_TEETH, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_DECL, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_JBIB, 0, 0)
|
|
|
|
if replay_active
|
|
END_REPLAY_SETUP()
|
|
endif
|
|
|
|
while not has_model_loaded(get_player_ped_model(char_michael))
|
|
or not has_model_loaded(ambient_car[0].model)
|
|
or not has_model_loaded(franklins_car.model)
|
|
or not has_ped_preload_variation_data_finished(player_ped_id())
|
|
|
|
wait(0)
|
|
|
|
endwhile
|
|
|
|
clear_area(<<1612.0714, -1943.6034, 100.9448>>, 1000, true)
|
|
|
|
set_entity_coords(player_ped_id(), <<1612.0714, -1943.6034, 100.9448>>)
|
|
set_entity_heading(player_ped_id(), 153.7002)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TORSO, 19, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_LEG, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_FEET, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_JBIB, 0, 0)
|
|
//clear_all_ped_props(PLAYER_PED_ID())
|
|
remove_player_ped_props(player_ped_id())
|
|
add_ped_for_dialogue(scripted_speech, 0, player_ped_id(), "michael")
|
|
|
|
ambient_car[0].veh = create_vehicle(ambient_car[0].model, <<1616.2025, -1933.7650, 100.7450>>, 65.3292)
|
|
set_vehicle_on_ground_properly(ambient_car[0].veh)
|
|
|
|
CREATE_PLAYER_VEHICLE(franklins_car.veh, CHAR_FRANKLIN, franklins_car.pos, franklins_car.heading, TRUE, VEHICLE_TYPE_BIKE)
|
|
|
|
|
|
request_cutscene("FBI_1_EXT")
|
|
|
|
while not has_cutscene_loaded()
|
|
|
|
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("michael", PLAYER_PED_ID())
|
|
|
|
wait(0)
|
|
|
|
endwhile
|
|
|
|
|
|
if not replay_active
|
|
|
|
NEW_LOAD_SCENE_START(<<1612.0714, -1943.6034, 100.9448>>, CONVERT_ROTATION_TO_DIRECTION_VECTOR(<<0.0, 0.0, 153.70>>), 100.0)
|
|
|
|
while not IS_NEW_LOAD_SCENE_LOADED()
|
|
wait(0)
|
|
endwhile
|
|
|
|
NEW_LOAD_SCENE_STOP()
|
|
|
|
endif
|
|
|
|
|
|
|
|
SET_SCRIPTS_SAFE_FOR_CUTSCENE(true)
|
|
|
|
start_cutscene()
|
|
|
|
|
|
while not is_cutscene_playing()
|
|
|
|
wait(0)
|
|
|
|
endwhile
|
|
|
|
|
|
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<1629.403, -1946.552, 91.196>>, <<1571.303, -1946.552, 107.096>>, 62.100, <<1616.2025, -1933.7650, 100.7450>>, 65.3292, <<15.0, 15.0, 15.0>>)//, false)
|
|
set_players_last_vehicle_to_vehicle_gen(<<1616.2025, -1933.7650, 100.7450>>, 65.3292, true)
|
|
|
|
SET_AMBIENT_VEHICLE_RANGE_MULTIPLIER_THIS_FRAME(2.0)
|
|
|
|
original_time = get_game_timer()
|
|
|
|
get_to_hills_status = 5
|
|
|
|
mission_flow = get_to_hills
|
|
|
|
do_screen_fade_in(default_fade_time)
|
|
|
|
endproc
|
|
|
|
|
|
proc remove_all_blips()
|
|
|
|
int i = 0
|
|
|
|
for i = 0 to count_of(bin_bag) - 1
|
|
if does_blip_exist(bin_bag[i].blip)
|
|
remove_blip(bin_bag[i].blip)
|
|
endif
|
|
endfor
|
|
|
|
if does_blip_exist(escape_blip)
|
|
remove_blip(escape_blip)
|
|
endif
|
|
|
|
for i = 0 to count_of(dead_body) - 1
|
|
if does_blip_exist(dead_body[i].blip)
|
|
remove_blip(dead_body[i].blip)
|
|
endif
|
|
endfor
|
|
|
|
for i = 0 to count_Of(cia_enemy) - 1
|
|
if does_blip_exist(cia_enemy[i].blip)
|
|
remove_blip(cia_enemy[i].blip)
|
|
endif
|
|
CLEANUP_AI_PED_BLIP(cia_enemy[i].blip_2)
|
|
endfor
|
|
|
|
for i = 0 to count_Of(cia_enemy_top_floor) - 1
|
|
if does_blip_exist(cia_enemy_top_floor[i].blip)
|
|
remove_blip(cia_enemy_top_floor[i].blip)
|
|
endif
|
|
CLEANUP_AI_PED_BLIP(cia_enemy_top_floor[i].blip_2)
|
|
endfor
|
|
|
|
endproc
|
|
|
|
|
|
proc setup_mission_fail()
|
|
|
|
MISSION_FLOW_MISSION_FAILED_WITH_REASON(mission_failed_text)
|
|
|
|
remove_all_blips()
|
|
|
|
//fail_time = get_game_timer()
|
|
|
|
trigger_music_event("FBI1_DEAD")
|
|
|
|
stop_mission_fail_checks = true
|
|
|
|
mission_flow = mission_fail_stage
|
|
|
|
endproc
|
|
|
|
func bool mission_fail_checks()
|
|
|
|
switch mission_flow
|
|
|
|
case stealth_cutscene
|
|
|
|
if operating_table_fail
|
|
|
|
mission_failed_text = "FBI1_fail_3"
|
|
|
|
return true
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case get_to_locker
|
|
|
|
// if get_to_locker_status < 2
|
|
//
|
|
// if fail_time = 0
|
|
// if not is_ped_in_specific_room(player_ped_id(), <<279.1091, -1337.4714, 24.0>>, "AutopsySmall")
|
|
// fail_time = get_game_timer()
|
|
// endif
|
|
// else
|
|
|
|
// if lk_timer(fail_time, 90000)
|
|
//
|
|
// trigger_alarm(true)
|
|
//
|
|
// mission_failed_text = "FBI1_fail_2"
|
|
//
|
|
// return true
|
|
//
|
|
// endif
|
|
// endif
|
|
// endif
|
|
|
|
break
|
|
|
|
case stealth_the_cia_officer
|
|
|
|
if not is_ped_injured(cia_stealth.ped)
|
|
|
|
if cia_stealth_enemy_ai_system_status >= 22
|
|
|
|
if lk_timer(original_time, 12000)
|
|
|
|
START_ALARM("FBI_01_MORGUE_ALARMS", true)
|
|
|
|
mission_failed_text = "FBI1_fail_2"
|
|
|
|
return true
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
// if lk_timer(fail_time, 90000)
|
|
//
|
|
// trigger_alarm(true)
|
|
//
|
|
// //makes cia stealth enemy attack the player.
|
|
// if not is_ped_injured(cia_stealth.ped)
|
|
// set_blocking_of_non_temporary_events(cia_stealth.ped, false)
|
|
// task_combat_ped(cia_stealth.ped, player_ped_id())
|
|
// endif
|
|
//
|
|
// mission_failed_text = "FBI1_fail_2"
|
|
//
|
|
// return true
|
|
//
|
|
// endif
|
|
|
|
break
|
|
|
|
case find_bodies
|
|
|
|
// if lk_timer(fail_time, 90000)
|
|
//
|
|
// trigger_alarm(true)
|
|
//
|
|
// mission_failed_text = "FBI1_fail_2"
|
|
//
|
|
// return true
|
|
//
|
|
// endif
|
|
|
|
break
|
|
|
|
case shootout
|
|
|
|
|
|
break
|
|
|
|
case escape_cutscene
|
|
|
|
break
|
|
|
|
case get_to_hills
|
|
|
|
if mission_ped_injured(franklin.ped)
|
|
mission_failed_text = "FBI1_fail_0"
|
|
return true
|
|
endif
|
|
|
|
if get_player_wanted_level(player_id()) > 0
|
|
if does_entity_exist(franklin.ped)
|
|
if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(franklin.ped)) < 45.00
|
|
if is_entity_on_screen(franklin.ped)
|
|
mission_failed_text = "FBI1_fail_1"
|
|
return true
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
proc remove_all_mission_assets()
|
|
|
|
int i = 0
|
|
|
|
if IS_CUTSCENE_PLAYING()
|
|
STOP_CUTSCENE()
|
|
else
|
|
REMOVE_CUTSCENE()
|
|
endif
|
|
|
|
REMOVE_CUTSCENE()
|
|
|
|
while is_cutscene_active()
|
|
wait(0)
|
|
endwhile
|
|
|
|
//REMOVE_CUTSCENE()
|
|
|
|
release_mission_audio_bank()
|
|
|
|
trigger_music_event("FBI1_DEAD")
|
|
|
|
stop_audio_scenes()
|
|
|
|
if zip_sound_activated
|
|
if not has_sound_finished(zip_sound)
|
|
stop_sound(zip_sound)
|
|
endif
|
|
endif
|
|
|
|
SET_SCRIPT_GFX_DRAW_ORDER(gfx_order_after_hud)
|
|
SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(false)
|
|
|
|
disable_cellphone(false)
|
|
|
|
DISABLE_CHEAT(CHEAT_TYPE_GIVE_WEAPONS, false)
|
|
|
|
REPLAY_CANCEL_EVENT()
|
|
|
|
clear_player_wanted_level(player_id())
|
|
|
|
//BLOCK_PLAYER_PED_WEAPON_STORE(CHAR_MICHAEL, FALSE)
|
|
|
|
//RESTORE_PLAYER_PED_VARIATIONS(PLAYER_PED_ID())
|
|
set_entity_visible(player_ped_id(), true)
|
|
SET_PED_STEALTH_MOVEMENT(player_ped_id(), false)
|
|
SET_PED_USING_ACTION_MODE(player_ped_id(), false)
|
|
|
|
clear_area(<<287.9576, -1345.7250, 23.2416>>, 300.00, true)
|
|
remove_decals_in_range(<<287.9576, -1345.7250, 23.2416>>, 300.00)
|
|
|
|
clear_ped_tasks_immediately(player_ped_id())
|
|
|
|
end_cutscene_no_fade()
|
|
|
|
remove_all_blips()
|
|
|
|
// if DOES_OBJECT_OF_TYPE_EXIST_AT_COORDS(<<264.77, -1345.87, 24.68>>, 1.0, v_ilev_cor_doorglassb)
|
|
// set_state_of_closest_door_of_type(v_ilev_cor_doorglassb, <<264.77, -1345.87, 24.68>>, false, 0.0)
|
|
// set_state_of_closest_door_of_type(v_ilev_cor_doorglassa, <<267.43, -1343.90, 24.68>>, false, 0.0)
|
|
// endif
|
|
|
|
if DOES_OBJECT_OF_TYPE_EXIST_AT_COORDS(<<252.69, -1361.46, 24.68>>, 1.0, v_ilev_cor_doorglassb)
|
|
set_state_of_closest_door_of_type(v_ilev_cor_doorglassb, <<252.69, -1361.46, 24.68>>, false, 0.0)
|
|
set_state_of_closest_door_of_type(v_ilev_cor_doorglassa, <<254.34, -1359.49, 24.68>>, false, 0.0)
|
|
endif
|
|
|
|
if DOES_OBJECT_OF_TYPE_EXIST_AT_COORDS(<<252.87, -1366.76, 24.55>>, 1.0, v_ilev_cor_firedoor)
|
|
set_state_of_closest_door_of_type(v_ilev_cor_firedoor, <<252.87, -1366.76, 24.55>>, false, 0.0)
|
|
set_state_of_closest_door_of_type(v_ilev_cor_firedoor, <<251.1, -1365.27, 24.55>>, false, 0.0)
|
|
endif
|
|
|
|
// for i = 0 to count_of(cia_enemy_cover_point) - 1
|
|
// remove_cover_point(cia_enemy_cover_point[i])
|
|
// endfor
|
|
//
|
|
// for i = 0 to count_of(cia_enemy_top_floor_cover_point) - 1
|
|
// remove_cover_point(cia_enemy_top_floor_cover_point[i])
|
|
// endfor
|
|
|
|
// for i = 0 to count_of(alarm_sound) - 1
|
|
// if not has_sound_finished(alarm_sound[i])
|
|
// stop_sound(alarm_sound[i])
|
|
// endif
|
|
// endfor
|
|
|
|
stop_alarm("FBI_01_MORGUE_ALARMS", true)
|
|
|
|
for i = 0 to count_of(doctor) - 1
|
|
if does_entity_exist(doctor[i].ped)
|
|
delete_ped(doctor[i].ped)
|
|
set_model_as_no_longer_needed(doctor[i].model)
|
|
endif
|
|
endfor
|
|
|
|
for i = 0 to count_of(dead_body) - 1
|
|
if does_entity_exist(dead_body[i].ped)
|
|
delete_ped(dead_body[i].ped)
|
|
set_model_as_no_longer_needed(dead_body[i].model)
|
|
endif
|
|
endfor
|
|
|
|
if does_entity_exist(cia_stealth.ped)
|
|
delete_ped(cia_stealth.ped)
|
|
set_model_as_no_longer_needed(cia_stealth.model)
|
|
endif
|
|
|
|
for i = 0 to count_Of(cia_enemy) - 1
|
|
if does_entity_exist(cia_enemy[i].ped)
|
|
delete_ped(cia_enemy[i].ped)
|
|
set_model_as_no_longer_needed(cia_enemy[i].model)
|
|
endif
|
|
endfor
|
|
|
|
for i = 0 to count_Of(cia_enemy_top_floor) - 1
|
|
if does_entity_exist(cia_enemy_top_floor[i].ped)
|
|
delete_ped(cia_enemy_top_floor[i].ped)
|
|
set_model_as_no_longer_needed(cia_enemy_top_floor[i].model)
|
|
endif
|
|
endfor
|
|
|
|
for i = 0 to count_of(cia_enemy_outside) - 1
|
|
if does_entity_exist(cia_enemy_outside[i].ped)
|
|
delete_ped(cia_enemy_outside[i].ped)
|
|
set_model_as_no_longer_needed(cia_enemy_outside[i].model)
|
|
endif
|
|
endfor
|
|
|
|
if does_entity_exist(franklin.ped)
|
|
delete_ped(franklin.ped)
|
|
set_model_as_no_longer_needed(franklin.model)
|
|
endif
|
|
|
|
for i = 0 to count_of(bin_bag) - 1
|
|
if does_entity_exist(bin_bag[i].obj)
|
|
delete_object(bin_bag[i].obj)
|
|
set_model_as_no_longer_needed(bin_bag[i].model)
|
|
endif
|
|
endfor
|
|
|
|
if does_entity_exist(clip_board.obj)
|
|
set_object_as_no_longer_needed(clip_board.obj)
|
|
set_model_as_no_longer_needed(clip_board.model)
|
|
endif
|
|
|
|
if does_entity_exist(pen.obj)
|
|
set_object_as_no_longer_needed(pen.obj)
|
|
set_model_as_no_longer_needed(pen.model)
|
|
endif
|
|
|
|
for i = 0 to count_of(bin) - 1
|
|
if does_entity_exist(bin[i].obj)
|
|
delete_object(bin[i].obj)
|
|
endif
|
|
set_model_as_no_longer_needed(bin[i].model)
|
|
endfor
|
|
|
|
for i = 0 to count_of(bin) - 1
|
|
|
|
if does_blip_exist(bin_bag[i].blip)
|
|
remove_blip(bin_bag[i].blip)
|
|
endif
|
|
|
|
endfor
|
|
|
|
for i = 0 to count_of(ambient_car) - 1
|
|
if does_entity_exist(ambient_car[i].veh)
|
|
delete_vehicle(ambient_car[i].veh)
|
|
endif
|
|
set_model_as_no_longer_needed(ambient_car[i].model)
|
|
endfor
|
|
|
|
for i = 0 to count_of(police_car) - 1
|
|
if does_entity_exist(police_car[i].veh)
|
|
delete_vehicle(police_car[i].veh)
|
|
endif
|
|
set_model_as_no_longer_needed(police_car[i].model)
|
|
endfor
|
|
|
|
reset_glass_window()
|
|
|
|
remove_all_mission_doors()
|
|
|
|
remove_pickups()
|
|
|
|
stop_stream()
|
|
|
|
remove_anim_dict("missfbi1")
|
|
remove_anim_dict("move_crouch_proto")
|
|
REMOVE_STEALTH_MODE_ASSET("MICHAEL_ACTION")
|
|
|
|
remove_waypoint_recording("fbi1_0")
|
|
|
|
// if does_entity_exist(window.obj)
|
|
// set_object_as_no_longer_needed(window.obj)
|
|
// endif
|
|
|
|
CLEAR_TRIGGERED_LABELS()
|
|
|
|
endproc
|
|
|
|
|
|
proc skip_system()
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
dont_do_j_skip(locates_data)
|
|
|
|
if is_keyboard_key_just_pressed(key_j)
|
|
|
|
switch mission_flow
|
|
|
|
case intro_mocap
|
|
|
|
if is_cutscene_playing()
|
|
stop_cutscene()
|
|
endif
|
|
|
|
break
|
|
|
|
case stealth_cutscene
|
|
|
|
if is_cutscene_playing()
|
|
stop_cutscene()
|
|
else
|
|
remove_cutscene()
|
|
endif
|
|
|
|
fbi1_stealth_cutscene_status = 22
|
|
|
|
break
|
|
|
|
case get_to_locker
|
|
|
|
set_entity_coords(player_ped_id(), <<274.9483, -1337.9481, 23.5377>>)
|
|
|
|
break
|
|
|
|
case stealth_the_cia_officer
|
|
|
|
if not is_ped_injured(cia_stealth.ped)
|
|
set_entity_health(cia_stealth.ped, 2)
|
|
endif
|
|
|
|
set_entity_coords(player_ped_id(), <<287.6915, -1346.0591, 23.5377>>)
|
|
|
|
break
|
|
|
|
case find_bodies
|
|
|
|
remove_all_mission_assets()
|
|
|
|
load_trip_skip_data_2()
|
|
|
|
break
|
|
|
|
case shootout
|
|
|
|
switch fbi1_master_controller_status
|
|
|
|
case 0
|
|
case 1
|
|
|
|
|
|
clear_ped_tasks_immediately(player_ped_id())
|
|
set_entity_coords(player_ped_id(), <<244.9275, -1365.0420, 23.2391>>)
|
|
set_entity_heading(player_ped_id(), 134.7274)
|
|
|
|
activate_elevator_door_system = true
|
|
|
|
fbi1_master_controller_status = 2
|
|
|
|
break
|
|
|
|
case 2
|
|
case 3
|
|
case 4
|
|
|
|
remove_all_mission_assets()
|
|
|
|
if not does_blip_exist(escape_blip)
|
|
escape_blip = create_blip_for_coord(<<236.4304, -1357.7548, 38.5342>>)
|
|
endif
|
|
|
|
set_entity_coords(player_ped_id(), <<240.0, -1362.1, 38.5342>>)
|
|
set_entity_heading(player_ped_id(), 45.6778)
|
|
fbi1_master_controller_status = 5
|
|
|
|
break
|
|
|
|
case 5
|
|
case 6
|
|
case 7
|
|
|
|
if does_entity_exist(window.obj)
|
|
|
|
|
|
mission_flow = escape_cutscene
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
break
|
|
|
|
case escape_cutscene
|
|
|
|
if fbi1_escape_cutscene_status >= 3
|
|
|
|
remove_all_mission_assets()
|
|
|
|
initialise_mission_variables()
|
|
|
|
launch_mission_stage_menu_status = 4
|
|
|
|
mission_flow = load_stage_selector_assets
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case get_to_hills
|
|
|
|
if is_cutscene_playing()
|
|
|
|
stop_cutscene()
|
|
|
|
else
|
|
|
|
clear_player_wanted_level(player_id())
|
|
|
|
clear_ped_tasks_immediately(player_ped_id())
|
|
set_entity_coords(player_ped_id(), <<1593.3832, -1934.3777, 98.6576>>)
|
|
set_entity_heading(player_ped_id(), 134.7274)
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
elif is_keyboard_key_just_pressed(key_p)
|
|
|
|
switch mission_flow
|
|
|
|
|
|
case stealth_cutscene
|
|
case get_to_locker
|
|
case find_bodies
|
|
case stealth_the_cia_officer
|
|
|
|
remove_all_mission_assets()
|
|
mission_flow = load_stage_selector_assets
|
|
launch_mission_stage_menu_status = 0
|
|
|
|
break
|
|
|
|
case shootout
|
|
|
|
remove_all_mission_assets()
|
|
mission_flow = load_stage_selector_assets
|
|
|
|
if (get_game_timer() - p_skip_time) > 3000
|
|
launch_mission_stage_menu_status = 1
|
|
else
|
|
launch_mission_stage_menu_status = 0
|
|
endif
|
|
|
|
p_skip_time = get_game_timer()
|
|
|
|
break
|
|
|
|
case escape_cutscene
|
|
|
|
remove_all_mission_assets()
|
|
mission_flow = load_stage_selector_assets
|
|
|
|
if (get_game_timer() - p_skip_time) > 3000
|
|
launch_mission_stage_menu_status = 3
|
|
else
|
|
launch_mission_stage_menu_status = 2
|
|
endif
|
|
|
|
p_skip_time = get_game_timer()
|
|
|
|
break
|
|
|
|
case get_to_hills
|
|
|
|
remove_all_mission_assets()
|
|
mission_flow = load_stage_selector_assets
|
|
|
|
if (get_game_timer() - p_skip_time) > 3000
|
|
launch_mission_stage_menu_status = 4
|
|
else
|
|
launch_mission_stage_menu_status = 3
|
|
endif
|
|
|
|
p_skip_time = get_game_timer()
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
endif
|
|
|
|
if LAUNCH_MISSION_STAGE_MENU(menu_stage_selector, menu_return_stage)
|
|
|
|
remove_all_mission_assets()
|
|
|
|
initialise_mission_variables()
|
|
|
|
launch_mission_stage_menu_status = menu_return_stage
|
|
|
|
mission_flow = load_stage_selector_assets
|
|
endif
|
|
#endif
|
|
|
|
endproc
|
|
|
|
proc fbi1_intro_mocap()
|
|
|
|
switch intro_mocap_status
|
|
|
|
case 0
|
|
|
|
REQUEST_CUTSCENE_WITH_PLAYBACK_LIST("fbi_1_int", CS_SECTION_2|CS_SECTION_3|CS_SECTION_4|CS_SECTION_5|CS_SECTION_6)
|
|
|
|
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("michael", PLAYER_PED_ID())
|
|
|
|
if has_cutscene_loaded()
|
|
|
|
//grabs dave from ben's lead in anims
|
|
if does_entity_exist(g_sTriggerSceneAssets.ped[0])
|
|
|
|
dave.ped = g_sTriggerSceneAssets.ped[0]
|
|
|
|
set_entity_as_mission_entity(dave.ped, true, true)
|
|
|
|
register_entity_for_cutscene(dave.ped, "Dave_FBI", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
|
|
|
|
endif
|
|
|
|
SET_SCRIPTS_SAFE_FOR_CUTSCENE(true)
|
|
|
|
MISSION_FLOW_RELEASE_TRIGGER_SCENE_ASSETS(SP_MISSION_FBI_1)
|
|
|
|
start_cutscene(CUTSCENE_SUPPRESS_FP_TRANSITION_FLASH)
|
|
|
|
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
|
|
|
|
SET_CUTSCENE_FADE_VALUES(false, false, true)
|
|
|
|
intro_mocap_status++
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
if is_cutscene_playing()
|
|
|
|
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<-389.924, 1116.777, 324.517>>, <<-472.317, 1138.854, 340.917>>, 148.500, <<-410.9237, 1174.4790, 324.6415>>, 253.2136, <<15.0, 15.0, 15.0>>)//, false)
|
|
set_players_last_vehicle_to_vehicle_gen(<<-410.9237, 1174.4790, 324.6415>>, 253.2136)
|
|
|
|
clear_area(get_entity_coords(player_ped_id()), 1000, true)
|
|
|
|
intro_mocap_status++
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
printint(get_cutscene_time())
|
|
printnl()
|
|
|
|
if not intro_mocap_shake_pad
|
|
if get_cutscene_time() >= 133861
|
|
SET_PAD_CAN_SHAKE_DURING_CUTSCENE(true)
|
|
SET_CONTROL_SHAKE(PLAYER_CONTROL, 1000, 200)
|
|
intro_mocap_shake_pad = true
|
|
endif
|
|
endif
|
|
|
|
if not is_cutscene_active()
|
|
|
|
REPLAY_STOP_EVENT()
|
|
|
|
load_normal_start_of_mission()
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
endproc
|
|
|
|
|
|
float cam_speed = 0.5
|
|
FLOAT fMinYChange = 55.00
|
|
FLOAT fMaxYChange = 67.4
|
|
FLOAT fMinXChange = -139.00
|
|
FLOAT fMaxXChange = -119.00
|
|
|
|
vector current_cam_rot = <<63.400543,-0.000000,-129.389664>>
|
|
|
|
proc interactive_cutscene_cam()
|
|
|
|
switch interactive_cutscene_cam_status
|
|
|
|
case 0
|
|
|
|
if does_cam_exist(camera_a)
|
|
|
|
printfloat(get_cam_near_dof(camera_a))
|
|
printnl()
|
|
|
|
printfloat(get_cam_far_dof(camera_a))
|
|
printnl()
|
|
|
|
#if is_debug_build
|
|
if widget_apply_dof_change
|
|
|
|
SET_CAM_NEAR_DOF(camera_a, widget_near_dof)
|
|
SET_CAM_FAR_DOF(camera_a, widget_far_dof)
|
|
SET_CAM_DOF_STRENGTH(camera_a, widget_dof_strength)
|
|
|
|
SET_CAM_USE_SHALLOW_DOF_MODE(camera_a, true)
|
|
|
|
widget_apply_dof_change = false
|
|
|
|
endif
|
|
#endif
|
|
|
|
endif
|
|
|
|
SET_USE_HI_DOF()
|
|
|
|
interactive_cutscene_cam_status++
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
if does_cam_exist(camera_a)
|
|
|
|
int left_stick_x
|
|
int left_stick_y
|
|
int right_stick_x
|
|
int right_stick_y
|
|
|
|
float ftemp
|
|
|
|
GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(left_stick_x, left_stick_y, right_stick_x, right_stick_y)
|
|
|
|
IF NOT IS_LOOK_INVERTED()
|
|
right_stick_y *= -1
|
|
ENDIF
|
|
|
|
// invert the vertical
|
|
IF (right_stick_y > STICK_DEAD_ZONE)
|
|
OR (right_stick_y < (STICK_DEAD_ZONE * -1))
|
|
|
|
fTemp = TO_FLOAT(right_stick_y)
|
|
fTemp *= fTemp
|
|
fTemp /= TO_FLOAT(128 - STICK_DEAD_ZONE) * TO_FLOAT(128 - STICK_DEAD_ZONE)
|
|
fTemp *= cam_speed
|
|
|
|
IF (right_stick_y < 0)
|
|
fTemp *= -1.0
|
|
ENDIF
|
|
|
|
current_cam_rot.x += fTemp
|
|
|
|
IF (current_cam_rot.x < fMinYChange)
|
|
current_cam_rot.x = fMinYChange
|
|
ENDIF
|
|
IF (current_cam_rot.x > fMaxYChange)
|
|
current_cam_rot.x = fMaxYChange
|
|
ENDIF
|
|
|
|
endif
|
|
|
|
IF (right_stick_x > STICK_DEAD_ZONE)
|
|
OR (right_stick_x < (STICK_DEAD_ZONE * -1))
|
|
|
|
fTemp = TO_FLOAT(right_stick_x)
|
|
fTemp *= fTemp
|
|
fTemp /= TO_FLOAT(128 - STICK_DEAD_ZONE) * TO_FLOAT(128 - STICK_DEAD_ZONE)
|
|
fTemp *= cam_speed
|
|
|
|
IF (right_stick_x > 0)
|
|
fTemp *= -1.0
|
|
ENDIF
|
|
|
|
current_cam_rot.z += fTemp
|
|
|
|
IF (current_cam_rot.z < fMinXChange)
|
|
current_cam_rot.z = fMinXChange
|
|
ENDIF
|
|
IF (current_cam_rot.z > fMaxXChange)
|
|
current_cam_rot.z = fMaxXChange
|
|
ENDIF
|
|
|
|
endif
|
|
|
|
set_cam_rot(camera_a, <<current_cam_rot.x, 0.0, current_cam_rot.z>>)
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
endproc
|
|
|
|
proc request_mocap_data_for_FBI_1_MCS_1()
|
|
|
|
if fbi1_stealth_cutscene_status > 0
|
|
and not (fbi1_stealth_cutscene_status >= 6)
|
|
|
|
if not is_cutscene_playing()
|
|
|
|
request_cutscene("FBI_1_MCS_1_concat")
|
|
|
|
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Michael", PLAYER_PED_ID())
|
|
|
|
if not is_ped_injured(doctor[0].ped)
|
|
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Scientist_with_clipboard", doctor[0].ped)
|
|
endif
|
|
|
|
if not is_ped_injured(doctor[1].ped)
|
|
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("Scientist_whos_grabbed", doctor[1].ped)
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endproc
|
|
|
|
|
|
proc fbi1_stealth_cutscene()
|
|
|
|
int i = 0
|
|
|
|
// if IS_CUTSCENE_SKIP_BUTTON_JUST_PRESSED_WITH_DELAY()
|
|
// fbi1_stealth_cutscene_status = 22
|
|
// endif
|
|
|
|
// printint(fbi1_stealth_cutscene_status)
|
|
// printnl()
|
|
//
|
|
// if IS_SYNCHRONIZED_SCENE_RUNNING(doctor_1_cutscene_index)
|
|
// printstring("scene running")
|
|
// printnl()
|
|
// endif
|
|
//
|
|
// if has_model_loaded(get_weapontype_model(cia_stealth.weapon))
|
|
// printstring("cia_stealth.weapon loaded")
|
|
// printnl()
|
|
// endif
|
|
|
|
|
|
interactive_cutscene_cam()
|
|
|
|
request_mocap_data_for_FBI_1_MCS_1()
|
|
|
|
switch fbi1_stealth_cutscene_status
|
|
|
|
case 0
|
|
|
|
request_anim_dict("Dead")
|
|
|
|
//Set the multihead blinders instantly on
|
|
SET_MULTIHEAD_SAFE(TRUE,TRUE)
|
|
|
|
if start_new_cutscene_no_fade()
|
|
|
|
//BLOCK_PLAYER_PED_WEAPON_STORE(CHAR_MICHAEL, TRUE)
|
|
remove_all_ped_weapons(player_ped_id())
|
|
|
|
DISABLE_CHEAT(CHEAT_TYPE_GIVE_WEAPONS, true)
|
|
|
|
clear_area(<<278.58, -1336.61, 23.68>>, 300, true)
|
|
remove_decals_in_range(<<278.58, -1336.61, 23.68>>, 300.00)
|
|
|
|
camera_a = create_cam_with_params("default_scripted_camera", <<280.335999,-1335.461914,24.553310>>,<<63.400543,-0.000000,-129.389664>>,56)//69.50
|
|
SET_CAM_NEAR_DOF(camera_a, 0.01)
|
|
SET_CAM_FAR_DOF(camera_a, 0.05)
|
|
SET_CAM_DOF_STRENGTH(camera_a, 0.2)//1.0
|
|
SET_CAM_USE_SHALLOW_DOF_MODE(camera_a, true)
|
|
|
|
setup_enemy(doctor[0])
|
|
DISABLE_PED_INJURED_ON_GROUND_BEHAVIOUR(doctor[0].ped)
|
|
DISABLE_PED_PAIN_AUDIO(doctor[0].ped, true)
|
|
SET_PED_COMPONENT_VARIATION(doctor[0].ped, PED_COMP_HEAD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(doctor[0].ped, PED_COMP_TORSO, 0, 0)
|
|
add_ped_for_dialogue(scripted_speech, ConvertSingleCharacter("3"), doctor[0].ped, "doctor1")
|
|
remove_blip(doctor[0].blip)
|
|
|
|
clip_board.obj = create_object(clip_board.model, (doctor[0].pos + <<0.0, 0.0, 1.0>>))
|
|
ATTACH_ENTITY_TO_ENTITY(clip_board.obj, doctor[0].ped, get_ped_bone_index(doctor[0].ped, BONETAG_PH_L_HAND), <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
|
|
pen.obj = create_object(pen.model, (doctor[0].pos + <<0.0, 0.0, 1.5>>))
|
|
ATTACH_ENTITY_TO_ENTITY(pen.obj, doctor[0].ped, get_ped_bone_index(doctor[0].ped, BONETAG_PH_R_HAND), <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
|
|
cutscene_pos = << 280.583, -1335.896, 23.588 >>
|
|
cutscene_rot = << 0.000, 0.000, 38.000 >>
|
|
doctor_0_cutscene_index = CREATE_SYNCHRONIZED_SCENE(cutscene_pos, cutscene_rot)
|
|
TASK_SYNCHRONIZED_SCENE(doctor[0].ped, doctor_0_cutscene_index, "missfbi1", "fbi_1_ig_1_b_clipb", INSTANT_BLEND_IN, normal_BLEND_OUT)
|
|
force_ped_ai_and_animation_update(doctor[0].ped)
|
|
|
|
//doctor who dies
|
|
setup_enemy(doctor[1])
|
|
DISABLE_PED_INJURED_ON_GROUND_BEHAVIOUR(doctor[1].ped)
|
|
DISABLE_PED_PAIN_AUDIO(doctor[1].ped, true)
|
|
STOP_PED_SPEAKING(doctor[1].ped, true)
|
|
SET_PED_COMPONENT_VARIATION(doctor[1].ped, PED_COMP_HEAD, 1, 0)
|
|
SET_PED_COMPONENT_VARIATION(doctor[1].ped, PED_COMP_TORSO, 0, 1)
|
|
add_ped_for_dialogue(scripted_speech, ConvertSingleCharacter("4"), doctor[1].ped, "doctor2")
|
|
remove_blip(doctor[1].blip)
|
|
|
|
cutscene_pos = <<281.083, -1336.146, 23.638>>//<< 281.033, -1336.146, 23.588 >>
|
|
cutscene_rot = << 0.000, 0.000, 44.000 >>
|
|
doctor_1_cutscene_index = CREATE_SYNCHRONIZED_SCENE(cutscene_pos, cutscene_rot)
|
|
TASK_SYNCHRONIZED_SCENE(doctor[1].ped, doctor_1_cutscene_index, "missfbi1", "fbi_1_ig_1_a", INSTANT_BLEND_IN, normal_BLEND_OUT)
|
|
set_synchronized_scene_phase(doctor_1_cutscene_index, 0.145)
|
|
SET_SYNCHRONIZED_SCENE_RATE(doctor_1_cutscene_index, 0.0)
|
|
force_ped_ai_and_animation_update(doctor[1].ped)
|
|
|
|
//reception ped doctor.
|
|
setup_enemy(doctor[4])
|
|
remove_blip(doctor[4].blip)
|
|
set_ped_can_be_targetted(doctor[4].ped, false)
|
|
|
|
setup_buddy(dead_body[0])
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_HEAD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_BERD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_HAIR, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_TORSO, 2, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_LEG, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_FEET, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[0].ped, PED_COMP_JBIB, 0, 0)
|
|
DISABLE_PED_INJURED_ON_GROUND_BEHAVIOUR(dead_body[0].ped)
|
|
set_ped_can_ragdoll(dead_body[0].ped, true)
|
|
RETAIN_ENTITY_IN_INTERIOR(dead_body[0].ped, get_interior_at_coords_with_type(<<292.205, -1345.025, 24.570>>, "V_Coroner"))
|
|
set_entity_load_collision_flag(dead_body[0].ped, true)
|
|
|
|
cutscene_pos = <<291.552, -1345.871, 24.570>>
|
|
cutscene_rot = <<0.000, 0.000, 147.000>>
|
|
|
|
task_play_anim_advanced(dead_body[0].ped, "missfbi1", "cpr_pumpchest_idle", cutscene_pos, cutscene_rot, INSTANT_BLEND_IN, normal_BLEND_OUT, -1, AF_ENDS_IN_DEAD_POSE | AF_OVERRIDE_PHYSICS | af_extract_initial_offset | AF_NOT_INTERRUPTABLE, 0.99)
|
|
force_ped_ai_and_animation_update(dead_body[0].ped)
|
|
|
|
//**********TEMP
|
|
//freeze_entity_position(dead_body[0].ped, true)
|
|
//**********
|
|
|
|
|
|
setup_buddy(dead_body[1])
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_HEAD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_BERD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_HAIR, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_TORSO, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_LEG, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_FEET, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(dead_body[1].ped, PED_COMP_JBIB, 0, 0)
|
|
DISABLE_PED_INJURED_ON_GROUND_BEHAVIOUR(dead_body[1].ped)
|
|
set_ped_can_ragdoll(dead_body[1].ped, true)
|
|
RETAIN_ENTITY_IN_INTERIOR(dead_body[1].ped, get_interior_at_coords_with_type(<<297.302, -1348.671, 24.570>>, "V_Coroner"))
|
|
set_entity_load_collision_flag(dead_body[1].ped, true)
|
|
|
|
cutscene_pos = <<296.702, -1349.621, 24.570>>
|
|
cutscene_rot = <<0.000, 0.000, 140.000>>
|
|
|
|
// dead_body_cutscene_index[1] = CREATE_SYNCHRONIZED_SCENE(cutscene_pos, cutscene_rot)
|
|
|
|
|
|
// TASK_SYNCHRONIZED_SCENE(dead_body[1].ped, dead_body_cutscene_index[1], "missfbi1", "cpr_pumpchest_idle", INSTANT_BLEND_IN, normal_blend_out, synced_scene_use_physics)
|
|
// SET_SYNCHRONIZED_SCENE_HOLD_LAST_FRAME(dead_body_cutscene_index[1], true)
|
|
task_play_anim_advanced(dead_body[1].ped, "missfbi1", "cpr_pumpchest_idle", cutscene_pos, cutscene_rot, INSTANT_BLEND_IN, normal_BLEND_OUT, -1, AF_ENDS_IN_DEAD_POSE | AF_OVERRIDE_PHYSICS | af_extract_initial_offset | AF_NOT_INTERRUPTABLE, 0.99)
|
|
force_ped_ai_and_animation_update(dead_body[1].ped)
|
|
|
|
//**********TEMP
|
|
//freeze_entity_position(dead_body[1].ped, true)
|
|
//**********
|
|
|
|
|
|
clear_ped_tasks_immediately(player_ped_id())
|
|
|
|
cutscene_pos = << 280.645, -1335.833, 24.500 >>
|
|
cutscene_rot = << 0.000, 0.000, -138.000 >>
|
|
cutscene_index = CREATE_SYNCHRONIZED_SCENE(cutscene_pos, cutscene_rot)
|
|
TASK_SYNCHRONIZED_SCENE(player_ped_id(), cutscene_index, "missfbi1", "cpr_pumpchest_idle", INSTANT_BLEND_IN, normal_BLEND_OUT)
|
|
set_entity_visible(player_ped_id(), false)
|
|
|
|
//RESTORE_PLAYER_PED_VARIATIONS(PLAYER_PED_ID())
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), ped_comp_hand, 0, 0)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), ped_comp_special, 0, 0)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), ped_comp_special2, 0, 0)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TORSO, 19, 0)
|
|
|
|
//SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_BERD, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TORSO, 26, 0)//19
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_LEG, 18, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_FEET, 7, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_JBIB, 0, 0)
|
|
|
|
|
|
CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_HEAD)
|
|
CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_EYES)
|
|
CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_EARS)
|
|
CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_MOUTH)
|
|
CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_LEFT_HAND)
|
|
CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_RIGHT_HAND)
|
|
CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_LEFT_WRIST)
|
|
CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_RIGHT_WRIST)
|
|
CLEAR_PED_PROP(PLAYER_PED_ID(), ANCHOR_HIP)
|
|
|
|
add_ped_for_dialogue(scripted_speech, 0, player_ped_id(), "michael")
|
|
//
|
|
|
|
//set_entity_collision(player_ped_id(), false)
|
|
//freeze_entity_position(player_ped_id(), true)
|
|
|
|
for i = 0 to count_of(bin_bag) - 1
|
|
|
|
bin_bag[i].obj = create_object_no_offset(bin_bag[i].model, bin_bag[i].pos)
|
|
set_entity_heading(bin_bag[i].obj, bin_bag[i].heading)
|
|
|
|
if i = 0
|
|
FORCE_ROOM_FOR_ENTITY(bin_bag[i].obj, get_interior_at_coords_with_type(<<277.2329, -1336.3568, 24.00>>, "V_coroner"), get_hash_key("AutopsySmall"))
|
|
elif i = 1
|
|
FORCE_ROOM_FOR_ENTITY(bin_bag[i].obj, get_interior_at_coords_with_type(<<249.00, -1372.3, 39.5>>, "V_coroner"), get_hash_key("topoff_mid"))
|
|
endif
|
|
|
|
endfor
|
|
|
|
bin[0].obj = create_object(bin[0].model, bin[0].pos)
|
|
set_entity_rotation(bin[0].obj, bin[0].rot)
|
|
freeze_entity_position(bin[0].obj, true)
|
|
|
|
zip_inc = 0.05
|
|
zip_y = -0.50 //-0.5
|
|
|
|
|
|
set_cam_active(camera_a, true)
|
|
|
|
render_script_cams(true, false)
|
|
|
|
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGH)
|
|
|
|
SET_CAM_CONTROLS_MINI_MAP_HEADING(camera_a, true)
|
|
|
|
draw_rect(0.5, 0.5, 1, 1, 0, 0, 0, 255)
|
|
|
|
wait(0)
|
|
|
|
SET_ROOM_FOR_GAME_VIEWPORT_BY_NAME("rm_bsmt_AutopsySmall")
|
|
|
|
SET_SCRIPT_GFX_DRAW_ORDER(GFX_ORDER_BEFORE_HUD)//1497341
|
|
|
|
do_screen_fade_in(2000)
|
|
|
|
START_AUDIO_SCENE("FBI_01_DMW_IN_BODY_BAG")
|
|
|
|
original_time = get_game_timer()
|
|
|
|
fbi1_stealth_cutscene_status++
|
|
|
|
endif
|
|
|
|
draw_rect(0.5, 0.5, 1, 1, 0, 0, 0, 255)
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
draw_sprite("fbi1","zipbig", 0.5, zip_y, 1.0, 3.1, 0.0000, 255, 255, 255, 255)//3.0
|
|
|
|
if is_screen_faded_in()
|
|
if create_conversation(scripted_speech, "FBI1AUD", "fbi1_doc1", CONV_PRIORITY_medium)
|
|
fbi1_stealth_cutscene_status++
|
|
endif
|
|
endif
|
|
|
|
SET_USE_HI_DOF()
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
SET_SCRIPT_GFX_DRAW_ORDER(GFX_ORDER_BEFORE_HUD)
|
|
SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(TRUE)
|
|
|
|
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
|
|
if not zip_sound_activated
|
|
stop_audio_scene("FBI_01_DMW_IN_BODY_BAG")
|
|
play_sound_from_entity(zip_sound, "UNZIP", player_ped_id(), "FBI_01_SOUNDS")
|
|
|
|
if IS_SYNCHRONIZED_SCENE_RUNNING(doctor_1_cutscene_index)
|
|
//SET_SYNCHRONIZED_SCENE_PHASE(doctor_1_cutscene_index, 0.135) //0.14,
|
|
SET_SYNCHRONIZED_SCENE_RATE(doctor_1_cutscene_index, 1.0)
|
|
endif
|
|
|
|
zip_sound_activated = true
|
|
endif
|
|
|
|
if zip_inc < 0.2
|
|
zip_inc = zip_inc + 0.01
|
|
endif
|
|
|
|
if zip_y < 2.5
|
|
zip_y += zip_inc
|
|
draw_sprite("fbi1","zipbig", 0.5, zip_y, 1.0, 3.1, 0.0000, 255, 255, 255, 255) //zip zipbig
|
|
else
|
|
|
|
if zip_sound_activated
|
|
if not has_sound_finished(zip_sound)
|
|
stop_sound(zip_sound)
|
|
endif
|
|
endif
|
|
|
|
original_time = get_game_timer()
|
|
|
|
fbi1_stealth_cutscene_status++
|
|
|
|
endif
|
|
|
|
else
|
|
draw_sprite("fbi1","zipbig", 0.5, zip_y, 1.0, 3.1, 0.0000, 255, 255, 255, 255)
|
|
endif
|
|
|
|
SET_USE_HI_DOF()
|
|
|
|
break
|
|
|
|
case 3
|
|
|
|
if create_conversation(scripted_speech, "FBI1AUD", "fbi1_doc5", CONV_PRIORITY_low)
|
|
fbi1_stealth_cutscene_status++
|
|
endif
|
|
|
|
SET_USE_HI_DOF()
|
|
|
|
break
|
|
|
|
case 4
|
|
|
|
printstring("get_cam_far_dof: ")
|
|
printfloat(get_cam_far_dof(camera_a))
|
|
printnl()
|
|
|
|
if get_cam_far_dof(camera_a) < 4.0
|
|
|
|
float far_dof
|
|
|
|
far_dof = get_cam_far_dof(camera_a)
|
|
|
|
//far_dof = far_dof + (far_dof * get_frame_time() * 0.5)
|
|
|
|
//far_dof += @+1.0
|
|
|
|
far_dof = far_dof +@ (far_dof * 2.0)
|
|
|
|
|
|
if far_dof > 4.0
|
|
far_dof = 4.0
|
|
endif
|
|
|
|
SET_CAM_FAR_DOF(camera_a, far_dof)
|
|
|
|
SET_USE_HI_DOF()
|
|
|
|
if far_dof = 4.0
|
|
fbi1_stealth_cutscene_status++
|
|
endif
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 5
|
|
|
|
if not has_label_been_triggered("fbi1_doc2")
|
|
|
|
int left_stick_x
|
|
int left_stick_y
|
|
int right_stick_x
|
|
int right_stick_y
|
|
|
|
GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(left_stick_x, left_stick_y, right_stick_x, right_stick_y)
|
|
|
|
IF NOT IS_LOOK_INVERTED()
|
|
right_stick_y *= -1
|
|
ENDIF
|
|
|
|
// invert the vertical
|
|
IF (right_stick_x > STICK_DEAD_ZONE) OR (right_stick_x < (STICK_DEAD_ZONE * -1))
|
|
or (right_stick_y > STICK_DEAD_ZONE) OR (right_stick_y < (STICK_DEAD_ZONE * -1))
|
|
if create_conversation(scripted_speech, "FBI1AUD", "fbi1_doc2", CONV_PRIORITY_medium)
|
|
set_label_as_triggered("fbi1_doc2", true)
|
|
|
|
print_help_forever("FBI1_help1")
|
|
|
|
dialogue_time = get_game_timer()
|
|
original_time = get_game_timer()
|
|
|
|
fbi1_stealth_cutscene_status++
|
|
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
|
|
if not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
|
|
print_help_forever("FBI1_help1")
|
|
|
|
dialogue_time = get_game_timer()
|
|
original_time = get_game_timer()
|
|
|
|
fbi1_stealth_cutscene_status++
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 6
|
|
|
|
if not has_label_been_triggered("fbi1_doc2")
|
|
if not has_label_been_triggered("fbi1_doc4") //dont trigger dialogue once bone cutter dialogue plays
|
|
|
|
int left_stick_x
|
|
int left_stick_y
|
|
int right_stick_x
|
|
int right_stick_y
|
|
|
|
GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(left_stick_x, left_stick_y, right_stick_x, right_stick_y)
|
|
|
|
IF NOT IS_LOOK_INVERTED()
|
|
right_stick_y *= -1
|
|
ENDIF
|
|
|
|
// invert the vertical
|
|
IF (right_stick_x > STICK_DEAD_ZONE) OR (right_stick_x < (STICK_DEAD_ZONE * -1))
|
|
or (right_stick_y > STICK_DEAD_ZONE) OR (right_stick_y < (STICK_DEAD_ZONE * -1))
|
|
|
|
if IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
|
|
dialogue_root = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT()
|
|
|
|
IF ARE_STRINGS_EQUAL(dialogue_root, "fbi1_doc3")
|
|
|
|
specific_label = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION()
|
|
|
|
dialogue_paused = true
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
if create_conversation(scripted_speech, "FBI1AUD", "fbi1_doc2", CONV_PRIORITY_medium)
|
|
set_label_as_triggered("fbi1_doc2", true)
|
|
//script_assert("test 0")
|
|
|
|
else
|
|
|
|
printstring("not create conversation")
|
|
printnl()
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
if not has_label_been_triggered("fbi1_doc3")
|
|
if not is_any_text_being_displayed(locates_data)
|
|
if create_conversation(scripted_speech, "FBI1AUD", "fbi1_doc3", CONV_PRIORITY_low)
|
|
set_label_as_triggered("fbi1_doc3", true)
|
|
endif
|
|
endif
|
|
|
|
else
|
|
|
|
if not is_any_text_being_displayed(locates_data)
|
|
|
|
if dialogue_paused
|
|
|
|
if not is_string_null(specific_label)
|
|
if create_conversation_from_specific_line(scripted_speech, "FBI1AUD", "fbi1_doc3", specific_label, CONV_PRIORITY_low)
|
|
dialogue_paused = false
|
|
endif
|
|
|
|
else
|
|
dialogue_paused = false
|
|
endif
|
|
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
|
|
if not has_label_been_triggered("fbi1_doc4")
|
|
if lk_timer(original_time, 55000)
|
|
if not is_any_text_being_displayed(locates_data)
|
|
|
|
if create_conversation(scripted_speech, "FBI1AUD", "fbi1_doc4", CONV_PRIORITY_medium)
|
|
|
|
if not is_ped_injured(doctor[0].ped)
|
|
|
|
cutscene_pos = << 280.583, -1335.896, 23.588 >>
|
|
cutscene_rot = << 0.000, 0.000, 38.000 >>
|
|
doctor_0_cutscene_index = CREATE_SYNCHRONIZED_SCENE(cutscene_pos, cutscene_rot)
|
|
TASK_SYNCHRONIZED_SCENE(doctor[0].ped, doctor_0_cutscene_index, "missfbi1", "fbi_1_ig_3_b_clipb", 1, normal_BLEND_OUT)
|
|
set_synchronized_scene_phase(doctor_0_cutscene_index, 0.45)
|
|
//force_ped_ai_and_animation_update(doctor[0].ped)
|
|
|
|
endif
|
|
|
|
if not is_ped_injured(doctor[1].ped)
|
|
|
|
cutscene_pos = <<281.083, -1336.146, 23.638>>//<< 281.033, -1336.146, 23.588 >>
|
|
cutscene_rot = << 0.000, 0.000, 44.000 >>
|
|
doctor_1_cutscene_index = CREATE_SYNCHRONIZED_SCENE(cutscene_pos, cutscene_rot)
|
|
TASK_SYNCHRONIZED_SCENE(doctor[1].ped, doctor_1_cutscene_index, "missfbi1", "fbi_1_ig_3_a", 1, normal_BLEND_OUT)
|
|
set_synchronized_scene_phase(doctor_1_cutscene_index, 0.45)
|
|
//force_ped_ai_and_animation_update(doctor[1].ped)
|
|
|
|
endif
|
|
|
|
set_label_as_triggered("fbi1_doc4", true)
|
|
endif
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
if not is_ped_injured(doctor[0].ped)
|
|
if IS_SYNCHRONIZED_SCENE_RUNNING(doctor_0_cutscene_index)
|
|
// if is_entity_playing_anim("missfbi1", react anims
|
|
// if GET_SYNCHRONIZED_SCENE_PHASE(doctor_0_cutscene_index) >= 1.0
|
|
//
|
|
// cutscene_pos = << 280.583, -1335.896, 23.588 >>
|
|
// cutscene_rot = << 0.000, 0.000, 38.000 >>
|
|
// doctor_0_cutscene_index = CREATE_SYNCHRONIZED_SCENE(cutscene_pos, cutscene_rot)
|
|
// TASK_SYNCHRONIZED_SCENE(doctor[0].ped, doctor_0_cutscene_index, "missfbi1", "fbi_1_ig_2_b_clipb", normal_BLEND_IN, normal_BLEND_OUT)
|
|
// set_synchronized_scene_phase(doctor_1_cutscene_index, set to a nice blend phase to suit both anims)
|
|
//
|
|
// endif
|
|
//
|
|
// else
|
|
|
|
if GET_SYNCHRONIZED_SCENE_PHASE(doctor_0_cutscene_index) >= 1.0
|
|
|
|
cutscene_pos = << 280.583, -1335.896, 23.588 >>
|
|
cutscene_rot = << 0.000, 0.000, 38.000 >>
|
|
doctor_0_cutscene_index = CREATE_SYNCHRONIZED_SCENE(cutscene_pos, cutscene_rot)
|
|
TASK_SYNCHRONIZED_SCENE(doctor[0].ped, doctor_0_cutscene_index, "missfbi1", "fbi_1_ig_2_b_clipb", normal_BLEND_IN, normal_BLEND_OUT)
|
|
force_ped_ai_and_animation_update(doctor[0].ped)
|
|
|
|
endif
|
|
// endif
|
|
endif
|
|
endif
|
|
|
|
if not is_ped_injured(doctor[1].ped)
|
|
if IS_SYNCHRONIZED_SCENE_RUNNING(doctor_1_cutscene_index)
|
|
// if is_entity_playing_anim("missfbi1", react anims
|
|
// if GET_SYNCHRONIZED_SCENE_PHASE(doctor_1_cutscene_index) >= 1.0
|
|
//
|
|
// cutscene_pos = << 280.583, -1335.896, 23.588 >>
|
|
// cutscene_rot = << 0.000, 0.000, 38.000 >>
|
|
// doctor_1_cutscene_index = CREATE_SYNCHRONIZED_SCENE(cutscene_pos, cutscene_rot)
|
|
// TASK_SYNCHRONIZED_SCENE(doctor[1].ped, doctor_1_cutscene_index, "missfbi1", "fbi_1_ig_2_b_clipb", normal_BLEND_IN, normal_BLEND_OUT)
|
|
// set_synchronized_scene_phase(doctor_1_cutscene_index, set to a nice blend phase to suit both anims)
|
|
//
|
|
// endif
|
|
//
|
|
// else
|
|
|
|
if GET_SYNCHRONIZED_SCENE_PHASE(doctor_0_cutscene_index) >= 1.0
|
|
|
|
cutscene_pos = <<281.083, -1336.146, 23.638>>//<< 281.033, -1336.146, 23.588 >>
|
|
cutscene_rot = << 0.000, 0.000, 44.000 >>
|
|
doctor_1_cutscene_index = CREATE_SYNCHRONIZED_SCENE(cutscene_pos, cutscene_rot)
|
|
TASK_SYNCHRONIZED_SCENE(doctor[1].ped, doctor_1_cutscene_index, "missfbi1", "fbi_1_ig_2_a", normal_BLEND_IN, normal_BLEND_OUT)
|
|
force_ped_ai_and_animation_update(doctor[1].ped)
|
|
|
|
endif
|
|
|
|
// endif
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
//if not is_any_text_being_displayed(locates_data)
|
|
|
|
if IS_SYNCHRONIZED_SCENE_RUNNING(doctor_1_cutscene_index)
|
|
if GET_SYNCHRONIZED_SCENE_PHASE(doctor_1_cutscene_index) >= 0.6
|
|
|
|
clear_help()
|
|
|
|
if not is_ped_injured(doctor[1].ped)
|
|
bone_saw.obj = create_object(bone_saw.model, get_offset_from_entity_in_world_coords(doctor[1].ped, <<0.0, 0.0, 1.0>>))
|
|
attach_entity_to_entity(bone_saw.obj, doctor[1].ped, get_ped_bone_index(doctor[1].ped, BONETAG_PH_R_HAND), <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
endif
|
|
|
|
fbi1_stealth_cutscene_status = 30
|
|
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
|
|
if is_control_pressed(frontend_control, INPUT_SKIP_CUTSCENE)
|
|
if has_cutscene_loaded()
|
|
if start_new_cutscene_no_fade(false)
|
|
|
|
stop_stream()
|
|
|
|
trigger_music_event("FBI1_WAKE_UP")
|
|
|
|
if not is_ped_injured(doctor[0].ped)
|
|
register_entity_for_cutscene(doctor[0].ped, "Scientist_with_clipboard", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
|
|
endif
|
|
|
|
if not is_ped_injured(doctor[1].ped)
|
|
register_entity_for_cutscene(doctor[1].ped, "Scientist_whos_grabbed", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
|
|
endif
|
|
|
|
if is_entity_attached(clip_board.obj)
|
|
detach_entity(clip_board.obj)
|
|
endif
|
|
|
|
if is_entity_attached(pen.obj)
|
|
detach_entity(pen.obj)
|
|
endif
|
|
|
|
cia_weapon_obj.obj = CREATE_WEAPON_OBJECT(cia_stealth.weapon, infinite_ammo, <<282.9, -1345.1, 25.3>>, true)
|
|
GIVE_WEAPON_COMPONENT_TO_WEAPON_OBJECT(cia_weapon_obj.obj, WEAPONCOMPONENT_AT_PI_FLSH)
|
|
register_entity_for_cutscene(cia_weapon_obj.obj, "cia_pistol", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
|
|
|
|
register_entity_for_cutscene(clip_board.obj, "FIB_1_clipboard", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
|
|
register_entity_for_cutscene(pen.obj, "FIB_1_Pencil", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
|
|
|
|
REGISTER_ENTITY_FOR_CUTSCENE(NULL, "cia_guard", CU_CREATE_AND_ANIMATE_NEW_SCRIPT_ENTITY, cia_stealth.model)
|
|
|
|
//cia_weapon_obj = CREATE_WEAPON_OBJECT_FROM_PED_WEAPON_WITH_COMPONENTS(steve.ped, WEAPONTYPE_CARBINERIFLE)
|
|
register_entity_for_cutscene(cia_weapon_obj.obj, "cia_pistol", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
|
|
|
|
start_cutscene()
|
|
|
|
// PRELOAD_STORED_PLAYER_PED_VARIATION(player_ped_id())
|
|
// SET_PED_PRELOAD_VARIATION_DATA(player_ped_id(), PED_COMP_TORSO, 19, 0)
|
|
|
|
// SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_HEAD, 0, 0)
|
|
// SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_BERD, 0, 0)
|
|
// SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_HAIR, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_TORSO, 19, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_LEG, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_HAND, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_FEET, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_TEETH, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_DECL, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_JBIB, 0, 0)
|
|
|
|
original_time = get_game_timer()
|
|
|
|
fbi1_stealth_cutscene_status = 7
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
break
|
|
|
|
case 7
|
|
|
|
if is_cutscene_playing()
|
|
|
|
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
|
|
|
|
set_entity_visible(player_ped_id(), true)
|
|
set_entity_collision(player_ped_id(), true)
|
|
freeze_entity_position(player_ped_id(), false)
|
|
|
|
destroy_all_cams()
|
|
render_script_cams(false, false)
|
|
set_gameplay_cam_relative_heading(0)
|
|
set_gameplay_cam_relative_pitch(0)
|
|
|
|
if does_entity_exist(bone_saw.obj)
|
|
delete_object(bone_saw.obj)
|
|
set_model_as_no_longer_needed(bone_saw.model)
|
|
endif
|
|
|
|
fbi1_stealth_cutscene_status++
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 8
|
|
|
|
request_anim_dict("missfbi1ig_7")
|
|
REQUEST_STEALTH_MODE_ASSET("MICHAEL_ACTION")
|
|
|
|
if does_entity_exist(cia_stealth.ped)
|
|
if not is_ped_injured(cia_stealth.ped)
|
|
set_ped_reset_flag(cia_stealth.ped, PRF_ForceEnableFlashLightForAI, true)
|
|
endif
|
|
endif
|
|
|
|
if does_entity_exist(cia_weapon_obj.obj)
|
|
SET_CUTSCENES_WEAPON_FLASHLIGHT_ON_THIS_FRAME(cia_weapon_obj.obj)
|
|
endif
|
|
|
|
if is_cutscene_active()
|
|
|
|
// printint(get_cutscene_time())
|
|
// printnl()
|
|
|
|
if not was_cutscene_skipped()
|
|
|
|
if not michael_clothes_set
|
|
if get_cutscene_time() > 17200
|
|
// RESTORE_PLAYER_PED_VARIATIONS(PLAYER_PED_ID())
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), ped_comp_hand, 0, 0)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), ped_comp_special, 0, 0)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), ped_comp_special2, 0, 0)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TORSO, 19, 0)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_DECL, 0, 0)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_JBIB, 0, 0)
|
|
// clear_all_ped_props(PLAYER_PED_ID())
|
|
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_HEAD, 0, 0)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_BERD, 0, 0)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_HAIR, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TORSO, 19, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_LEG, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_FEET, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_JBIB, 0, 0)
|
|
//clear_all_ped_props(PLAYER_PED_ID())
|
|
remove_player_ped_props(player_ped_id())
|
|
michael_clothes_set = true
|
|
endif
|
|
endif
|
|
|
|
if not rumble_pad
|
|
if get_cutscene_time() > 500
|
|
SET_PAD_CAN_SHAKE_DURING_CUTSCENE(true)
|
|
SET_CONTROL_SHAKE(PLAYER_CONTROL, 6500, 200)
|
|
rumble_pad = true
|
|
endif
|
|
endif
|
|
|
|
IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("cia_guard", cia_stealth.model))
|
|
cia_stealth.ped = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("cia_guard", cia_stealth.model))
|
|
ENDIF
|
|
|
|
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("Scientist_whos_grabbed")
|
|
|
|
if not is_ped_injured(doctor[1].ped)
|
|
|
|
SET_PED_CAN_RAGDOLL(doctor[1].ped, TRUE)
|
|
|
|
task_play_anim_advanced(doctor[1].ped, "Dead", "dead_c", <<278.835, -1336.046, 24.580>>, <<0.000, 0.000, 74.000>>, instant_blend_in, normal_blend_out, -1, AF_ENDS_IN_DEAD_POSE | AF_OVERRIDE_PHYSICS | af_extract_initial_offset | AF_NOT_INTERRUPTABLE, 0.99)
|
|
force_ped_ai_and_animation_update(doctor[1].ped)
|
|
|
|
remove_ped_for_dialogue(scripted_speech, 4)
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("cia_guard")
|
|
|
|
if has_anim_dict_loaded("missfbi1ig_7")
|
|
|
|
if not is_ped_injured(cia_stealth.ped)
|
|
|
|
setup_enemy_attributes(cia_stealth)
|
|
setup_relationship_enemy(cia_stealth.ped, true)
|
|
GIVE_WEAPON_COMPONENT_TO_PED(cia_stealth.ped, weapontype_combatpistol, WEAPONCOMPONENT_AT_PI_FLSH)
|
|
set_current_ped_weapon(cia_stealth.ped, weapontype_combatpistol, true)
|
|
|
|
//SET_PED_DROPS_WEAPONS_WHEN_DEAD(cia_stealth.ped, false)
|
|
STOP_PED_SPEAKING(cia_stealth.ped, true)
|
|
add_ped_for_dialogue(scripted_speech, ConvertSingleCharacter("6"), cia_stealth.ped, "CIA1")
|
|
|
|
fORCE_PED_MOTION_STATE(cia_stealth.ped, MS_aiming, TRUE)
|
|
cia_stealth_enemy_ai_system()
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("cia_pistol")
|
|
give_weapon_object_to_ped(cia_weapon_obj.obj, cia_stealth.ped)
|
|
endif
|
|
|
|
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("michael")
|
|
|
|
if has_STEALTH_MODE_asset_loaded("MICHAEL_ACTION")
|
|
|
|
SET_PED_STEALTH_MOVEMENT(player_ped_id(), true)
|
|
force_ped_motion_state(player_ped_id(), MS_STEALTHMODE_IDLE)
|
|
force_ped_ai_and_animation_update(player_ped_id())
|
|
SIMULATE_PLAYER_INPUT_GAIT(player_id(), pedmove_walk, 1500)
|
|
REPLAY_STOP_EVENT()
|
|
endif
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
SET_CUTSCENE_FADE_VALUES(false, false, true)
|
|
|
|
fbi1_stealth_cutscene_status = 22
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
RELEASE_NAMED_SCRIPT_AUDIO_BANK("script\\FBI_01_DMW_Autopsy_1")
|
|
|
|
RELEASE_PED_PRELOAD_VARIATION_DATA(player_ped_id())
|
|
|
|
delete_ped(doctor[0].ped)
|
|
set_model_as_no_longer_needed(doctor[0].model)
|
|
|
|
if does_entity_exist(clip_board.obj)
|
|
delete_object(clip_board.obj)
|
|
endif
|
|
set_model_as_no_longer_needed(clip_board.model)
|
|
|
|
if does_entity_exist(pen.obj)
|
|
delete_object(pen.obj)
|
|
endif
|
|
set_model_as_no_longer_needed(pen.model)
|
|
|
|
set_streamed_texture_dict_as_no_longer_needed("fbi1")
|
|
|
|
disable_cellphone(false)
|
|
|
|
SET_SCRIPT_GFX_DRAW_ORDER(gfx_order_after_hud)
|
|
SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(false)
|
|
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(1, "stealth_the_cia_officer")
|
|
|
|
trigger_music_event("FBI1_GET_GUN")
|
|
start_audio_scene("FBI_1_STEALTH_KILL_AGENT")
|
|
|
|
end_cutscene_no_fade(false, false)
|
|
|
|
mission_flow = stealth_the_cia_officer
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 22
|
|
|
|
if is_cutscene_active()
|
|
|
|
IF DOES_ENTITY_EXIST(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("cia_guard", GET_PLAYER_PED_MODEL(char_trevor)))
|
|
cia_stealth.ped = GET_PED_INDEX_FROM_ENTITY_INDEX(GET_ENTITY_INDEX_OF_REGISTERED_ENTITY("cia_guard", GET_PLAYER_PED_MODEL(char_trevor)))
|
|
ENDIF
|
|
|
|
else
|
|
|
|
if has_anim_dict_loaded("missfbi1ig_7")
|
|
and has_STEALTH_MODE_asset_loaded("MICHAEL_ACTION")
|
|
and has_ped_preload_variation_data_finished(player_ped_id())
|
|
|
|
if is_audio_scene_active("FBI_01_DMW_IN_BODY_BAG")
|
|
stop_audio_scene("FBI_01_DMW_IN_BODY_BAG")
|
|
endif
|
|
|
|
if zip_sound_activated
|
|
if not has_sound_finished(zip_sound)
|
|
stop_sound(zip_sound)
|
|
endif
|
|
endif
|
|
|
|
delete_ped(doctor[0].ped)
|
|
set_model_as_no_longer_needed(doctor[0].model)
|
|
|
|
if does_entity_exist(clip_board.obj)
|
|
delete_object(clip_board.obj)
|
|
endif
|
|
set_model_as_no_longer_needed(clip_board.model)
|
|
|
|
if does_entity_exist(pen.obj)
|
|
delete_object(pen.obj)
|
|
endif
|
|
set_model_as_no_longer_needed(pen.model)
|
|
|
|
set_streamed_texture_dict_as_no_longer_needed("fbi1")
|
|
|
|
SET_SCRIPT_GFX_DRAW_ORDER(gfx_order_after_hud)
|
|
SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(false)
|
|
|
|
set_streamed_texture_dict_as_no_longer_needed("fbi1")
|
|
|
|
if not michael_clothes_set
|
|
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_HEAD, 0, 0)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_BERD, 0, 0)
|
|
// SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_HAIR, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TORSO, 19, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_LEG, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_FEET, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_JBIB, 0, 0)
|
|
//clear_all_ped_props(PLAYER_PED_ID())
|
|
remove_player_ped_props(player_ped_id())
|
|
|
|
endif
|
|
|
|
clear_ped_tasks_immediately(player_ped_id())
|
|
set_entity_visible(player_ped_id(), true)
|
|
set_entity_collision(player_ped_id(), true)
|
|
freeze_entity_position(player_ped_id(), false)
|
|
set_entity_coords(player_ped_id(), <<279.0734, -1337.0759, 23.5545>>)
|
|
set_entity_heading(player_ped_id(), 227.5366)
|
|
SET_PED_STEALTH_MOVEMENT(player_ped_id(), true)
|
|
force_ped_motion_state(player_ped_id(), MS_STEALTHMODE_IDLE)
|
|
force_ped_ai_and_animation_update(player_ped_id())
|
|
SIMULATE_PLAYER_INPUT_GAIT(player_id(), pedmove_walk, 1500)
|
|
|
|
|
|
if not is_ped_injured(cia_stealth.ped)
|
|
clear_ped_tasks_immediately(cia_stealth.ped)
|
|
set_entity_coords(cia_stealth.ped, <<284.5221, -1343.0671, 23.5380>>)
|
|
set_entity_heading(cia_stealth.ped, 231.3517)
|
|
setup_enemy_attributes(cia_stealth)
|
|
setup_relationship_enemy(cia_stealth.ped, true)
|
|
give_weapon_object_to_ped(cia_weapon_obj.obj, cia_stealth.ped)
|
|
GIVE_WEAPON_COMPONENT_TO_PED(cia_stealth.ped, weapontype_combatpistol, WEAPONCOMPONENT_AT_PI_FLSH)
|
|
set_current_ped_weapon(cia_stealth.ped, weapontype_combatpistol)
|
|
//SET_PED_DROPS_WEAPONS_WHEN_DEAD(cia_stealth.ped, false)
|
|
STOP_PED_SPEAKING(cia_stealth.ped, true)
|
|
add_ped_for_dialogue(scripted_speech, ConvertSingleCharacter("6"), cia_stealth.ped, "CIA1")
|
|
|
|
fORCE_PED_MOTION_STATE(cia_stealth.ped, MS_aiming, TRUE)
|
|
cia_stealth_enemy_ai_system()
|
|
force_ped_ai_and_animation_update(cia_stealth.ped)
|
|
endif
|
|
|
|
|
|
if not is_ped_injured(doctor[1].ped)
|
|
SET_PED_CAN_RAGDOLL(doctor[1].ped, TRUE)
|
|
|
|
task_play_anim_advanced(doctor[1].ped, "Dead", "dead_c", <<278.835, -1336.046, 24.580>>, <<0.000, 0.000, 74.000>>, instant_blend_in, normal_blend_out, -1, AF_ENDS_IN_DEAD_POSE | AF_OVERRIDE_PHYSICS | af_extract_initial_offset | AF_NOT_INTERRUPTABLE, 0.99)
|
|
force_ped_ai_and_animation_update(doctor[1].ped)
|
|
|
|
remove_ped_for_dialogue(scripted_speech, 4)
|
|
ENDIF
|
|
|
|
|
|
disable_cellphone(false)
|
|
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(1, "stealth_the_cia_officer")
|
|
|
|
trigger_music_event("FBI1_GET_GUN")
|
|
start_audio_scene("FBI_1_STEALTH_KILL_AGENT")
|
|
|
|
while not HAVE_ALL_STREAMING_REQUESTS_COMPLETED(player_ped_id())
|
|
wait(0)
|
|
endwhile
|
|
|
|
end_cutscene()
|
|
|
|
mission_flow = stealth_the_cia_officer
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 30
|
|
|
|
if IS_SYNCHRONIZED_SCENE_RUNNING(doctor_1_cutscene_index)
|
|
if GET_SYNCHRONIZED_SCENE_PHASE(doctor_1_cutscene_index) >= 0.65
|
|
|
|
start_particle_fx_non_looped_at_coord("scr_fbi_autopsy_blood", <<280.7, -1335.8, 24.7>>, <<0.0, 0.0, 0.0>>)//<<90.0, 0.0, 50.0>>)
|
|
|
|
SET_CONTROL_SHAKE(PLAYER_CONTROL, 1500, 200)
|
|
|
|
fbi1_stealth_cutscene_status++
|
|
endif
|
|
endif
|
|
|
|
break
|
|
|
|
case 31
|
|
|
|
if IS_SYNCHRONIZED_SCENE_RUNNING(doctor_1_cutscene_index)
|
|
if GET_SYNCHRONIZED_SCENE_PHASE(doctor_1_cutscene_index) >= 0.72
|
|
|
|
//operating_table_fail = true
|
|
|
|
if not is_screen_faded_out()
|
|
if not is_screen_fading_out()
|
|
clear_help()
|
|
do_screen_fade_out(2000)
|
|
endif
|
|
|
|
else
|
|
|
|
remove_particle_fx_in_range(<<280.7, -1335.8, 24.7>>, 100.00)
|
|
|
|
set_entity_visible(player_ped_id(), true)
|
|
set_entity_health(player_ped_id(), 2)
|
|
end_cutscene_no_fade()
|
|
//SET_ROOM_FOR_GAME_VIEWPORT_BY_NAME("rm_bsmt_AutopsySmall")
|
|
//mission_failed()
|
|
|
|
endif
|
|
|
|
endif
|
|
endif
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
endproc
|
|
|
|
proc inspect_body_0_system()
|
|
|
|
get_relative_heading_beteween_player_and_ped(dead_body[0].ped)
|
|
|
|
switch inspect_body_0_status
|
|
|
|
case 0
|
|
|
|
request_anim_dict("missfbi1ig_9")
|
|
|
|
if has_anim_dict_loaded("missfbi1ig_9")
|
|
|
|
if is_entity_at_coord(player_ped_id(), get_entity_coords(dead_body[0].ped, false), <<2.0, 2.0, 2.5>>, false, true)
|
|
|
|
if is_ped_within_heading_range_of_entity(player_ped_id(), dead_body[0].ped, 60.00)
|
|
|
|
if is_ped_within_heading_range_of_entity(player_ped_id(), dead_body[0].ped, 35.00) //25
|
|
|
|
task_play_anim(player_ped_id(), "missfbi1ig_9", "look_front", slow_blend_in, slow_blend_out, -1)
|
|
|
|
elif get_relative_heading_beteween_player_and_ped(dead_body[0].ped) < -35.00
|
|
|
|
task_play_anim(player_ped_id(), "missfbi1ig_9", "look_right", slow_blend_in, slow_blend_out, -1)
|
|
|
|
elif get_relative_heading_beteween_player_and_ped(dead_body[0].ped) > 35.00
|
|
|
|
task_play_anim(player_ped_id(), "missfbi1ig_9", "look_left", slow_blend_in, slow_blend_out, -1)
|
|
|
|
endif
|
|
|
|
//--- only force the hint for first person.
|
|
if get_cam_view_mode_for_context(cam_view_mode_context_on_foot) = cam_view_mode_first_person
|
|
|
|
vector focus_pos
|
|
|
|
focus_pos = get_entity_coords(dead_body[0].ped, false)
|
|
focus_pos.z -= 1.0
|
|
|
|
SET_GAMEPLAY_COORD_HINT(focus_pos, 3000, 2500)
|
|
|
|
endif
|
|
//---
|
|
|
|
//SET_GAMEPLAY_COORD_HINT(get_entity_coords(dead_body[0].ped), 3000, 2500)
|
|
|
|
if does_blip_exist(dead_body[0].blip)
|
|
remove_blip(dead_body[0].blip)
|
|
endif
|
|
|
|
task_look_at_coord(player_ped_id(), get_entity_coords(dead_body[0].ped, false), -1)
|
|
|
|
//inspect_body_0_status = 22
|
|
inspect_body_0_status = 2
|
|
|
|
else
|
|
|
|
vector focus_pos
|
|
|
|
focus_pos = get_entity_coords(dead_body[0].ped, false)
|
|
focus_pos.z -= 1.0
|
|
|
|
SET_GAMEPLAY_COORD_HINT(focus_pos, 3000, 2500)
|
|
|
|
open_sequence_task(seq)
|
|
task_turn_ped_to_face_coord(null, get_entity_coords(dead_body[0].ped, false))
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(player_ped_id(), seq)
|
|
clear_sequence_task(seq)
|
|
|
|
fail_safe_time = get_game_timer()
|
|
|
|
inspect_body_0_status++
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
if not is_ped_within_heading_range_of_entity(player_ped_id(), dead_body[0].ped, 25.00)
|
|
|
|
printstring("dead body 0 text 0")
|
|
printnl()
|
|
|
|
if has_ped_task_finished_2(player_ped_id())
|
|
|
|
open_sequence_task(seq)
|
|
task_turn_ped_to_face_coord(null, get_entity_coords(dead_body[0].ped, false))
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(player_ped_id(), seq)
|
|
clear_sequence_task(seq)
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
printstring("dead body 0 text 1")
|
|
printnl()
|
|
|
|
if has_ped_task_finished_2(player_ped_id())
|
|
//or lk_timer(fail_safe_time, 10000)
|
|
fail_safe_time = fail_safe_time
|
|
|
|
if is_ped_within_heading_range_of_entity(player_ped_id(), dead_body[0].ped, 60.00)
|
|
|
|
if is_ped_within_heading_range_of_entity(player_ped_id(), dead_body[0].ped, 35.00) //25
|
|
|
|
task_play_anim(player_ped_id(), "missfbi1ig_9", "look_front", slow_blend_in, slow_blend_out, -1)
|
|
|
|
elif get_relative_heading_beteween_player_and_ped(dead_body[0].ped) < -35.00
|
|
|
|
task_play_anim(player_ped_id(), "missfbi1ig_9", "look_right", slow_blend_in, slow_blend_out, -1)
|
|
|
|
elif get_relative_heading_beteween_player_and_ped(dead_body[0].ped) > 35.00
|
|
|
|
task_play_anim(player_ped_id(), "missfbi1ig_9", "look_left", slow_blend_in, slow_blend_out, -1)
|
|
|
|
endif
|
|
|
|
if does_blip_exist(dead_body[0].blip)
|
|
remove_blip(dead_body[0].blip)
|
|
endif
|
|
|
|
task_look_at_coord(player_ped_id(), get_entity_coords(dead_body[0].ped, false), -1)
|
|
|
|
//inspect_body_0_status = 22
|
|
|
|
inspect_body_0_status = 2
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
//inspect_body_0_status = 0
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
if get_cam_view_mode_for_context(cam_view_mode_context_on_foot) = cam_view_mode_first_person
|
|
if IS_GAMEPLAY_HINT_ACTIVE()
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_UD)
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_LR)
|
|
endif
|
|
endif
|
|
|
|
if not is_entity_playing_anim(player_ped_id(), "missfbi1ig_9", "look_front")
|
|
and not is_entity_playing_anim(player_ped_id(), "missfbi1ig_9", "look_right")
|
|
and not is_entity_playing_anim(player_ped_id(), "missfbi1ig_9", "look_left")
|
|
|
|
task_clear_look_at(player_ped_id())
|
|
|
|
STOP_GAMEPLAY_HINT()
|
|
|
|
inspect_body_0_status = 22
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 22
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
endproc
|
|
|
|
proc inspect_body_1_system()
|
|
|
|
get_relative_heading_beteween_player_and_ped(dead_body[1].ped)
|
|
|
|
switch inspect_body_1_status
|
|
|
|
case 0
|
|
|
|
request_anim_dict("missfbi1ig_9")
|
|
|
|
if has_anim_dict_loaded("missfbi1ig_9")
|
|
|
|
if is_entity_at_coord(player_ped_id(), get_entity_coords(dead_body[1].ped, false), <<2.0, 2.0, 2.5>>, false, true)
|
|
|
|
if is_ped_within_heading_range_of_entity(player_ped_id(), dead_body[1].ped, 60.00)
|
|
|
|
if is_ped_within_heading_range_of_entity(player_ped_id(), dead_body[1].ped, 35.00)//25
|
|
|
|
task_play_anim(player_ped_id(), "missfbi1ig_9", "look_front", slow_blend_in, slow_blend_out, -1)//, AF_SECONDARY | AF_UPPERBODY)
|
|
|
|
elif get_relative_heading_beteween_player_and_ped(dead_body[1].ped) < -35.00
|
|
|
|
task_play_anim(player_ped_id(), "missfbi1ig_9", "look_right", slow_blend_in, slow_blend_out, -1)//, AF_SECONDARY | AF_UPPERBODY)
|
|
|
|
elif get_relative_heading_beteween_player_and_ped(dead_body[1].ped) > 35.00
|
|
|
|
task_play_anim(player_ped_id(), "missfbi1ig_9", "look_left", slow_blend_in, slow_blend_out, -1)//, AF_SECONDARY | AF_UPPERBODY)
|
|
|
|
endif
|
|
|
|
//--- only force the hint for first person.
|
|
if get_cam_view_mode_for_context(cam_view_mode_context_on_foot) = cam_view_mode_first_person
|
|
|
|
vector focus_pos
|
|
|
|
focus_pos = get_entity_coords(dead_body[1].ped, false)
|
|
focus_pos.z -= 1.0
|
|
|
|
SET_GAMEPLAY_COORD_HINT(focus_pos, 3000, 2500)
|
|
|
|
endif
|
|
|
|
if does_blip_exist(dead_body[1].blip)
|
|
remove_blip(dead_body[1].blip)
|
|
endif
|
|
|
|
task_look_at_coord(player_ped_id(), get_entity_coords(dead_body[1].ped, false), -1)
|
|
|
|
inspect_body_1_status = 2
|
|
|
|
else
|
|
|
|
vector focus_pos
|
|
|
|
focus_pos = get_entity_coords(dead_body[1].ped, false)
|
|
focus_pos.z -= 1.0
|
|
|
|
SET_GAMEPLAY_COORD_HINT(focus_pos, 3000, 2500)
|
|
|
|
open_sequence_task(seq)
|
|
task_turn_ped_to_face_coord(null, get_entity_coords(dead_body[1].ped, false))
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(player_ped_id(), seq)
|
|
clear_sequence_task(seq)
|
|
|
|
inspect_body_1_status++
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
if not is_ped_within_heading_range_of_entity(player_ped_id(), dead_body[1].ped, 25.00)
|
|
|
|
if has_ped_task_finished_2(player_ped_id())
|
|
|
|
open_sequence_task(seq)
|
|
task_turn_ped_to_face_coord(null, get_entity_coords(dead_body[1].ped, false))
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(player_ped_id(), seq)
|
|
clear_sequence_task(seq)
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
if is_ped_within_heading_range_of_entity(player_ped_id(), dead_body[1].ped, 60.00)
|
|
|
|
if is_ped_within_heading_range_of_entity(player_ped_id(), dead_body[1].ped, 35.00)//25
|
|
|
|
task_play_anim(player_ped_id(), "missfbi1ig_9", "look_front", slow_blend_in, slow_blend_out, -1)//, AF_SECONDARY | AF_UPPERBODY)
|
|
|
|
elif get_relative_heading_beteween_player_and_ped(dead_body[1].ped) < -35.00
|
|
|
|
task_play_anim(player_ped_id(), "missfbi1ig_9", "look_right", slow_blend_in, slow_blend_out, -1)//, AF_SECONDARY | AF_UPPERBODY)
|
|
|
|
elif get_relative_heading_beteween_player_and_ped(dead_body[1].ped) > 35.00
|
|
|
|
task_play_anim(player_ped_id(), "missfbi1ig_9", "look_left", slow_blend_in, slow_blend_out, -1)//, AF_SECONDARY | AF_UPPERBODY)
|
|
|
|
endif
|
|
|
|
if does_blip_exist(dead_body[1].blip)
|
|
remove_blip(dead_body[1].blip)
|
|
endif
|
|
|
|
task_look_at_coord(player_ped_id(), get_entity_coords(dead_body[1].ped, false), -1)
|
|
|
|
inspect_body_1_status = 2
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
if get_cam_view_mode_for_context(cam_view_mode_context_on_foot) = cam_view_mode_first_person
|
|
if IS_GAMEPLAY_HINT_ACTIVE()
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_UD)
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_LR)
|
|
endif
|
|
endif
|
|
|
|
if not is_entity_playing_anim(player_ped_id(), "missfbi1ig_9", "look_front")
|
|
and not is_entity_playing_anim(player_ped_id(), "missfbi1ig_9", "look_right")
|
|
and not is_entity_playing_anim(player_ped_id(), "missfbi1ig_9", "look_left")
|
|
|
|
task_clear_look_at(player_ped_id())
|
|
|
|
STOP_GAMEPLAY_HINT()
|
|
|
|
inspect_body_1_status = 22
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 22
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
endproc
|
|
|
|
proc find_bodies_dialogue_system()
|
|
|
|
if not has_label_been_triggered("mr_k_0")
|
|
if not does_blip_exist(dead_body[0].blip)
|
|
if create_conversation(scripted_speech, "FBI1AUD", "mr_k_0", CONV_PRIORITY_low)
|
|
clear_prints()
|
|
set_label_as_triggered("mr_k_0", true)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if not has_label_been_triggered("mr_k_1")
|
|
if not does_blip_exist(dead_body[1].blip)
|
|
if create_conversation(scripted_speech, "FBI1AUD", "mr_k_1", CONV_PRIORITY_low)
|
|
clear_prints()
|
|
set_label_as_triggered("mr_k_1", true)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc give_player_weapon_component_system()
|
|
|
|
if not pistol_flash_light_equiped
|
|
if has_ped_got_weapon(player_ped_id(), weapontype_combatpistol)
|
|
GIVE_WEAPON_COMPONENT_TO_PED(player_ped_id(), weapontype_combatpistol, WEAPONCOMPONENT_AT_PI_FLSH)
|
|
set_ped_ammo(player_ped_id(), weapontype_combatpistol, 80)
|
|
SET_PLAYER_PED_WEAPON_COMP_PURCHASED(CHAR_MICHAEL, WEAPONTYPE_COMBATPISTOL, WEAPONCOMPONENT_AT_PI_FLSH, TRUE)
|
|
pistol_flash_light_equiped = true
|
|
endif
|
|
endif
|
|
|
|
endproc
|
|
|
|
func bool fbi1_find_bodies()
|
|
|
|
int i
|
|
|
|
//player_dazed_movement_system()
|
|
|
|
if not does_blip_exist(dead_body[0].blip) and not does_blip_exist(dead_body[1].blip)
|
|
// //if get_script_task_status(player_ped_id(), script_task_play_anim) != performing_task
|
|
//
|
|
if not is_entity_playing_anim(player_ped_id(), "missfbi1ig_9", "look_front")
|
|
and not is_entity_playing_anim(player_ped_id(), "missfbi1ig_9", "look_left")
|
|
and not is_entity_playing_anim(player_ped_id(), "missfbi1ig_9", "look_right")
|
|
|
|
if has_label_been_triggered("mr_k_0") and has_label_been_triggered("mr_k_1")
|
|
|
|
if not is_any_text_being_displayed(locates_data)
|
|
|
|
task_clear_look_at(player_ped_id())
|
|
//
|
|
set_player_can_use_cover(player_id(), true)
|
|
|
|
DISABLE_CHEAT(CHEAT_TYPE_GIVE_WEAPONS, false)
|
|
|
|
add_ped_for_dialogue(scripted_speech, ConvertSingleCharacter("5"), null, "dave")
|
|
|
|
shootout_time = get_game_timer()
|
|
|
|
mission_flow = shootout
|
|
|
|
return true
|
|
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
//bypass find dead bodis stage if the player decides to walk round the corner in the labs where the cia enemies are
|
|
if not is_entity_in_angled_area(player_ped_id(), <<284.463, -1354.515, 23.538>>, <<294.471, -1342.418, 26.538>>, 18.600)
|
|
and not is_entity_in_angled_area(player_ped_id(), <<277.116, -1340.988, 23.537>>, <<283.480, -1333.405, 26.537>>, 11.00)
|
|
|
|
for i = 0 to count_of(dead_body) - 1
|
|
if does_blip_exist(dead_body[i].blip)
|
|
remove_blip(dead_body[i].blip)
|
|
endif
|
|
endfor
|
|
|
|
phone_call_system_status = 3
|
|
|
|
set_player_can_use_cover(player_id(), true)
|
|
|
|
DISABLE_CHEAT(CHEAT_TYPE_GIVE_WEAPONS, false)
|
|
|
|
bypass_find_dead_bodies_stage = true
|
|
|
|
mission_flow = shootout
|
|
|
|
return true
|
|
|
|
endif
|
|
|
|
|
|
//stops player climbing onto dead bodies bead and then playing look at anim - bug 1484345
|
|
if is_ped_in_specific_room(player_ped_id(), <<288.9353, -1347.9430, 23.5378>>, "BodyStorage", "v_coroner")
|
|
disable_control_action(PLAYER_CONTROL, INPUT_JUMP)
|
|
endif
|
|
|
|
inspect_body_0_system()
|
|
|
|
inspect_body_1_system()
|
|
|
|
find_bodies_dialogue_system()
|
|
|
|
give_player_weapon_component_system()
|
|
|
|
return false
|
|
|
|
|
|
endfunc
|
|
|
|
|
|
//OPTIMISE TO NEW DOOR SYSTEM
|
|
func bool elevator_door_system()
|
|
|
|
if not has_label_been_triggered("lift0")
|
|
if not is_any_text_being_displayed(locates_data)
|
|
if is_entity_in_angled_area(player_ped_id(), <<246.014, -1370.986, 23.537>>, <<248.076, -1372.730, 26.537>>, 3.2)
|
|
if create_conversation(scripted_speech, "FBI1AUD", "lift0", CONV_PRIORITY_low)
|
|
set_label_as_triggered("lift0", true)
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if not is_ped_injured(cia_enemy[9].ped)
|
|
if not has_label_been_triggered("cia_attak4")
|
|
//if (left_door_pos < -0.5) and (right_door_pos > 0.5)
|
|
if ((DOOR_SYSTEM_GET_OPEN_RATIO(fbi_door[8]) < -0.5) and (DOOR_SYSTEM_GET_OPEN_RATIO(fbi_door[9]) > 0.5))
|
|
if not is_any_text_being_displayed(locates_data)
|
|
if create_conversation(scripted_speech, "FBI1AUD", "cia_attak4", CONV_PRIORITY_low)
|
|
set_label_as_triggered("cia_attak4", true)
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if activate_elevator_door_system
|
|
if move_doors_with_new_door_system(fbi_door[8], fbi_door[9], true, 0.5)
|
|
return true
|
|
endif
|
|
endif
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
func bool area_check_and_timer()
|
|
|
|
if not is_entity_in_angled_area(player_ped_id(), <<287.544, -1354.412, 23.247>>, <<294.497, -1345.887, 26.247>>, 13.4)
|
|
if lk_timer(attack_time, 5000)
|
|
|
|
return true
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
if attack_time = 0
|
|
attack_time = get_game_timer()
|
|
endif
|
|
|
|
endif
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
proc cia_enemy_ai_system()
|
|
|
|
int i = 0
|
|
|
|
for i = 0 to count_of(cia_enemy) - 1
|
|
|
|
if not is_ped_injured(cia_enemy[i].ped)
|
|
|
|
switch cia_enemy_ai_status[i]
|
|
|
|
case attack_phase_1
|
|
|
|
switch i
|
|
|
|
case 0
|
|
|
|
//cia_enemy_cover_point[0] = cia_enemy_cover_point[0]
|
|
|
|
REGISTER_TARGET(cia_enemy[i].ped, player_ped_id())
|
|
|
|
open_sequence_task(seq)
|
|
task_put_ped_directly_into_cover(null, cia_enemy[i].run_to_pos, 2000, false, 0.25, false, false, cia_enemy_cover_point[0], true)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(cia_enemy[i].ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
//force_ped_motion_state(cia_enemy[i].ped, ms_on_foot_run)
|
|
|
|
// SET_COMBAT_FLOAT(cia_enemy[i].ped, CCF_TIME_BETWEEN_BURSTS_IN_COVER, -1) //10
|
|
// SET_COMBAT_FLOAT(cia_enemy[i].ped, CCF_TIME_BETWEEN_PEEKS, 3.0) //
|
|
|
|
//SET_PED_RESET_FLAG(cia_enemy[i].ped, PRF_ForcePeekFromCover, TRUE)
|
|
|
|
//SET_PED_CAN_PEEK_IN_COVER(cia_enemy[i].ped, TRUE)
|
|
|
|
cia_enemy_ai_status[i] = get_to_pos_1
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
task_aim_gun_at_coord(cia_enemy[i].ped, <<270.7, -1343.9, 25.3>>, -1)
|
|
|
|
cia_enemy_ai_status[i] = get_to_pos_1
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
task_aim_gun_at_coord(cia_enemy[i].ped, <<270.7, -1343.9, 25.3>>, -1)
|
|
|
|
cia_enemy_ai_status[i] = get_to_pos_1
|
|
|
|
break
|
|
|
|
case 3
|
|
|
|
task_aim_gun_at_coord(cia_enemy[i].ped, <<270.7, -1343.9, 25.3>>, -1)
|
|
|
|
cia_enemy_ai_status[i] = get_to_pos_1
|
|
|
|
break
|
|
|
|
case 4
|
|
|
|
open_sequence_task(seq)
|
|
task_put_ped_directly_into_cover(null, <<262.68463, -1358.72913, 23.53772>>, -1)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(cia_enemy[i].ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
cia_enemy_ai_status[i] = get_to_pos_1
|
|
|
|
break
|
|
|
|
case 5
|
|
|
|
//if is_entity_in_angled_area(player_ped_id(), <<268.798, -1358.956, 23.247>>, <<252.790, -1345.520, 26.72>>, 5.0)
|
|
if is_ped_injured(cia_enemy[6].ped)
|
|
or is_entity_in_angled_area(player_ped_id(), <<256.101, -1364.552, 23.538>>, <<252.639, -1361.677, 26.538>>, 2.2)
|
|
|
|
open_sequence_task(seq)
|
|
task_pause(null, (50 * get_random_int_in_range(1, 2)))//1000
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(cia_enemy[i].ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
cia_enemy_ai_status[i] = get_to_pos_1
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 6
|
|
|
|
task_aim_gun_at_coord(cia_enemy[i].ped, <<270.7, -1343.9, 25.3>>, -1)
|
|
|
|
cia_enemy_ai_status[i] = get_to_pos_1
|
|
|
|
break
|
|
|
|
case 7
|
|
|
|
task_aim_gun_at_coord(cia_enemy[7].ped, <<268.82, -1343.19, 25.13>>, -1)
|
|
|
|
cia_enemy_ai_status[i] = attack_phase_2
|
|
|
|
break
|
|
|
|
case 8
|
|
|
|
task_aim_gun_at_coord(cia_enemy[i].ped, <<270.7, -1343.9, 25.3>>, -1)
|
|
|
|
cia_enemy_ai_status[i] = get_to_pos_1
|
|
|
|
break
|
|
|
|
case 9
|
|
|
|
stop_ped_speaking(cia_enemy[i].ped, true) //fix for ped being blipped by blipping system
|
|
|
|
task_aim_gun_at_entity(cia_enemy[i].ped, player_ped_id(), -1)
|
|
|
|
cia_enemy_ai_status[i] = get_to_pos_1
|
|
|
|
break
|
|
|
|
//linked with ped 10 and 14
|
|
case 10
|
|
|
|
if is_ped_injured(cia_enemy[2].ped)
|
|
or is_entity_in_angled_area(player_ped_id(), <<267.960, -1350.535, 23.538>>, <<264.483, -1347.523, 26.538>>, 2.0)
|
|
or is_entity_in_angled_area(player_ped_id(), <<259.288, -1353.374, 23.536>>, <<250.221, -1345.979, 28.536>>, 2.0)
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy[i].ped, cia_enemy[i].run_to_pos, 2.0)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_CAN_CHARGE, TRUE)
|
|
task_combat_hated_targets_around_ped(cia_enemy[i].ped, 200.00)
|
|
|
|
cia_enemy_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 11
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<236.294, -1369.881, 25.801>> , <<237.938, -1371.343, 29.301>>, 5.000)//4.0
|
|
or is_entity_in_angled_area(player_ped_id(), <<234.600, -1371.647, 26.095>>, <<238.332, -1374.823, 29.095>>, 2.200)
|
|
|
|
set_ped_capsule(cia_enemy[i].ped, 0.50)
|
|
|
|
open_sequence_task(seq)
|
|
TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY(null, cia_enemy[i].run_to_pos, player_ped_id(), pedmove_run, false, 0.5, 0.8)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(cia_enemy[i].ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
start_audio_scene("FBI_1_AGENT_BURSTS_THROUGH_DOOR")
|
|
|
|
cia_enemy_ai_status[i] = get_to_pos_1
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 12
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<255.901, -1363.158, 28.578>>, <<257.557, -1364.607, 32.078>>, 3.0) //2.0
|
|
or is_entity_in_angled_area(player_ped_id(), <<253.856, -1358.690, 28.654>>, <<257.135, -1361.471, 31.654>>, 2.1)
|
|
or has_ped_been_harmed(cia_enemy[i].ped, cia_enemy[i].health)
|
|
|
|
open_sequence_task(seq)
|
|
TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY(null, cia_enemy[i].run_to_pos, player_ped_id(), pedmove_run, false, 0.5, 0.8)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(cia_enemy[i].ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
cia_enemy_ai_status[i] = get_to_pos_1
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 13
|
|
|
|
if is_entity_in_angled_area(player_ped_id(),<<244.371, -1367.501, 28.648>>, <<242.762, -1366.151, 31.648>>, 1.4)
|
|
|
|
// open_sequence_task(seq)
|
|
// task_pause(null, 1000)
|
|
// close_sequence_task(seq)
|
|
// task_perform_sequence(cia_enemy[i].ped, seq)
|
|
// clear_sequence_task(seq)
|
|
|
|
cia_enemy_ai_status[i] = get_to_pos_1
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 14
|
|
|
|
//same as 10
|
|
if is_ped_injured(cia_enemy[2].ped)
|
|
or is_entity_in_angled_area(player_ped_id(), <<267.960, -1350.535, 23.538>>, <<264.483, -1347.523, 26.538>>, 2.0)
|
|
or is_entity_in_angled_area(player_ped_id(), <<259.288, -1353.374, 23.536>>, <<250.221, -1345.979, 28.536>>, 2.0)
|
|
|
|
open_sequence_task(seq)
|
|
task_pause(null, 2000)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(cia_enemy[i].ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
cia_enemy_ai_status[i] = get_to_pos_1
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 15
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<287.544, -1354.412, 23.247>>, <<294.497, -1345.887, 26.247>>, 13.4)
|
|
|
|
open_sequence_task(seq)
|
|
TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY(null, cia_enemy[i].run_to_pos, player_ped_id(), pedmove_run, false, 0.5, 4.0)
|
|
task_aim_gun_at_entity(null, player_ped_id(), 7500)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(cia_enemy[i].ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
else
|
|
|
|
open_sequence_task(seq)
|
|
task_pause(null, 500)
|
|
TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY(null, cia_enemy[i].run_to_pos, player_ped_id(), pedmove_run, false, 0.5, 4.0)
|
|
task_aim_gun_at_entity(null, player_ped_id(), 7500)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(cia_enemy[i].ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
endif
|
|
|
|
cia_enemy_ai_status[i] = get_to_pos_1
|
|
|
|
break
|
|
|
|
case 16
|
|
|
|
open_sequence_task(seq)
|
|
TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY(null, cia_enemy[i].run_to_pos, player_ped_id(), 1.5, false, 0.5, 0.8)
|
|
task_put_ped_directly_into_cover(null, <<280.03, -1344.69, 23.53>>, -1, true)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(cia_enemy[i].ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
SET_COMBAT_FLOAT(cia_enemy[i].ped, CCF_TIME_BETWEEN_BURSTS_IN_COVER, 10.00) //10.00
|
|
SET_COMBAT_FLOAT(cia_enemy[i].ped, CCF_TIME_BETWEEN_PEEKS, 5.0)
|
|
|
|
cia_enemy_ai_status[i] = get_to_pos_1
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
break
|
|
|
|
case get_to_pos_1
|
|
|
|
switch i
|
|
|
|
case 0
|
|
|
|
|
|
//SET_PED_RESET_FLAG(cia_enemy[i].ped, PRF_ForcePeekFromCover, TRUE)
|
|
//SET_PED_CAN_PEEK_IN_COVER(cia_enemy[i].ped, TRUE)
|
|
|
|
if has_char_task_finished_2(cia_enemy[i].ped, script_task_perform_sequence)
|
|
or has_ped_been_harmed(cia_enemy[i].ped, cia_enemy[i].health)
|
|
or (has_player_antagonised_ped(cia_enemy[i].ped, 10.0) and is_ped_in_cover(cia_enemy[i].ped, true))
|
|
or (is_entity_in_angled_area(player_ped_id(), <<276.603, -1347.275, 23.248>>, <<279.499, -1343.830, 26.748>>, 2.0) and is_ped_in_cover(cia_enemy[i].ped, true))
|
|
|
|
// SET_COMBAT_FLOAT(cia_enemy[i].ped, CCF_TIME_BETWEEN_BURSTS_IN_COVER, 2.5)
|
|
// SET_COMBAT_FLOAT(cia_enemy[i].ped, CCF_TIME_BETWEEN_PEEKS, 10.0)
|
|
// //SET_PED_COMBAT_MOVEMENT(cia_enemy[i].ped, CM_STATIONARY)
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy[i].ped, cia_enemy[i].run_to_pos, 8.0)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_CAN_CHARGE, TRUE)
|
|
|
|
//set_ped_sphere_defensive_area(cia_enemy[i].ped, <<266.4477, -1342.3348, 23.5380>>, 4.0, false, true)
|
|
task_combat_ped(cia_enemy[i].ped, player_ped_id())
|
|
|
|
cia_enemy_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
//if is_entity_in_angled_area(player_ped_id(), <<276.603, -1347.275, 23.248>>, <<279.499, -1343.830, 26.748>>, 1.0)
|
|
//if is_entity_in_angled_area(player_ped_id(), <<274.059, -1345.187, 23.538>>, <<276.915, -1341.710, 26.538>>, 4.0)
|
|
if is_entity_in_angled_area(player_ped_id(), <<272.711, -1344.186, 23.538>>, <<275.649, -1340.646, 26.538>>, 1.6)
|
|
|
|
SET_PED_CHANCE_OF_FIRING_BLANKS(cia_enemy[i].ped, 0.5, 0.8)
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy[i].ped, cia_enemy[i].run_to_pos, 2.0)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_CAN_CHARGE, TRUE)
|
|
task_combat_hated_targets_around_ped(cia_enemy[i].ped, 200.00)
|
|
|
|
cia_enemy_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
SET_PED_RESET_FLAG(cia_enemy[i].ped, PRF_ConsiderAsPlayerCoverThreatWithoutLOS, true) //added for bug 1320322
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<272.293, -1345.321, 23.247>>, <<268.848, -1342.426, 26.747>>, 2.0)
|
|
or (is_ped_injured(cia_enemy[0].ped) and is_ped_injured(cia_enemy[1].ped))
|
|
|
|
if not has_label_been_triggered("cia_attak2")
|
|
//if not is_any_text_being_displayed(locates_data)
|
|
if create_conversation(scripted_speech, "FBI1AUD", "cia_attak2", CONV_PRIORITY_medium)
|
|
set_label_as_triggered("cia_attak2", true)
|
|
endif
|
|
//endif
|
|
endif
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy[i].ped, cia_enemy[i].run_to_pos, 2.0)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_DISABLE_TACTICAL_POINTS_WITHOUT_CLEAR_LOS, true) //fix for bug 1468473
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_CAN_CHARGE, TRUE)
|
|
task_combat_hated_targets_around_ped(cia_enemy[i].ped, 200.00)
|
|
|
|
cia_enemy_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 3
|
|
|
|
SET_PED_RESET_FLAG(cia_enemy[i].ped, PRF_ConsiderAsPlayerCoverThreatWithoutLOS, true)
|
|
SET_PED_RESET_FLAG(cia_enemy[i].ped, PRF_ForceEnableFlashLightForAI, TRUE)
|
|
|
|
if is_ped_injured(cia_enemy[1].ped)
|
|
or is_entity_in_angled_area(player_ped_id(), <<271.829, -1345.845, 23.538>>, <<268.325, -1342.712, 26.538>>, 1.3)
|
|
//if is_entity_in_angled_area(player_ped_id(), <<270.715, -1341.039, 23.538>>, <<274.274, -1342.370, 26.538>>, 6.0)
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy[i].ped, cia_enemy[i].run_to_pos, 2.0)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_DISABLE_TACTICAL_POINTS_WITHOUT_CLEAR_LOS, true) //fix for bug 1468473
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_CAN_CHARGE, TRUE)
|
|
task_combat_hated_targets_around_ped(cia_enemy[i].ped, 200.00)
|
|
|
|
cia_enemy_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 4
|
|
|
|
if has_ped_been_harmed(cia_enemy[i].ped, cia_enemy[i].health)
|
|
or is_entity_in_angled_area(player_ped_id(), <<268.439, -1349.881, 23.247>>, <<255.876, -1339.339, 26.748>>, 2.0)
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy[i].ped, cia_enemy[i].run_to_pos, 4.0)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_DISABLE_TACTICAL_POINTS_WITHOUT_CLEAR_LOS, true) //fix for bug 1468473
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_CAN_CHARGE, TRUE)
|
|
task_combat_hated_targets_around_ped(cia_enemy[i].ped, 200.00)
|
|
|
|
cia_enemy_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 5
|
|
|
|
if has_char_task_finished_2(cia_enemy[i].ped, script_task_perform_sequence)
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy[i].ped, cia_enemy[i].run_to_pos, 2.0)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_CAN_CHARGE, TRUE)
|
|
task_combat_hated_targets_around_ped(cia_enemy[i].ped, 200.00)
|
|
|
|
cia_enemy_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
|
|
case 6
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<268.798, -1358.956, 23.247>>, <<252.790, -1345.520, 26.72>>, 10.0) //8.5 8.0
|
|
or is_entity_in_angled_area(player_ped_id(), <<260.849, -1351.601, 23.255>>, <<257.326, -1348.643, 26.355>>, 26.300)
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy[i].ped, cia_enemy[i].run_to_pos, 2.0)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_DISABLE_TACTICAL_POINTS_WITHOUT_CLEAR_LOS, true) //fix for bug 1468473
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_CAN_CHARGE, TRUE)
|
|
task_combat_hated_targets_around_ped(cia_enemy[i].ped, 200.00)
|
|
|
|
cia_enemy_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 8
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<260.849, -1351.601, 23.255>>, <<257.326, -1348.643, 26.355>>, 26.300)
|
|
or is_entity_in_angled_area(player_ped_id(), <<259.076, -1359.946, 23.248>>, <<256.168, -1357.500, 26.748>>, 2.0)
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy[i].ped, cia_enemy[i].run_to_pos, 2.0)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
task_combat_hated_targets_around_ped(cia_enemy[i].ped, 200.00)
|
|
|
|
cia_enemy_ai_status[i] = attack_phase_2
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 9
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<252.429, -1367.320, 23.247>>, <<250.590, -1365.777, 26.72>>, 7.0)
|
|
|
|
//cia_enemy[i].blip = create_blip_for_ped(cia_enemy[i].ped, true)
|
|
|
|
stop_ped_speaking(cia_enemy[i].ped, false)
|
|
|
|
task_aim_gun_at_entity(cia_enemy[i].ped, player_ped_id(), -1)
|
|
|
|
play_sound_from_coord(lift_sound, "FBI_01_DMW_LIFT_ARRIVE", cia_enemy[i].pos, "FBI_01_SOUNDS")
|
|
|
|
activate_elevator_door_system = true
|
|
|
|
cia_enemy_ai_status[i] = attack_phase_2
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 13
|
|
|
|
if has_char_task_finished_2(cia_enemy[i].ped, script_task_perform_sequence)
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy[i].ped, cia_enemy[i].run_to_pos, 1.5)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_CAN_CHARGE, TRUE)
|
|
task_combat_hated_targets_around_ped(cia_enemy[i].ped, 200.00)
|
|
|
|
cia_enemy_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 11
|
|
|
|
if has_char_task_finished_2(cia_enemy[i].ped, script_task_perform_sequence)
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy[i].ped, cia_enemy[i].run_to_pos, 2.0) //1.0
|
|
task_combat_ped(cia_enemy[i].ped, player_ped_id())
|
|
|
|
cia_enemy_ai_status[i] = attack_phase_2
|
|
|
|
else
|
|
|
|
//stops peds gun and hand clipping through the door
|
|
set_ped_capsule(cia_enemy[i].ped, 0.50)
|
|
|
|
endif
|
|
|
|
if not has_label_been_triggered("cia_attak3")
|
|
if not is_any_text_being_displayed(locates_data)
|
|
if create_conversation(scripted_speech, "FBI1AUD", "cia_attak3", CONV_PRIORITY_medium)
|
|
set_label_as_triggered("cia_attak3", true)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
break
|
|
|
|
case 12
|
|
|
|
if has_char_task_finished_2(cia_enemy[i].ped, script_task_perform_sequence)
|
|
|
|
if not has_label_been_triggered("cia_attak1")
|
|
if not is_any_text_being_displayed(locates_data)
|
|
if create_conversation(scripted_speech, "FBI1AUD", "cia_attak1", CONV_PRIORITY_medium)
|
|
set_label_as_triggered("cia_attak1", true)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy[i].ped, cia_enemy[i].run_to_pos, 2.0)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_CAN_CHARGE, TRUE)
|
|
task_combat_hated_targets_around_ped(cia_enemy[i].ped, 200.00)
|
|
|
|
cia_enemy_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 14
|
|
|
|
if has_char_task_finished_2(cia_enemy[i].ped, script_task_perform_sequence)
|
|
|
|
SET_PED_CHANCE_OF_FIRING_BLANKS(cia_enemy[i].ped, 0.5, 0.8)
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy[i].ped, cia_enemy[i].run_to_pos, 2.0)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_CAN_CHARGE, TRUE)
|
|
task_combat_hated_targets_around_ped(cia_enemy[i].ped, 200.00)
|
|
|
|
cia_enemy_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 15
|
|
|
|
// weapon_type players_weapon
|
|
// players_weapon = weapontype_unarmed
|
|
// get_current_ped_weapon(player_ped_id(), players_weapon)
|
|
|
|
if is_entity_at_coord(cia_enemy[i].ped, cia_enemy[i].run_to_pos, <<2.0, 2.0, 2.0>>)
|
|
if not has_label_been_triggered("cia_attak0")
|
|
if not is_any_text_being_displayed(locates_data)
|
|
if create_conversation(scripted_speech, "FBI1AUD", "cia_attak0", CONV_PRIORITY_medium)
|
|
set_label_as_triggered("cia_attak0", true)
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if has_char_task_finished_2(cia_enemy[i].ped, script_task_perform_sequence)
|
|
//or not is_entity_in_angled_area(player_ped_id(), <<287.544, -1354.412, 23.247>>, <<294.497, -1345.887, 26.247>>, 13.4)
|
|
or has_ped_been_harmed(cia_enemy[15].ped, cia_enemy[15].health)
|
|
or has_ped_been_harmed(cia_enemy[16].ped, cia_enemy[16].health)
|
|
or is_player_targeting_ped(cia_enemy[15].ped)
|
|
or is_player_free_aiming_at_entity(player_id(), cia_enemy[15].ped)
|
|
or is_ped_shooting(player_ped_id())
|
|
//or (players_weapon != weapontype_unarmed and CAN_PED_SEE_HATED_PED(cia_enemy[i].ped, player_ped_id()))
|
|
//or get_distance_between_coords(get_entity_coords(cia_enemy[i].ped), get_entity_coords(player_ped_id())) < 2.0
|
|
or (not is_entity_in_angled_area(player_ped_id(), <<287.544, -1354.412, 23.247>>, <<294.497, -1345.887, 26.247>>, 13.4) and get_distance_between_coords(get_entity_coords(cia_enemy[i].ped), get_entity_coords(player_ped_id())) < 3.0)
|
|
|
|
if not has_label_been_triggered("cia_attak0")
|
|
if not is_any_text_being_displayed(locates_data)
|
|
if create_conversation(scripted_speech, "FBI1AUD", "cia_attak0", CONV_PRIORITY_medium)
|
|
set_label_as_triggered("cia_attak0", true)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy[i].ped, cia_enemy[i].run_to_pos, 2.0)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_CAN_CHARGE, TRUE)
|
|
task_combat_hated_targets_around_ped(cia_enemy[i].ped, 200.00)
|
|
|
|
cia_enemy_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
|
|
case 16
|
|
|
|
weapon_type players_weapon
|
|
players_weapon = weapontype_unarmed
|
|
get_current_ped_weapon(player_ped_id(), players_weapon)
|
|
|
|
if has_char_task_finished_2(cia_enemy[i].ped, script_task_perform_sequence)
|
|
//or get_distance_between_coords(get_entity_coords(cia_enemy[i].ped), get_entity_coords(player_ped_id())) < 2.0
|
|
or not is_entity_in_angled_area(player_ped_id(), <<287.544, -1354.412, 23.247>>, <<294.497, -1345.887, 26.247>>, 13.4)
|
|
or has_ped_been_harmed(cia_enemy[15].ped, cia_enemy[15].health)
|
|
or has_ped_been_harmed(cia_enemy[16].ped, cia_enemy[16].health)
|
|
or is_player_targeting_ped(cia_enemy[i].ped)
|
|
//or is_player_free_aiming_at_entity(player_id(), cia_enemy[i].ped)
|
|
//or (players_weapon != weapontype_unarmed and CAN_PED_SEE_HATED_PED(cia_enemy[i].ped, player_ped_id()))
|
|
or is_ped_shooting(player_ped_id())
|
|
|
|
SET_COMBAT_FLOAT(cia_enemy[i].ped, CCF_TIME_BETWEEN_BURSTS_IN_COVER, 2.5)
|
|
SET_COMBAT_FLOAT(cia_enemy[i].ped, CCF_TIME_BETWEEN_PEEKS, 10.0)
|
|
SET_PED_COMBAT_MOVEMENT(cia_enemy[i].ped, CM_STATIONARY)
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy[i].ped, cia_enemy[i].run_to_pos, 2.0)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_CAN_CHARGE, TRUE)
|
|
task_combat_hated_targets_around_ped(cia_enemy[i].ped, 200.00)
|
|
|
|
cia_enemy_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
// case 17
|
|
//
|
|
// break
|
|
|
|
endswitch
|
|
|
|
break
|
|
|
|
case attack_phase_2
|
|
|
|
switch i
|
|
|
|
case 1
|
|
|
|
if has_char_task_finished_2(cia_enemy[i].ped, script_task_perform_sequence)
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy[i].ped, cia_enemy[i].run_to_pos, 8.0)
|
|
set_ped_sphere_defensive_area(cia_enemy[i].ped, <<271.9024, -1359.9326, 23.5377 >>, 8.0, false, true)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_CAN_CHARGE, TRUE)
|
|
task_combat_hated_targets_around_ped(cia_enemy[i].ped, 200.00)
|
|
|
|
cia_enemy_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 2
|
|
case 6
|
|
|
|
// if not has_label_been_triggered("fbi1_ciawpn")
|
|
// if create_conversation(scripted_speech, "fbi1aud", "fbi1_ciawpn", CONV_priority_medium)
|
|
// set_label_as_triggered("fbi1_ciawpn", true)
|
|
// script_assert("test DIALOGUE")
|
|
// endif
|
|
// endif
|
|
|
|
if has_char_task_finished_2(cia_enemy[i].ped, script_task_perform_sequence)
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy[i].ped, cia_enemy[i].run_to_pos, 2.0)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_CAN_CHARGE, TRUE)
|
|
task_combat_hated_targets_around_ped(cia_enemy[i].ped, 200.00)
|
|
|
|
cia_enemy_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 7
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<260.849, -1351.601, 23.255>>, <<257.326, -1348.643, 26.355>>, 26.300)
|
|
or is_entity_in_angled_area(player_ped_id(), <<259.076, -1359.946, 23.248>>, <<256.168, -1357.500, 26.748>>, 2.0)
|
|
or is_entity_in_angled_area(player_ped_id(), <<273.560, -1343.790, 23.538>>, <<270.113, -1340.897, 26.538>>, 2.0)
|
|
or has_ped_been_harmed(cia_enemy[i].ped, cia_enemy[i].health)
|
|
//or has_player_antagonised_ped(cia_enemy[i].ped, 7.0)
|
|
or IS_PLAYER_TARGETTING_ENTITY(player_id(), cia_enemy[i].ped)
|
|
or is_player_free_aiming_at_entity(player_id(), cia_enemy[i].ped)
|
|
|
|
open_sequence_task(seq)
|
|
TASK_GO_TO_COORD_WHILE_AIMING_AT_ENTITY(null, cia_enemy[i].run_to_pos, player_ped_id(), pedmove_run, true, 0.5, 0.8)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(cia_enemy[i].ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
cia_enemy_ai_status[i] = get_to_pos_2
|
|
endif
|
|
|
|
break
|
|
|
|
case 8
|
|
|
|
if is_ped_injured(cia_enemy[9].ped)
|
|
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_CAN_CHARGE, TRUE)
|
|
|
|
cia_enemy_ai_status[i] = do_nothing
|
|
endif
|
|
|
|
break
|
|
|
|
case 9
|
|
|
|
if elevator_door_system()
|
|
|
|
set_ped_reset_flag(cia_enemy[i].ped, PRF_ConsiderAsPlayerCoverThreatWithoutLOS, true)
|
|
|
|
SET_PED_CHANCE_OF_FIRING_BLANKS(cia_enemy[i].ped, 0.5, 0.8)
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy[i].ped, cia_enemy[i].run_to_pos, 2.0)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_CAN_CHARGE, TRUE)
|
|
task_combat_hated_targets_around_ped(cia_enemy[i].ped, 200.00)
|
|
|
|
cia_enemy_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 11
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<236.687, -1369.182, 26.866>>, <<238.485, -1370.617, 30.466>>, 1.3)
|
|
|
|
REMOVE_PED_DEFENSIVE_AREA(cia_enemy[i].ped)
|
|
set_ped_combat_movement(cia_enemy[i].ped, CM_WILLADVANCE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_CAN_CHARGE, TRUE)
|
|
|
|
task_combat_hated_targets_around_ped(cia_enemy[i].ped, 200.00)
|
|
|
|
cia_enemy_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
break
|
|
|
|
case get_to_pos_2
|
|
|
|
switch i
|
|
|
|
case 7
|
|
|
|
if has_char_task_finished_2(cia_enemy[i].ped, script_task_perform_sequence)
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy[i].ped, cia_enemy[i].run_to_pos, 2.0)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy[i].ped, CA_CAN_CHARGE, TRUE)
|
|
task_combat_hated_targets_around_ped(cia_enemy[i].ped, 200.00)
|
|
|
|
cia_enemy_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
break
|
|
|
|
case do_nothing
|
|
|
|
switch i
|
|
|
|
case 2
|
|
|
|
SET_PED_RESET_FLAG(cia_enemy[i].ped, PRF_ConsiderAsPlayerCoverThreatWithoutLOS, true)
|
|
|
|
break
|
|
|
|
case 3
|
|
|
|
SET_PED_RESET_FLAG(cia_enemy[i].ped, PRF_ConsiderAsPlayerCoverThreatWithoutLOS, true)
|
|
SET_PED_RESET_FLAG(cia_enemy[i].ped, PRF_ForceEnableFlashLightForAI, TRUE)
|
|
|
|
break
|
|
|
|
case 6
|
|
|
|
// if not has_label_been_triggered("fbi1_ciawpn")
|
|
// if create_conversation(scripted_speech, "fbi1aud", "fbi1_ciawpn", CONV_priority_medium)
|
|
// set_label_as_triggered("fbi1_ciawpn", true)
|
|
// endif
|
|
// endif
|
|
|
|
break
|
|
|
|
case 12
|
|
|
|
if not has_label_been_triggered("cia_attak1")
|
|
if not is_any_text_being_displayed(locates_data)
|
|
if create_conversation(scripted_speech, "FBI1AUD", "cia_attak1", CONV_PRIORITY_medium)
|
|
set_label_as_triggered("cia_attak1", true)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
break
|
|
|
|
case 15
|
|
|
|
if not has_label_been_triggered("cia_attak0")
|
|
if not is_any_text_being_displayed(locates_data)
|
|
if create_conversation(scripted_speech, "FBI1AUD", "cia_attak0", CONV_PRIORITY_medium)
|
|
set_label_as_triggered("cia_attak0", true)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
else
|
|
|
|
switch i
|
|
|
|
case 11
|
|
|
|
if cia_enemy[i].created
|
|
if IS_AUDIO_SCENE_ACTIVE("FBI_1_AGENT_BURSTS_THROUGH_DOOR")
|
|
STOP_AUDIO_SCENE("FBI_1_AGENT_BURSTS_THROUGH_DOOR")
|
|
endif
|
|
endif
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
endif
|
|
|
|
endfor
|
|
|
|
endproc
|
|
|
|
proc cia_enemy_top_floor_ai_system()
|
|
|
|
int i = 0
|
|
|
|
//is_entity_at_coord(player_ped_id(), cia_enemy_top_floor[1].run_to_pos, <<1.0, 1.0, 1.0>>)
|
|
|
|
for i = 0 to count_of(cia_enemy_top_floor) - 1
|
|
|
|
if not is_ped_injured(cia_enemy_top_floor[i].ped)
|
|
|
|
switch cia_enemy_top_floor_ai_status[i]
|
|
|
|
case attack_phase_1
|
|
|
|
switch i
|
|
|
|
case 0
|
|
|
|
open_sequence_task(seq)
|
|
task_put_ped_directly_into_cover(null, <<242.27132, -1367.46399, 38.53431>>, -1, false, 0, false, false, cia_enemy_top_floor_cover_point[0])
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(cia_enemy_top_floor[i].ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
force_ped_ai_and_animation_update(cia_enemy_top_floor[i].ped)
|
|
|
|
cia_enemy_top_floor_ai_status[i] = get_to_pos_1
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
// if is_entity_in_angled_area(player_ped_id(), <<247.127, -1367.785, 38.540>>, <<249.778, -1364.398, 42.040>>, 3.000)
|
|
// script_assert("test 0")
|
|
// endif
|
|
//
|
|
// if is_entity_in_angled_area(player_ped_id(), <<244.069, -1383.662, 38.542>>, <<246.962, -1380.216, 42.042>>, 2.000)
|
|
// script_assert("test 1")
|
|
// endif
|
|
//
|
|
// if is_entity_in_angled_area(player_ped_id(), <<247.172, -1369.088, 38.537>>, <<249.700, -1371.208, 42.042>>, 2.0)
|
|
// script_assert("test 2")
|
|
// endif
|
|
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<247.127, -1367.785, 38.540>>, <<249.778, -1364.398, 42.040>>, 5.000)
|
|
or is_entity_in_angled_area(player_ped_id(), <<244.069, -1383.662, 38.542>>, <<246.962, -1380.216, 42.042>>, 2.000)
|
|
or is_entity_in_angled_area(player_ped_id(), <<247.172, -1369.088, 38.537>>, <<249.700, -1371.208, 42.042>>, 2.0)
|
|
or get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_Coords(cia_enemy_top_floor[i].ped)) < 8.0
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy_top_floor[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy_top_floor[i].ped, cia_enemy_top_floor[i].run_to_pos, 1.0)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy_top_floor[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy_top_floor[i].ped, CA_CAN_CHARGE, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy_top_floor[i].ped, CA_DISABLE_SEEK_DUE_TO_LINE_OF_SIGHT, false)//fix for 1419889
|
|
task_combat_ped(cia_enemy_top_floor[i].ped, player_ped_id())
|
|
|
|
//cia_enemy_top_floor_ai_status[i] = get_to_pos_1
|
|
cia_enemy_top_floor_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
task_put_ped_directly_into_cover(cia_enemy_top_floor[i].ped, <<239.49130, -1379.23584, 38.53422>>, -1, false, 0, true, true, cia_enemy_top_floor_cover_point[2])
|
|
force_ped_ai_and_animation_update(cia_enemy_top_floor[i].ped, true)
|
|
|
|
cia_enemy_top_floor_ai_status[i] = get_to_pos_1
|
|
|
|
break
|
|
|
|
case 3
|
|
case 4
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy_top_floor[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy_top_floor[i].ped, cia_enemy_top_floor[i].run_to_pos, 2.0)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy_top_floor[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy_top_floor[i].ped, CA_CAN_CHARGE, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy_top_floor[i].ped, CA_DISABLE_SEEK_DUE_TO_LINE_OF_SIGHT, false)
|
|
task_combat_ped(cia_enemy_top_floor[i].ped, player_ped_id())
|
|
|
|
cia_enemy_top_floor_ai_status[i] = get_to_pos_1
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
break
|
|
|
|
case get_to_pos_1
|
|
|
|
switch i
|
|
|
|
case 0
|
|
|
|
//if is_entity_in_angled_area(player_ped_id(), <<247.127, -1367.785, 38.540>>, <<249.778, -1364.398, 42.040>>, 2.000)
|
|
//or is_entity_in_angled_area(player_ped_id(), <<244.069, -1383.662, 38.542>>, <<246.962, -1380.216, 42.042>>, 2.000)
|
|
//or is_entity_in_angled_area(player_ped_id(), <<247.172, -1369.088, 38.537>>, <<249.700, -1371.208, 42.042>>, 2.0)
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<250.167, -1365.738, 38.539>>, <<252.706, -1367.846, 41.039>>, 1.4)
|
|
or has_ped_been_harmed(cia_enemy_top_floor[i].ped, cia_enemy_top_floor[i].health)
|
|
or has_player_antagonised_ped(cia_enemy_top_floor[i].ped, 15.00)
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy_top_floor[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy_top_floor[i].ped, cia_enemy_top_floor[i].run_to_pos, 1.0)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy_top_floor[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy_top_floor[i].ped, CA_CAN_CHARGE, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy_top_floor[i].ped, CA_DISABLE_SEEK_DUE_TO_LINE_OF_SIGHT, false)
|
|
task_combat_ped(cia_enemy_top_floor[i].ped, player_ped_id())
|
|
|
|
cia_enemy_top_floor_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
if not has_label_been_triggered("cia_attak5")
|
|
if not is_any_text_being_displayed(locates_data)
|
|
if create_conversation(scripted_speech, "FBI1AUD", "cia_attak5", CONV_PRIORITY_medium)
|
|
set_label_as_triggered("cia_attak5", true)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if has_char_task_finished_2(cia_enemy_top_floor[i].ped, script_task_perform_sequence)
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy_top_floor[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy_top_floor[i].ped, cia_enemy_top_floor[i].run_to_pos, 1.0)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy_top_floor[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy_top_floor[i].ped, CA_CAN_CHARGE, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy_top_floor[i].ped, CA_DISABLE_SEEK_DUE_TO_LINE_OF_SIGHT, false)
|
|
task_combat_ped(cia_enemy_top_floor[i].ped, player_ped_id())
|
|
|
|
cia_enemy_top_floor_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<252.643, -1367.767, 38.534>>, <<250.109, -1365.654,41.534>>, 1.3)
|
|
or has_ped_been_harmed(cia_enemy_top_floor[i].ped, cia_enemy_top_floor[i].health)
|
|
or has_player_antagonised_ped(cia_enemy_top_floor[i].ped, 15.00)
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy_top_floor[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy_top_floor[i].ped, cia_enemy_top_floor[i].run_to_pos, 1.0)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy_top_floor[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy_top_floor[i].ped, CA_CAN_CHARGE, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy_top_floor[i].ped, CA_DISABLE_SEEK_DUE_TO_LINE_OF_SIGHT, false)
|
|
task_combat_ped(cia_enemy_top_floor[i].ped, player_ped_id())
|
|
|
|
cia_enemy_top_floor_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 3
|
|
case 4
|
|
|
|
//incase player runs past guards before they reach their defensive sphere.
|
|
if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(cia_enemy_top_floor[i].ped)) < 5
|
|
|
|
REMOVE_PED_DEFENSIVE_AREA(cia_enemy_top_floor[i].ped)
|
|
set_ped_combat_movement(cia_enemy_top_floor[i].ped, CM_WILLADVANCE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy_top_floor[i].ped, CA_CAN_CHARGE, TRUE)
|
|
|
|
cia_enemy_top_floor_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
break
|
|
|
|
case get_to_pos_2
|
|
|
|
break
|
|
|
|
case do_nothing
|
|
|
|
switch i
|
|
|
|
case 1
|
|
|
|
if not has_label_been_triggered("cia_attak5")
|
|
if not is_any_text_being_displayed(locates_data)
|
|
if create_conversation(scripted_speech, "FBI1AUD", "cia_attak5", CONV_PRIORITY_medium)
|
|
set_label_as_triggered("cia_attak5", true)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
endif
|
|
|
|
endfor
|
|
|
|
endproc
|
|
|
|
proc cia_enemy_outside_ai_system()
|
|
|
|
int i = 0
|
|
|
|
for i = 0 to count_of(cia_enemy_outside) - 1
|
|
|
|
if not is_ped_injured(cia_enemy_outside[i].ped)
|
|
|
|
switch cia_enemy_outside_ai_status[i]
|
|
|
|
case attack_phase_1
|
|
|
|
switch i
|
|
|
|
case 0
|
|
case 1
|
|
case 2
|
|
|
|
set_blocking_of_non_temporary_events(cia_enemy_outside[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy_outside[i].ped, cia_enemy_outside[i].run_to_pos, 2.0)
|
|
task_combat_ped(cia_enemy_outside[i].ped, player_ped_id())
|
|
|
|
cia_enemy_outside_ai_status[i] = get_to_pos_1
|
|
|
|
break
|
|
|
|
case 3
|
|
|
|
if is_vehicle_driveable(police_car[0].veh)
|
|
if is_playback_going_on_for_vehicle(police_car[0].veh)
|
|
if ((get_time_position_in_recording(police_car[0].veh) + 500) > GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(police_car[0].recording_number, "lkfbi1"))
|
|
|
|
stop_playback_recorded_vehicle(police_car[0].veh)
|
|
|
|
set_ped_combat_attributes(cia_enemy_outside[i].ped, CA_OPEN_COMBAT_WHEN_DEFENSIVE_AREA_IS_REACHED, true)
|
|
set_blocking_of_non_temporary_events(cia_enemy_outside[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy_outside[i].ped, cia_enemy_outside[i].run_to_pos, 2.0)
|
|
task_combat_hated_targets_around_ped(cia_enemy_outside[i].ped, 200.00)
|
|
set_ped_as_no_longer_needed(cia_enemy_outside[i].ped)
|
|
set_model_as_no_longer_needed(cia_enemy_outside[i].model)
|
|
cia_enemy_outside_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
endif
|
|
|
|
else
|
|
|
|
set_ped_combat_attributes(cia_enemy_outside[i].ped, CA_OPEN_COMBAT_WHEN_DEFENSIVE_AREA_IS_REACHED, true)
|
|
set_blocking_of_non_temporary_events(cia_enemy_outside[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy_outside[i].ped, cia_enemy_outside[i].run_to_pos, 2.0)
|
|
task_combat_hated_targets_around_ped(cia_enemy_outside[i].ped, 200.00)
|
|
set_ped_as_no_longer_needed(cia_enemy_outside[i].ped)
|
|
set_model_as_no_longer_needed(cia_enemy_outside[i].model)
|
|
cia_enemy_outside_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 4
|
|
|
|
if is_vehicle_driveable(police_car[0].veh)
|
|
if not is_playback_going_on_for_vehicle(police_car[0].veh)
|
|
|
|
open_sequence_task(seq)
|
|
task_pause(null, 500)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(cia_enemy_outside[i].ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
cia_enemy_outside_ai_status[i] = get_to_pos_1
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
set_ped_combat_attributes(cia_enemy_outside[i].ped, CA_OPEN_COMBAT_WHEN_DEFENSIVE_AREA_IS_REACHED, true)
|
|
set_blocking_of_non_temporary_events(cia_enemy_outside[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy_outside[i].ped, cia_enemy_outside[i].run_to_pos, 2.0)
|
|
task_combat_hated_targets_around_ped(cia_enemy_outside[i].ped, 200.00)
|
|
set_ped_as_no_longer_needed(cia_enemy_outside[i].ped)
|
|
set_model_as_no_longer_needed(cia_enemy_outside[i].model)
|
|
cia_enemy_outside_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
break
|
|
|
|
case get_to_pos_1
|
|
|
|
switch i
|
|
|
|
case 0
|
|
case 1
|
|
case 2
|
|
|
|
if is_entity_at_coord(cia_enemy_outside[i].ped, cia_enemy_outside[i].run_to_pos, <<4.0, 4.0, 4.0>>)
|
|
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy_outside[i].ped, CA_REMOVE_AREA_SET_WILL_ADVANCE_WHEN_DEFENSIVE_AREA_REACHED, TRUE)
|
|
SET_PED_COMBAT_ATTRIBUTES(cia_enemy_outside[i].ped, CA_CAN_CHARGE, TRUE)
|
|
|
|
set_ped_as_no_longer_needed(cia_enemy_outside[i].ped)
|
|
set_model_as_no_longer_needed(cia_enemy_outside[i].model)
|
|
|
|
cia_enemy_outside_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 4
|
|
|
|
if has_ped_task_finished_2(cia_enemy_outside[i].ped)
|
|
|
|
set_ped_combat_attributes(cia_enemy_outside[i].ped, CA_OPEN_COMBAT_WHEN_DEFENSIVE_AREA_IS_REACHED, true)
|
|
set_blocking_of_non_temporary_events(cia_enemy_outside[i].ped, false)
|
|
set_ped_sphere_defensive_area(cia_enemy_outside[i].ped, cia_enemy_outside[i].run_to_pos, 2.0)
|
|
task_combat_hated_targets_around_ped(cia_enemy_outside[i].ped, 200.00)
|
|
set_ped_as_no_longer_needed(cia_enemy_outside[i].ped)
|
|
set_model_as_no_longer_needed(cia_enemy_outside[i].model)
|
|
cia_enemy_outside_ai_status[i] = do_nothing
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
break
|
|
|
|
case do_nothing
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
endif
|
|
|
|
endfor
|
|
|
|
endproc
|
|
|
|
proc fbi1_escape_cutscene()
|
|
|
|
int i = 0
|
|
|
|
// if IS_CUTSCENE_SKIP_BUTTON_JUST_PRESSED_WITH_DELAY()
|
|
//
|
|
// if fbi1_escape_cutscene_status < 3
|
|
// fbi1_escape_cutscene_status = 22
|
|
// endif
|
|
//
|
|
// endif
|
|
|
|
//temp fix untill interior polys are fixed for bug 1169985 and mover is added to animation of jumping from ledge
|
|
// if fbi1_escape_cutscene_status > 0
|
|
// clear_room_for_entity(player_ped_id())
|
|
// endif
|
|
|
|
switch fbi1_escape_cutscene_status
|
|
|
|
case 0
|
|
|
|
disable_on_foot_first_person_view_this_update()
|
|
|
|
if is_synchronized_scene_running(cutscene_index)
|
|
if get_synchronized_scene_phase(cutscene_index) >= 0.95
|
|
|
|
if start_new_cutscene_no_fade()
|
|
|
|
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
|
|
|
|
SET_INSTANCE_PRIORITY_HINT(INSTANCE_HINT_NONE)
|
|
|
|
set_fake_wanted_level(3)
|
|
|
|
for i = 0 to count_of(cia_enemy) - 1
|
|
delete_ped(cia_enemy[i].ped)
|
|
//set_model_as_no_longer_needed(cia_enemy[i].model)
|
|
|
|
if does_blip_exist(cia_enemy[i].blip)
|
|
remove_blip(cia_enemy[i].blip)
|
|
endif
|
|
endfor
|
|
|
|
for i = 0 to count_of(cia_enemy_top_floor) - 1
|
|
delete_ped(cia_enemy_top_floor[i].ped)
|
|
//set_model_as_no_longer_needed(cia_enemy_top_floor[i].model)
|
|
|
|
if does_blip_exist(cia_enemy_top_floor[i].blip)
|
|
remove_blip(cia_enemy_top_floor[i].blip)
|
|
endif
|
|
endfor
|
|
|
|
for i = 0 to count_of(doctor) - 1
|
|
delete_ped(doctor[i].ped)
|
|
set_model_as_no_longer_needed(doctor[i].model)
|
|
endfor
|
|
|
|
for i = 0 to count_of(dead_body) - 1
|
|
delete_ped(dead_body[i].ped)
|
|
set_model_as_no_longer_needed(dead_body[i].model)
|
|
endfor
|
|
|
|
for i = 0 to count_of(bin_bag) - 1
|
|
delete_object(bin_bag[i].obj)
|
|
set_model_as_no_longer_needed(bin_bag[i].model)
|
|
endfor
|
|
|
|
set_object_as_no_longer_needed(clip_board.obj)
|
|
set_model_as_no_longer_needed(clip_board.model)
|
|
|
|
set_object_as_no_longer_needed(pen.obj)
|
|
set_model_as_no_longer_needed(pen.model)
|
|
|
|
clear_area(<<233.4198, -1355.4689, 29.5590>>, 200.0, true)
|
|
|
|
prepare_music_event("FBI1_JUMP")
|
|
|
|
START_AUDIO_SCENE("FBI_1_JUMP")
|
|
|
|
REMOVE_SCENARIO_BLOCKING_AREAS()
|
|
|
|
for i = 0 to count_of(ambient_car) - 1
|
|
|
|
if does_entity_exist(ambient_car[i].veh)
|
|
if not is_entity_at_coord(ambient_car[i].veh, ambient_car[i].pos, <<5.0, 5.0, 5.0>>, false)
|
|
set_entity_coords(ambient_car[i].veh, ambient_car[i].pos, false)
|
|
set_entity_heading(ambient_car[i].veh, ambient_car[i].heading)
|
|
endif
|
|
set_vehicle_as_no_longer_needed(ambient_car[i].veh)
|
|
set_model_as_no_longer_needed(ambient_car[i].model)
|
|
endif
|
|
|
|
endfor
|
|
|
|
if does_entity_exist(window.obj)
|
|
break_entity_glass(window.obj, <<236.05, -1357.488, 40.02953>>, 0.3, <<-0.6866288, 0.6827963, -0.2496601>>, 500, 2, true)
|
|
endif
|
|
|
|
CLEAR_ROOM_FOR_GAME_VIEWPORT()
|
|
clear_room_for_entity(player_ped_id())
|
|
|
|
CASCADE_SHADOWS_ENABLE_ENTITY_TRACKER(false)
|
|
|
|
cutscene_pos = <<236.344, -1356.722, 39.304>>
|
|
cutscene_rot = <<0.000, 0.000, -40.680>>
|
|
cutscene_index = CREATE_SYNCHRONIZED_SCENE(cutscene_pos, cutscene_rot)
|
|
//TASK_SYNCHRONIZED_SCENE(player_ped_id(), cutscene_index, "missfbi1", "ledge_jump", normal_BLEND_IN, slow_BLEND_OUT, synced_scene_none, rbf_none, normal_blend_in)//, SYNCED_SCENE_USE_PHYSICS)
|
|
TASK_SYNCHRONIZED_SCENE(player_ped_id(), cutscene_index, "missfbi1", "ledge_jump", instant_BLEND_IN, slow_BLEND_OUT)//, SYNCED_SCENE_USE_PHYSICS)
|
|
force_ped_ai_and_animation_update(player_ped_id())
|
|
|
|
PLAY_SYNCHRONIZED_ENTITY_ANIM(bin[0].obj, cutscene_index, "ledge_jump_Bin", "missfbi1", instant_BLEND_IN)
|
|
force_entity_ai_and_animation_update(bin[0].obj)
|
|
|
|
camera_a = CREATE_CAMERA(camtype_animated, true)
|
|
play_cam_anim(camera_a, "ledge_jump_cam", "missfbi1", cutscene_pos, cutscene_rot)
|
|
|
|
render_script_cams(true, false)
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("FBI_1_AGENT_BURSTS_THROUGH_DOOR")
|
|
STOP_AUDIO_SCENE("FBI_1_AGENT_BURSTS_THROUGH_DOOR")
|
|
endif
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("FBI_1_ESCAPE_BASE_SCENE")
|
|
STOP_AUDIO_SCENE("FBI_1_ESCAPE_BASE_SCENE")
|
|
endif
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("FBI_1_AIM_AT_WINDOW")
|
|
STOP_AUDIO_SCENE("FBI_1_AIM_AT_WINDOW")
|
|
endif
|
|
|
|
fbi1_escape_cutscene_status++
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
if IS_SYNCHRONIZED_SCENE_RUNNING(cutscene_index)
|
|
if GET_SYNCHRONIZED_SCENE_PHASE(cutscene_index) >= 0.09 //0.115
|
|
|
|
// set_cam_active(camera_a, false)
|
|
// set_cam_active(camera_b, false)
|
|
//
|
|
// spline_cam = CREATE_CAM("DEFAULT_SPLINE_CAMERA", FALSE)
|
|
//
|
|
// ADD_CAM_SPLINE_NODE(spline_cam, <<235.931274,-1356.435059,42.545235>>,<<-75.071808,2.145942,83.985275>>, 0)
|
|
// ADD_CAM_SPLINE_NODE(spline_cam, <<236.183426,-1355.823242,35.880280>>,<<-60.726868,2.145942,84.420143>>, 2000)
|
|
// ADD_CAM_SPLINE_NODE(spline_cam, <<237.374268,-1354.117065,34.712608>>,<<-34.718250,2.145941,124.594528>>, 6000) //1500
|
|
//
|
|
// set_cam_fov(spline_cam, 32.799644)
|
|
//
|
|
// set_cam_active(spline_cam, true)
|
|
|
|
fbi1_escape_cutscene_status++
|
|
|
|
endif
|
|
endif
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
if IS_SYNCHRONIZED_SCENE_RUNNING(cutscene_index)
|
|
if GET_SYNCHRONIZED_SCENE_PHASE(cutscene_index) >= 0.21
|
|
|
|
//play_sound_from_entity(land_on_truck_sound, "FBI_01_DMW_FLATBED_LAND", player_ped_id())
|
|
|
|
play_sound_from_entity(-1, "FBI_01_DMW_GARBAGE_LAND", player_ped_id(), "FBI_01_DMW_02_SOUNDS")
|
|
|
|
SET_CONTROL_SHAKE(PLAYER_CONTROL, 1000, 200)
|
|
|
|
//start_particle_fx_non_looped_at_coord("scr_fbi1_litter", get_offset_from_entity_in_world_coords(bin[0].obj, <<0.0, 0.0, 1.0>>), <<0.0, 0.0, 0.0>>)
|
|
start_particle_fx_non_looped_at_coord("scr_fbi1_litter", <<233.5, -1355.5, 31.3>>, <<0.0, 0.0, 0.0>>)
|
|
|
|
APPLY_PED_DAMAGE_PACK(player_ped_id(), "SCR_Dumpster", 0.0, 1.0)
|
|
|
|
// if is_vehicle_driveable(players_truck.veh)
|
|
// START_PARTICLE_FX_NON_LOOPED_ON_ENTITY("scr_fbi1_paper_landing", players_truck.veh, <<0.0, 0.0, 0.0>>, <<0.0, 0.0, 0.0>>)
|
|
// endif
|
|
|
|
fbi1_escape_cutscene_status++
|
|
|
|
endif
|
|
endif
|
|
|
|
break
|
|
|
|
case 3
|
|
|
|
if IS_SYNCHRONIZED_SCENE_RUNNING(cutscene_index)
|
|
if GET_SYNCHRONIZED_SCENE_PHASE(cutscene_index) >= 0.46
|
|
|
|
// set_cam_active(spline_cam, false)
|
|
//
|
|
// destroy_cam(spline_cam)
|
|
//
|
|
// spline_cam = CREATE_CAM("DEFAULT_SPLINE_CAMERA", FALSE)
|
|
//
|
|
// ADD_CAM_SPLINE_NODE(spline_cam, <<237.385590,-1354.566162,33.550797>>,<<-20.611015,2.149386,113.411957>>, 0)
|
|
// ADD_CAM_SPLINE_NODE(spline_cam, <<237.446762,-1354.415771,33.265747>>,<<-14.840520,2.149385,103.458557>>, 1500)
|
|
// //ADD_CAM_SPLINE_NODE(spline_cam, <<238.240799,-1352.943604,32.459808>>,<<-31.116749,2.145944,127.979942>>, 3000) //1500
|
|
// ADD_CAM_SPLINE_NODE_USING_GAMEPLAY_FRAME(spline_cam, 3000)
|
|
//
|
|
// set_cam_fov(spline_cam, 50.00)
|
|
//
|
|
// set_cam_active(spline_cam, true)
|
|
|
|
trigger_music_event("FBI1_LAND_TRUCK")
|
|
|
|
// set_cam_active(camera_g, true)
|
|
// set_cam_active_with_interp(camera_h, camera_g, 5500, graph_type_linear)
|
|
|
|
// original_time = get_game_timer()
|
|
|
|
fbi1_escape_cutscene_status++
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 4
|
|
|
|
if IS_SYNCHRONIZED_SCENE_RUNNING(cutscene_index)
|
|
if GET_SYNCHRONIZED_SCENE_PHASE(cutscene_index) >= 0.95
|
|
|
|
request_model(franklin.model)
|
|
request_model(cia_enemy_outside[1].model)
|
|
request_model(cia_enemy_outside[3].model)
|
|
request_model(police_car[0].model)
|
|
request_model(franklins_car.model)
|
|
set_vehicle_model_is_suppressed(franklins_car.model, true)
|
|
request_anim_dict("MISSFBI1LEADINOUTFBI_1_EXT")
|
|
request_vehicle_recording(police_car[0].recording_number, "lkfbi1")
|
|
|
|
fbi1_escape_cutscene_status++
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 5
|
|
|
|
// SET_GAMEPLAY_CAM_FOLLOW_PED_THIS_UPDATE(player_ped_id())
|
|
//
|
|
// set_gameplay_cam_relative_heading(0.0)
|
|
|
|
|
|
if IS_SYNCHRONIZED_SCENE_RUNNING(cutscene_index)
|
|
if GET_SYNCHRONIZED_SCENE_PHASE(cutscene_index) >= 1.0
|
|
|
|
REPLAY_STOP_EVENT()
|
|
|
|
NEW_LOAD_SCENE_STOP()
|
|
|
|
CASCADE_SHADOWS_INIT_SESSION()
|
|
|
|
remove_anim_dict("missfbi1")
|
|
|
|
set_time_scale(1.0)
|
|
|
|
set_fake_wanted_level(0)
|
|
|
|
set_max_wanted_level(3)
|
|
set_create_random_cops(false)
|
|
set_wanted_level_multiplier(0.5)
|
|
|
|
set_player_wanted_level(player_id(), 3)
|
|
set_player_wanted_level_now(player_id())
|
|
SET_WANTED_LEVEL_DIFFICULTY(player_id(), 0)
|
|
SET_ALL_RANDOM_PEDS_FLEE(player_id(), true)
|
|
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_OPEN(FBI1_COP_LOSS_TIME)
|
|
|
|
DISTANT_COP_CAR_SIRENS(false)
|
|
|
|
// setup_radio_station()
|
|
|
|
original_time = 0 //set timer to spawn enemies in.
|
|
|
|
set_entity_proofs(player_ped_id(), false, false, false, false, false)
|
|
|
|
end_cutscene_no_fade(true, false)
|
|
|
|
STOP_RENDERING_SCRIPT_CAMS_USING_CATCH_UP()
|
|
|
|
SET_PED_USING_ACTION_MODE(player_ped_id(), false)
|
|
SET_PED_STEALTH_MOVEMENT(player_ped_id(), false)
|
|
|
|
print_now("LOSE_WANTED", default_god_text_time, 1)
|
|
|
|
remove_ped_for_dialogue(scripted_speech, 3)
|
|
remove_ped_for_dialogue(scripted_speech, 4)
|
|
remove_ped_for_dialogue(scripted_speech, 5)
|
|
remove_ped_for_dialogue(scripted_speech, 6)
|
|
remove_ped_for_dialogue(scripted_speech, 7)
|
|
remove_ped_for_dialogue(scripted_speech, 8)
|
|
|
|
if is_valid_interior(coroner_interior)
|
|
unpin_interior(coroner_interior)
|
|
endif
|
|
|
|
INSTANTLY_FILL_VEHICLE_POPULATION()
|
|
|
|
PLAY_POLICE_REPORT("SCRIPTED_SCANNER_REPORT_FIB_1_01", 0.0)
|
|
|
|
trigger_music_event("FBI1_LOSE_COPS_START")
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("FBI_1_JUMPR")
|
|
STOP_AUDIO_SCENE("FBI_1_JUMP")
|
|
endif
|
|
|
|
start_audio_scene("FBI_1_LOSE_COPS")
|
|
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(4, "outside coroners escape police", true)
|
|
|
|
//force cleanup will overwrite the weapon globals that the checkpoint data was stored in with the original
|
|
//weapons that were stored at the begining of the mission. Therefore we need to store it here.
|
|
GET_PED_WEAPONS(player_ped_id(), fbi1_player_stored_weapons)
|
|
|
|
REPLAY_STOP_EVENT()
|
|
|
|
//mission_flow = lose_cops
|
|
mission_flow = get_to_hills
|
|
|
|
SET_ALL_RANDOM_PEDS_FLEE(player_id(), true)
|
|
|
|
//**********debug
|
|
//fbi1_escape_cutscene_status++
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
// case 22
|
|
//
|
|
// if is_screen_faded_out()
|
|
// if is_cutscene_active()
|
|
// if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("michael", GET_PLAYER_PED_MODEL(char_michael))
|
|
//
|
|
// CLEAR_ROOM_FOR_GAME_VIEWPORT()
|
|
// clear_room_for_entity(player_ped_id())
|
|
//
|
|
// cutscene_pos = << 236.235, -1356.587, 39.257 >>
|
|
// cutscene_rot = << 0.000, 0.000, -41.000 >>
|
|
// cutscene_index = CREATE_SYNCHRONIZED_SCENE(cutscene_pos, cutscene_rot)
|
|
// TASK_SYNCHRONIZED_SCENE(player_ped_id(), cutscene_index, "missfbi1", "ledge_look", INSTANT_BLEND_IN, normal_BLEND_OUT)//, SYNCED_SCENE_USE_PHYSICS)
|
|
//
|
|
// set_cam_active(camera_e, true)
|
|
// set_cam_active_with_interp(camera_f, camera_e, 5500, graph_type_linear)
|
|
//
|
|
// render_script_cams(true, false)
|
|
//
|
|
// shake_cam(camera_f, "HAND_SHAKE", 1.0)
|
|
//
|
|
// original_time = get_game_timer()
|
|
//
|
|
// do_screen_fade_in(default_fade_time)
|
|
//
|
|
// fbi1_escape_cutscene_status = 3
|
|
//
|
|
// endif
|
|
// endif
|
|
// endif
|
|
//
|
|
// break
|
|
|
|
endswitch
|
|
|
|
endproc
|
|
|
|
proc special_ability_help_text_system()
|
|
|
|
switch special_ability_help_text_system_status
|
|
|
|
case 0
|
|
|
|
//if is_ped_injured(cia_enemy[15].ped)
|
|
//or is_entity_in_angled_area(player_ped_id(),<<284.213, -1347.350, 23.247>>, <<280.730, -1344.500, 26.747>>, 2.000)
|
|
if is_entity_in_angled_area(player_ped_id(), <<273.212, -1344.521, 23.538>>, <<276.105, -1341.074, 26.538>>, 2.0)
|
|
|
|
SPECIAL_ABILITY_UNLOCK(GET_PLAYER_PED_MODEL(CHAR_MICHAEL))
|
|
SPECIAL_ABILITY_FILL_METER(player_id(), true)
|
|
SPECIAL_ABILITY_CHARGE_NORMALIZED(player_id(), 1.0, true)
|
|
|
|
IF IS_USING_KEYBOARD_AND_MOUSE(PLAYER_CONTROL)
|
|
print_help("FBI1_help4_KM", 12500)
|
|
ELSE
|
|
print_help("FBI1_help4", 12500)
|
|
ENDIF
|
|
FLASH_ABILITY_BAR(DEFAULT_HELP_TEXT_TIME)
|
|
|
|
special_ability_help_text_system_status++
|
|
endif
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
if not is_help_message_being_displayed()
|
|
help_time = get_game_timer()
|
|
special_ability_help_text_system_status++
|
|
endif
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
if lk_timer(help_time, 2000)
|
|
print_help("FBI1_help5", 12000)
|
|
special_ability_help_text_system_status++
|
|
endif
|
|
|
|
break
|
|
|
|
case 3
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
endproc
|
|
|
|
proc create_2_cia_enemy_top_floor_peds()
|
|
|
|
if not cia_enemy_top_floor[3].created
|
|
|
|
int dead_count = 0
|
|
int k = 0
|
|
|
|
vector player_pos
|
|
|
|
for k = 0 to 2
|
|
|
|
if does_entity_exist(cia_enemy_top_floor[k].ped)
|
|
|
|
if is_ped_injured(cia_enemy_top_floor[k].ped)
|
|
dead_count++
|
|
endif
|
|
|
|
else
|
|
|
|
if cia_enemy_top_floor[k].created
|
|
dead_count++
|
|
endif
|
|
|
|
endif
|
|
|
|
endfor
|
|
|
|
if dead_count >= 2
|
|
|
|
player_pos = get_entity_coords(player_ped_id())
|
|
|
|
if player_pos.z > 38.00
|
|
|
|
setup_enemy(cia_enemy_top_floor[3])
|
|
setup_enemy(cia_enemy_top_floor[4])
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc break_entity_glass_system()
|
|
|
|
switch break_entity_glass_system_status
|
|
|
|
case 0
|
|
|
|
break_entity_glass_system_status++
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
break_entity_glass(window.obj, <<236.05, -1357.488, 40.02953>>, 0.3, <<-0.6866288, 0.6827963, -0.2496601>>, 700, 3, false) //500
|
|
|
|
break_entity_glass(window.obj, <<235.8064, -1357.778, 40.1281>>, 0.4, <<-0.6795667, 0.7014526, -0.2148329>>, 500, 3, false) //500
|
|
|
|
break_entity_glass(window.obj, <<236.3226, -1357.163, 39.7619>>, 0.5, <<-0.376403, 0.8627338, -0.3376553>>, 500, 3, false)
|
|
|
|
break_entity_glass_system_status++
|
|
|
|
break_the_glass_window = true
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
endproc
|
|
|
|
|
|
func bool fb1_shootout_master_controller_system()
|
|
|
|
int i = 0
|
|
|
|
ped_structure_are_all_enemies_dead(cia_enemy)
|
|
|
|
ped_structure_are_all_enemies_dead(cia_enemy_top_floor)
|
|
|
|
if does_blip_exist(doctor[3].blip)
|
|
printstring("doctor 3 blip exists")
|
|
printnl()
|
|
else
|
|
printstring("doctor 3 blip DOES NOT exists")
|
|
printnl()
|
|
endif
|
|
|
|
switch fbi1_master_controller_status
|
|
|
|
case 0
|
|
|
|
// if (dave_norton_phone_call_finished and is_sphere_visible(<<284.24, -1343.17, 25.33>>, 4.0))
|
|
// or not is_entity_in_angled_area(player_ped_id(), <<287.544, -1354.412, 23.247>>, <<294.497, -1345.887, 26.247>>, 13.4)
|
|
// or lk_timer(shootout_time, 40000)
|
|
|
|
if ((dave_norton_phone_call_finished) and ((is_sphere_visible(<<284.24, -1343.17, 25.33>>, 4.0)) or (not is_entity_in_angled_area(player_ped_id(), <<287.544, -1354.412, 23.247>>, <<294.497, -1345.887, 26.247>>, 13.4))))
|
|
or not is_entity_in_angled_area(player_ped_id(), <<284.463, -1354.515, 23.538>>, <<294.471, -1342.418, 26.538>>, 18.600)
|
|
or lk_timer(shootout_time, 40000)
|
|
or bypass_find_dead_bodies_stage
|
|
|
|
//delete the first reception desk doctor
|
|
if does_entity_exist(doctor[4].ped)
|
|
delete_ped(doctor[4].ped)
|
|
endif
|
|
|
|
SET_INSTANCE_PRIORITY_HINT(INSTANCE_HINT_SHOOTING)
|
|
|
|
set_player_can_use_cover(player_id(), true)
|
|
|
|
remove_anim_dict("Dead")
|
|
|
|
SET_PED_STEALTH_MOVEMENT(player_ped_id(), false)
|
|
REMOVE_STEALTH_MODE_ASSET("MICHAEL_ACTION")
|
|
|
|
SET_PED_USING_ACTION_MODE(player_ped_id(), true)
|
|
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(fbi_door[6], 0.0, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(fbi_door[6], DOORSTATE_force_unlocked_this_frame, false, true)
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(fbi_door[7], 0.0, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(fbi_door[7], DOORSTATE_force_unlocked_this_frame, false, true)
|
|
|
|
if not does_blip_exist(escape_blip)
|
|
escape_blip = create_blip_for_coord(<<236.4304, -1357.7548, 38.5342>>)
|
|
endif
|
|
|
|
// if phone_call_system_status < 3 //stops the music event triggering on a reaply.
|
|
// KILL_PHONE_CONVERSATION()
|
|
// phone_call_system_status = 2
|
|
// endif
|
|
|
|
|
|
for i = 15 to 15//16
|
|
setup_enemy(cia_enemy[i])
|
|
STOP_PED_SPEAKING(cia_enemy[i].ped, true)
|
|
endfor
|
|
add_ped_for_dialogue(scripted_speech, ConvertSingleCharacter("6"), cia_enemy[15].ped, "CIA1")
|
|
|
|
start_audio_scene("FBI_1_SHOOTOUT_GROUND_FLOOR")
|
|
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(2, "Start of shootout")
|
|
|
|
REPLAY_RECORD_BACK_FOR_TIME(2.0, 12.0, REPLAY_IMPORTANCE_HIGH)
|
|
|
|
GET_PED_WEAPONS(player_ped_id(), fbi1_player_stored_weapons)
|
|
|
|
fbi1_master_controller_status++
|
|
|
|
endif
|
|
|
|
//saftey case
|
|
// if is_entity_in_angled_area(player_ped_id(),<<284.213, -1347.350, 23.247>>, <<280.730, -1344.500, 26.747>>, 2.000)
|
|
// fbi1_master_controller_status = 1
|
|
// endif
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<284.213, -1347.350, 23.247>>, <<280.730, -1344.500, 26.747>>, 3.000) //2.0
|
|
or is_entity_in_angled_area(player_ped_id(), <<278.582, -1349.604, 23.528>>, <<281.867, -1345.703, 26.728>>, 6.5)
|
|
|
|
for i = 0 to 10
|
|
|
|
if i != 7
|
|
setup_enemy(cia_enemy[i])
|
|
|
|
if i = 3
|
|
GIVE_WEAPON_COMPONENT_TO_PED(cia_enemy[i].ped, WEAPONTYPE_pumpshotgun, WEAPONCOMPONENT_AT_AR_FLSH)
|
|
endif
|
|
endif
|
|
|
|
endfor
|
|
|
|
setup_enemy(cia_enemy[14])
|
|
|
|
add_ped_for_dialogue(scripted_speech, ConvertSingleCharacter("8"), cia_enemy[2].ped, "CIA3")
|
|
add_ped_for_dialogue(scripted_speech, ConvertSingleCharacter("E"), cia_enemy[6].ped, "CIA8")
|
|
add_ped_for_dialogue(scripted_speech, ConvertSingleCharacter("B"), cia_enemy[9].ped, "CIA5")
|
|
|
|
|
|
for i = 2 to 3
|
|
setup_enemy(doctor[i])
|
|
set_ped_can_be_targetted(doctor[i].ped, false)
|
|
endfor
|
|
|
|
//doctor[indexs] change from 3 to 2 in order to fix bug 1823962
|
|
add_ped_for_dialogue(scripted_speech, ConvertSingleCharacter("F"), doctor[2].ped, "doctor2")
|
|
add_ped_for_dialogue(scripted_speech, ConvertSingleCharacter("D"), doctor[3].ped, "doctor1")
|
|
|
|
|
|
original_time = get_game_timer()
|
|
|
|
fbi1_master_controller_status++
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<243.756, -1367.919, 23.537>>, <<247.835, -1362.988, 26.737>>, 2.6) //6.2
|
|
|
|
release_named_script_audio_bank("SCRIPT\\FBI_01_DMW_01")
|
|
|
|
// for i = 0 to 10
|
|
// if does_entity_exist(cia_enemy[i].ped)
|
|
// set_ped_as_no_longer_needed(cia_enemy[i].ped)
|
|
// endif
|
|
// if does_blip_exist(cia_enemy[i].blip)
|
|
// remove_blip(cia_enemy[i].blip)
|
|
// endif
|
|
// endfor
|
|
|
|
for i = 11 to 13
|
|
|
|
if not cia_enemy[i].created
|
|
|
|
setup_enemy(cia_enemy[i])
|
|
|
|
endif
|
|
endfor
|
|
|
|
add_ped_for_dialogue(scripted_speech, ConvertSingleCharacter("A"), cia_enemy[11].ped, "CIA4")
|
|
add_ped_for_dialogue(scripted_speech, ConvertSingleCharacter("7"), cia_enemy[12].ped, "CIA2")
|
|
|
|
//print_now("FBI1_God_3", default_god_text_time, 1)
|
|
|
|
SEND_TEXT_MESSAGE_TO_CURRENT_PLAYER(char_dave, "FBI1_WPN", TXTMSG_UNLOCKED, TXTMSG_CRITICAL)
|
|
|
|
bin_bag[1].blip = create_blip_for_entity(bin_bag[1].obj)
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("FBI_1_SHOOTOUT_GROUND_FLOOR")
|
|
STOP_AUDIO_SCENE("FBI_1_SHOOTOUT_GROUND_FLOOR")
|
|
endif
|
|
|
|
start_audio_scene("FBI_1_GET_UPSTAIRS")
|
|
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(3, "half way through shootout")
|
|
|
|
GET_PED_WEAPONS(player_ped_id(), fbi1_player_stored_weapons)
|
|
|
|
fbi1_master_controller_status++
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 3
|
|
|
|
request_model(V_ILev_Cor_windowSmash)
|
|
|
|
request_model(ambient_car[0].model)
|
|
set_vehicle_model_is_suppressed(ambient_car[0].model, true)
|
|
|
|
request_model(ambient_car[1].model)
|
|
set_vehicle_model_is_suppressed(ambient_car[1].model, true)
|
|
|
|
// if is_entity_in_angled_area(player_ped_id(), <<251.106, -1365.121, 28.653>>, <<253.007, -1366.745, 31.153>>, 1.500) //6.2
|
|
|
|
// if does_blip_exist(escape_blip)
|
|
// remove_blip(escape_blip)
|
|
// endif
|
|
|
|
// escape_blip = create_blip_for_coord(<<239.5941, -1361.6381, 38.5342>>)
|
|
|
|
fbi1_master_controller_status++
|
|
|
|
// endif
|
|
|
|
break
|
|
|
|
case 4
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<252.445, -1367.718, 38.246>>, <<250.278, -1365.944, 41.246>>, 7.5)
|
|
|
|
for i = 0 to count_of(cia_enemy) - 1
|
|
if does_blip_exist(cia_enemy[i].blip)
|
|
remove_blip(cia_enemy[i].blip)
|
|
endif
|
|
endfor
|
|
|
|
for i = 0 to 2
|
|
setup_enemy(cia_enemy_top_floor[i])
|
|
endfor
|
|
|
|
add_ped_for_dialogue(scripted_speech, ConvertSingleCharacter("C"), cia_enemy_top_floor[1].ped, "CIA6")
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("FBI_1_GET_UPSTAIRS")
|
|
STOP_AUDIO_SCENE("FBI_1_GET_UPSTAIRS")
|
|
endif
|
|
|
|
start_audio_scene("FBI_1_AIM_AT_WINDOW")
|
|
|
|
print_now("FBI1_God_4", default_god_text_time, 1)
|
|
|
|
fbi1_master_controller_status++
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 5
|
|
|
|
create_2_cia_enemy_top_floor_peds()
|
|
|
|
request_model(V_ILev_Cor_windowSmash)
|
|
|
|
request_model(ambient_car[0].model)
|
|
set_vehicle_model_is_suppressed(ambient_car[0].model, true)
|
|
|
|
request_model(ambient_car[1].model)
|
|
set_vehicle_model_is_suppressed(ambient_car[1].model, true)
|
|
|
|
if does_object_of_type_exist_at_coords(<<236.03, -1357.49, 40.45>>, 2.0, V_ILev_Cor_windowSolid)
|
|
|
|
if has_model_loaded(V_ILev_Cor_windowSmash)
|
|
and has_model_loaded(ambient_car[0].model)
|
|
and has_model_loaded(ambient_car[1].model)
|
|
|
|
CREATE_MODEL_SWAP(<<236.03, -1357.49, 40.45>>, 1.0, V_ILev_Cor_windowSolid, V_ILev_Cor_windowSmash, TRUE)
|
|
window.obj = GET_CLOSEST_OBJECT_OF_TYPE(<<236.03, -1357.49, 40.45>>, 1.0, V_ILev_Cor_windowSmash)
|
|
|
|
if does_entity_exist(window.obj)
|
|
window.been_created = true
|
|
ELSE
|
|
script_assert("WINDOW_DOES_NOT_EXIST")
|
|
endif
|
|
|
|
for i = 0 to count_of(ambient_car) - 1
|
|
ambient_car[i].veh = create_vehicle(ambient_car[i].model, ambient_car[i].pos, ambient_car[i].heading)
|
|
set_vehicle_doors_locked(ambient_car[i].veh, vehiclelock_locked_but_can_be_damaged)
|
|
endfor
|
|
|
|
fbi1_master_controller_status++
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 6
|
|
|
|
create_2_cia_enemy_top_floor_peds()
|
|
|
|
if does_entity_exist(window.obj)
|
|
if is_entity_on_screen(window.obj)
|
|
freeze_entity_position(window.obj, false)
|
|
endif
|
|
else
|
|
window.obj = GET_CLOSEST_OBJECT_OF_TYPE(<<236.03, -1357.49, 40.45>>, 1.0, V_ILev_Cor_windowSmash)
|
|
if does_entity_exist(window.obj)
|
|
window.been_created = true
|
|
endif
|
|
endif
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<234.193, -1364.507, 38.634>>, <<240.026, -1357.653, 41.534>>, 6.05, false) //2.0
|
|
and does_entity_exist(window.obj)
|
|
|
|
freeze_entity_position(window.obj, false)
|
|
|
|
if not (GET_OBJECT_FRAGMENT_DAMAGE_HEALTH(window.obj, false) < 0.7)
|
|
print_now("FBI1_God_12", default_god_text_time, 1)
|
|
endif
|
|
|
|
fbi1_master_controller_status++
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 7
|
|
|
|
create_2_cia_enemy_top_floor_peds()
|
|
|
|
printfloat(GET_OBJECT_FRAGMENT_DAMAGE_HEALTH(window.obj, false))
|
|
printnl()
|
|
|
|
if GET_OBJECT_FRAGMENT_DAMAGE_HEALTH(window.obj, false) < 0.7 //0.5 0.7
|
|
|
|
if not break_the_glass_window
|
|
|
|
break_entity_glass_system()
|
|
|
|
endif
|
|
|
|
if not has_label_been_triggered("FBI1_God_14")
|
|
print_now("FBI1_God_14", default_god_text_time, 1)
|
|
set_label_as_triggered("FBI1_God_14", true)
|
|
original_time = get_game_timer()
|
|
endif
|
|
|
|
|
|
//area near window
|
|
//if is_entity_in_angled_area(player_ped_id(), <<235.770, -1358.843, 38.534>>, <<237.181, -1357.156, 41.134>>, 1.100, false) //2.0
|
|
|
|
cutscene_pos = <<236.344, -1356.722, 39.304>>
|
|
cutscene_rot = <<0.000, 0.000, -40.680>>
|
|
|
|
if is_entity_at_coord(player_ped_id(), GET_ANIM_INITIAL_OFFSET_POSITION("missfbi1", "ledge_climbout", cutscene_pos, cutscene_rot, 0), <<0.75, 0.75, 1.6>>, false)
|
|
|
|
if is_ped_within_range_of_target_heading(player_ped_id(), 48.26, 45.00)
|
|
and not is_ped_ragdoll(player_ped_id())
|
|
|
|
// if (get_entity_heading(player_ped_id()) > 85.00 and get_entity_heading(player_ped_id()) < 125.00)
|
|
// or (get_entity_heading(player_ped_id()) >= 45.00 and get_entity_heading(player_ped_id()) < 85.00)
|
|
|
|
if not has_label_been_triggered("FBI1_help6")
|
|
if lk_timer(original_time, 1000)
|
|
print_help("FBI1_help6")
|
|
set_label_as_triggered("FBI1_help6", true)
|
|
endif
|
|
endif
|
|
|
|
if is_control_pressed(player_control, input_jump)
|
|
or is_disabled_control_pressed(player_control, input_jump)
|
|
|
|
DISTANT_COP_CAR_SIRENS(TRUE)
|
|
|
|
NEW_LOAD_SCENE_START(<<235.1414, -1357.6021, 29.5540>>, CONVERT_ROTATION_TO_DIRECTION_VECTOR(<<0.0, 0.0, 53.2332>>), 5.0)
|
|
|
|
clear_help()
|
|
|
|
if is_this_print_being_displayed("FBI1_God_14")
|
|
clear_prints()
|
|
endif
|
|
|
|
if does_blip_exist(escape_blip)
|
|
remove_blip(escape_blip)
|
|
endif
|
|
|
|
set_player_control(player_id(), false)
|
|
|
|
cutscene_index = CREATE_SYNCHRONIZED_SCENE(cutscene_pos, cutscene_rot)
|
|
TASK_SYNCHRONIZED_SCENE(player_ped_id(), cutscene_index, "missfbi1", "ledge_climbout", slow_BLEND_IN, normal_BLEND_OUT, synced_scene_dont_interrupt, rbf_none, slow_blend_in)
|
|
SET_SYNCHRONIZED_SCENE_PHASE(cutscene_index, 0.11)
|
|
|
|
set_entity_proofs(player_ped_id(), true, true, true, true, true)
|
|
|
|
fbi1_master_controller_status++
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
// if is_this_print_being_displayed("FBI1_God_14")
|
|
// clear_prints()
|
|
// endif
|
|
|
|
//elif is_entity_in_angled_area(player_ped_id(), area outside 0.75 m locate)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 8
|
|
|
|
disable_on_foot_first_person_view_this_update()
|
|
|
|
if is_synchronized_scene_running(cutscene_index)
|
|
if get_synchronized_scene_phase(cutscene_index) >= 0.90
|
|
|
|
fbi1_escape_cutscene()
|
|
|
|
fbi1_master_controller_status++
|
|
|
|
return true
|
|
|
|
endif
|
|
endif
|
|
|
|
break
|
|
|
|
case 9
|
|
|
|
return true
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
proc doctors_ai_system()
|
|
|
|
int i = 0
|
|
|
|
for i = 2 to count_of(doctor) - 1
|
|
|
|
if not is_ped_injured(doctor[i].ped)
|
|
|
|
switch doctor_ai_status[i]
|
|
|
|
case action_1
|
|
|
|
switch i
|
|
|
|
case 2
|
|
case 4
|
|
|
|
open_sequence_task(seq)
|
|
task_look_at_entity(null, player_ped_id(), -1)
|
|
task_hands_up(null, -1)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(doctor[i].ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
doctor_ai_status[i] = action_1_status
|
|
|
|
break
|
|
|
|
case 3
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<273.347, -1344.646, 23.247>>, <<276.306, -1341.125, 26.747>>, 2.0)
|
|
|
|
open_sequence_task(seq)
|
|
task_follow_nav_mesh_to_coord(null, doctor[i].run_to_pos, pedmove_run, -1)
|
|
task_cower(null, -1)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(doctor[i].ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
PLAY_PED_AMBIENT_SPEECH(doctor[i].ped, "SCREAM_PANIC")
|
|
|
|
doctor_ai_status[i] = action_1_status
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
break
|
|
|
|
case action_1_status
|
|
|
|
switch i
|
|
|
|
case 2
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<267.343, -1351.262, 23.543>>, <<254.703, -1340.656, 26.0>>, 6.0)
|
|
if is_sphere_visible(get_entity_coords(doctor[i].ped), 1.0)
|
|
|
|
original_time = get_game_timer()
|
|
|
|
doctor_ai_status[i] = action_2_status
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 3
|
|
|
|
if not is_entity_at_coord(doctor[i].ped, doctor[i].run_to_pos, <<2.0, 2.0, 2.5>>)
|
|
if has_char_task_finished_2(doctor[i].ped, script_task_perform_sequence)
|
|
|
|
open_sequence_task(seq)
|
|
task_follow_nav_mesh_to_coord(null, doctor[i].run_to_pos, pedmove_run, -1)
|
|
task_cower(null, -1)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(doctor[i].ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(doctor[i].ped)) < 3
|
|
if lk_timer(doctor_time[i], 10000)
|
|
|
|
play_ped_ambient_speech(doctor[i].ped, "GENERIC_FRIGHTENED_HIGH")//"WHIMPER")
|
|
//if create_conversation(scripted_speech, "FBI1AUD", "fbi_doc_cow1", conv_priority_medium)
|
|
doctor_time[i] = get_game_timer()
|
|
//endif
|
|
|
|
endif
|
|
endif
|
|
|
|
break
|
|
|
|
case 4
|
|
|
|
if not is_entity_at_coord(doctor[i].ped, doctor[i].pos, <<2.0, 2.0, 2.5>>)
|
|
if has_char_task_finished_2(doctor[i].ped, script_task_perform_sequence)
|
|
|
|
open_sequence_task(seq)
|
|
task_follow_nav_mesh_to_coord(null, doctor[i].pos, pedmove_walk -1)
|
|
task_turn_ped_to_face_entity(null, player_ped_id())
|
|
task_look_at_entity(null, player_ped_id(), -1)
|
|
task_hands_up(null, -1)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(doctor[i].ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
break
|
|
|
|
case action_2_status
|
|
|
|
switch i
|
|
|
|
case 2
|
|
|
|
if lk_timer(original_time, 250) //1000
|
|
|
|
open_sequence_task(seq)
|
|
task_cower(null, -1)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(doctor[i].ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
doctor_ai_status[i] = action_3_status
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 4
|
|
|
|
if lk_timer(doctor_4_time, 2000) //2500
|
|
|
|
open_sequence_task(seq)
|
|
task_clear_look_at(null)
|
|
task_follow_nav_mesh_to_coord(null, doctor[0].pos, pedmove_run, -1)
|
|
task_cower(null, -1)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(doctor[i].ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
doctor_ai_status[i] = action_3_status
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
break
|
|
|
|
case action_3_status
|
|
|
|
switch i
|
|
|
|
case 2
|
|
|
|
if has_ped_task_finished_2(doctor[i].ped)
|
|
|
|
open_sequence_task(seq)
|
|
task_cower(null, -1)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(doctor[i].ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
endif
|
|
|
|
|
|
//fix for bug 1765710
|
|
if not stop_doctor_2_speaking
|
|
if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(doctor[i].ped)) > 15.0
|
|
stop_ped_speaking(doctor[i].ped, true)
|
|
endif
|
|
else
|
|
if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(doctor[i].ped)) < 10.0
|
|
stop_ped_speaking(doctor[i].ped, false)
|
|
stop_doctor_2_speaking = false
|
|
endif
|
|
endif
|
|
break
|
|
|
|
endswitch
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
endif
|
|
|
|
endfor
|
|
|
|
endproc
|
|
|
|
proc turn_off_alarm()
|
|
|
|
if alarm_on
|
|
if lk_timer(alarm_time, 60000)
|
|
if IS_ALARM_PLAYING("FBI_01_MORGUE_ALARMS")
|
|
STOP_ALARM("FBI_01_MORGUE_ALARMS", true)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc phone_call_system()
|
|
|
|
switch phone_call_system_status
|
|
|
|
case 0
|
|
|
|
if PLAYER_CALL_CHAR_CELLPHONE(scripted_speech, char_dave, "fbi1aud", "call1d", conv_priority_very_high)
|
|
|
|
trigger_music_event("FBI1_CALL_NORTON")
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("FBI_1_INSPECT_BODIES")
|
|
STOP_AUDIO_SCENE("FBI_1_INSPECT_BODIES")
|
|
endif
|
|
|
|
REPLAY_RECORD_BACK_FOR_TIME(2.0, 12.0, REPLAY_IMPORTANCE_HIGHEST)
|
|
|
|
current_line = -1
|
|
phone_call_system_status++
|
|
endif
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
if not HAS_CELLPHONE_CALL_FINISHED()
|
|
if get_CURRENT_SCRIPTED_CONVERSATION_LINE() <> -1
|
|
|
|
current_line = get_CURRENT_SCRIPTED_CONVERSATION_LINE()
|
|
|
|
// if current_line > 3
|
|
// //trigger_alarm()
|
|
// phone_call_system_status = 2
|
|
// endif
|
|
|
|
endif
|
|
else
|
|
|
|
if current_line <> -1
|
|
if (NOT WAS_LAST_CELLPHONE_CALL_INTERRUPTED()) OR (current_line >= 0)
|
|
|
|
//trigger_alarm()
|
|
|
|
if not does_blip_exist(escape_blip)
|
|
escape_blip = create_blip_for_coord(<<236.4304, -1357.7548, 38.5342>>)
|
|
endif
|
|
|
|
phone_call_system_status = 2
|
|
|
|
else
|
|
phone_call_system_status = 0
|
|
endif
|
|
|
|
else
|
|
|
|
phone_call_system_status = 0
|
|
|
|
phone_hang_up_count++ //if the player constantly hang up the phone the mission will progress
|
|
|
|
if phone_hang_up_count > 2
|
|
//trigger_alarm()
|
|
phone_call_system_status = 2
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
trigger_music_event("FBI1_LEAK")
|
|
|
|
start_audio_scene("FBI_1_ESCAPE_BASE_SCENE")
|
|
|
|
dave_norton_phone_call_finished = true
|
|
|
|
alarm_time = get_game_timer()
|
|
|
|
phone_call_system_status++
|
|
|
|
break
|
|
|
|
case 3
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
endproc
|
|
|
|
func bool are_cia_enemies_close()
|
|
|
|
int i = 0
|
|
|
|
// vector player_pos = get_entity_coords(player_ped_id())
|
|
//
|
|
// float close_distance = 40.00
|
|
//
|
|
// for i = 0 to count_of(cia_enemy) - 1
|
|
// if not is_ped_injured(cia_enemy[i].ped)
|
|
// if get_distance_between_coords(player_pos, cia_enemy[i].ped) < close_distance
|
|
// return true
|
|
// endif
|
|
// endif
|
|
// endfor
|
|
//
|
|
// for i = 0 to count_of(cia_enemy_top_floor) - 1
|
|
// if not is_ped_injured(cia_enemy[i].ped)
|
|
// if get_distance_between_coords(player_pos, cia_enemy[i].ped) < close_distance
|
|
// return true
|
|
// endif
|
|
// endif
|
|
// endfor
|
|
|
|
for i = 0 to count_of(cia_enemy) - 1
|
|
if not is_ped_injured(cia_enemy[i].ped)
|
|
return true
|
|
endif
|
|
endfor
|
|
|
|
for i = 0 to count_of(cia_enemy_top_floor) - 1
|
|
if not is_ped_injured(cia_enemy_top_floor[i].ped)
|
|
return true
|
|
endif
|
|
endfor
|
|
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
proc dialogue_system()
|
|
|
|
switch dialogue_status
|
|
|
|
case 0
|
|
|
|
if has_label_been_triggered("cia_attak0")
|
|
or (cia_enemy[15].created and is_ped_injured(cia_enemy[15].ped))
|
|
if not is_any_text_being_displayed(locates_data)
|
|
clear_prints()
|
|
print_now("FBI1_God_7", default_god_text_time, 1)
|
|
|
|
dialogue_time = get_game_timer()
|
|
dialogue_status++
|
|
endif
|
|
endif
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
|
|
// if not is_ped_injured(doctor[4].ped)
|
|
//
|
|
// //if is_ped_in_specific_room(player_ped_id(), <<251.12, -1367.35, 25.00>>, "CorridorBottom")
|
|
// //if is_entity_in_angled_area(player_ped_id(), <<244.300, -1368.440, 23.543>>, <<248.479, -1363.460, 26.743>>, 7.6)
|
|
// //and ((get_entity_heading(player_ped_id()) > 4.49 and get_entity_heading(player_ped_id()) < 90.31) or get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(doctor[4].ped)) < 2.0)
|
|
//
|
|
// if allow_doctor_4_to_run()
|
|
//
|
|
// if create_conversation(scripted_speech, "fbi1aud", "fbi_esc0", CONV_priority_medium)
|
|
// set_label_as_triggered("fbi_esc0", true)
|
|
// endif
|
|
//
|
|
// dialogue_status++
|
|
//
|
|
// endif
|
|
//
|
|
// else
|
|
//
|
|
// if is_entity_in_angled_area(player_ped_id(), <<243.756, -1367.919, 23.537>>, <<247.835, -1362.988, 26.737>>, 8.200) //6.2 4.3
|
|
//
|
|
//// print_now("FBI1_God_3", default_god_text_time, 1)
|
|
//// set_label_as_triggered("FBI1_God_3", true)
|
|
//
|
|
// dialogue_status = 3
|
|
//
|
|
// endif
|
|
//
|
|
// endif
|
|
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
// if not has_label_been_triggered("fbi_esc0")
|
|
// if create_conversation(scripted_speech, "fbi1aud", "fbi_esc0", CONV_priority_medium)
|
|
// set_label_as_triggered("fbi_esc0", true)
|
|
// endif
|
|
//
|
|
// else
|
|
//
|
|
// if not is_any_text_being_displayed(locates_data)
|
|
// print_now("FBI1_God_3", default_god_text_time, 1)
|
|
// dialogue_status++
|
|
// endif
|
|
//
|
|
// endif
|
|
|
|
break
|
|
|
|
case 3
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
if lk_timer(dialogue_time, 13000)
|
|
if is_ped_shooting(player_ped_id())
|
|
|
|
//if is_ped_in_combat(player_ped_id() //or if lower enemies alive and player z is < ground gfloor
|
|
if not is_any_text_being_displayed(locates_data)
|
|
if are_cia_enemies_close()
|
|
|
|
if create_conversation(scripted_speech, "fbi1aud", "mik_attk0", CONV_priority_low)
|
|
dialogue_time = get_game_timer()
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc music_event_system()
|
|
|
|
switch music_event_system_status
|
|
|
|
case 0
|
|
|
|
if ped_structure_are_specific_number_enemies_dead(cia_enemy, (total_number_of_removed_cia_enemeis + 3))
|
|
|
|
trigger_music_event("FBI1_THREE_DEAD")
|
|
|
|
music_event_system_status++
|
|
|
|
endif
|
|
|
|
//if the player runs through without killing anyone
|
|
if prepare_music_event("FBI1_LIFT_ENEMY")
|
|
if is_entity_in_angled_area(player_ped_id(), <<252.686, -1367.138, 23.538>>, <<250.692, -1365.470, 26.1>>, 1.000)
|
|
trigger_music_event("FBI1_LIFT_ENEMY")
|
|
trigger_music_event("FBI1_THREE_DEAD")
|
|
music_event_system_status = 2
|
|
endif
|
|
endif
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
if prepare_music_event("FBI1_LIFT_ENEMY")
|
|
if is_entity_in_angled_area(player_ped_id(), <<252.686, -1367.138, 23.538>>, <<250.692, -1365.470, 26.1>>, 1.000)
|
|
trigger_music_event("FBI1_LIFT_ENEMY")
|
|
|
|
REPLAY_RECORD_BACK_FOR_TIME(4.0, 8.0, REPLAY_IMPORTANCE_NORMAL)
|
|
|
|
music_event_system_status++
|
|
endif
|
|
endif
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<243.591, -1368.662, 23.537>>, <<241.829, -1367.184, 26.137>>, 1.3)
|
|
|
|
trigger_music_event("FBI1_STAIRWELL")
|
|
|
|
music_event_system_status++
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 3
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<251.106, -1365.121, 28.653>>, <<253.007, -1366.745, 31.153>>, 1.500)
|
|
|
|
trigger_music_event("FBI1_2ND_STAIRWELL")
|
|
|
|
music_event_system_status++
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 4
|
|
|
|
if prepare_music_event("FBI1_TOP_FLOOR")
|
|
if is_entity_in_angled_area(player_ped_id(), <<252.445, -1367.718, 38.246>>, <<250.278, -1365.944, 41.246>>, 7.5)
|
|
trigger_music_event("FBI1_TOP_FLOOR")
|
|
music_event_system_status++
|
|
endif
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 5
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<238.427, -1362.878, 38.539>>, <<240.223, -1360.730, 41.746>>, 4.0, false) //2.0
|
|
|
|
trigger_music_event("FBI1_ESCAPE")
|
|
|
|
music_event_system_status++
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
endproc
|
|
|
|
proc get_weapons_back_system()
|
|
|
|
if does_entity_exist(bin_bag[1].obj)
|
|
|
|
//if get_distance_between_coords(get_entity_coords(player_ped_id()), get_entity_coords(bin_bag[1].obj)) < 2.0
|
|
if is_entity_touching_entity(player_ped_id(), bin_bag[1].obj)
|
|
|
|
delete_object(bin_bag[1].obj)
|
|
set_model_as_no_longer_needed(bin_bag[1].model)
|
|
|
|
if does_blip_exist(bin_bag[1].blip)
|
|
remove_blip(bin_bag[1].blip)
|
|
endif
|
|
|
|
//BLOCK_PLAYER_PED_WEAPON_STORE(CHAR_MICHAEL, FALSE)
|
|
RESTORE_PLAYER_PED_WEAPONS_IN_SNAPSHOT(player_ped_id(), false)
|
|
|
|
play_sound_from_entity(-1, "PICK_UP_PARACHUTE", player_ped_id(),"HUD_FRONTEND_CUSTOM_SOUNDSET")
|
|
|
|
player_weapons_restored = true
|
|
|
|
endif
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc delete_wave_one_cia_enemies_and_doctors_system()
|
|
|
|
int i = 0
|
|
|
|
switch delete_wave_one_cia_enemies_and_doctors_system_status
|
|
|
|
case 0
|
|
|
|
if is_entity_in_angled_area(player_ped_id(), <<251.106, -1365.121, 28.653>>, <<253.007, -1366.745, 31.153>>, 1.500)
|
|
|
|
delete_wave_one_cia_enemies_and_doctors_system_status++
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
vector player_pos
|
|
int peds_removed
|
|
|
|
peds_removed = 0
|
|
|
|
player_pos = get_entity_coords(player_ped_id())
|
|
|
|
for i = 0 to 10
|
|
|
|
if does_entity_exist(cia_enemy[i].ped)
|
|
|
|
if not is_entity_on_screen(cia_enemy[i].ped)
|
|
|
|
if not is_ped_in_specific_room(cia_enemy[i].ped, <<247.7852, -1366.4725, 28.6480>>, "CorridorTop", "v_coroner")
|
|
and not is_ped_in_specific_room(cia_enemy[i].ped, <<256.6936, -1363.8687, 29.5428>>, "MainStairs", "v_coroner")
|
|
and not is_ped_in_specific_room(cia_enemy[i].ped, <<250.0518, -1368.5043, 38.5342>>, "topoff_mid", "v_coroner")
|
|
and not is_entity_at_coord(cia_enemy[i].ped, player_pos, <<5.0, 5.0, 2.5>>)
|
|
|
|
delete_ped(cia_enemy[i].ped)
|
|
|
|
if does_blip_exist(cia_enemy[i].blip)
|
|
remove_blip(cia_enemy[i].blip)
|
|
endif
|
|
|
|
peds_removed++
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
if cia_enemy[i].created
|
|
peds_removed++
|
|
endif
|
|
|
|
endif
|
|
|
|
endfor
|
|
|
|
for i = 0 to count_of(doctor) - 1
|
|
|
|
if does_entity_exist(cia_enemy[i].ped)
|
|
|
|
if not is_entity_on_screen(cia_enemy[i].ped)
|
|
|
|
delete_ped(cia_enemy[i].ped)
|
|
|
|
peds_removed++
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
if cia_enemy[i].created
|
|
|
|
peds_removed++
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endfor
|
|
|
|
if peds_removed > (11 + count_of(doctor))
|
|
delete_wave_one_cia_enemies_and_doctors_system_status++
|
|
endif
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
break
|
|
|
|
endswitch
|
|
endproc
|
|
|
|
proc replay_video_recorder_system()
|
|
|
|
switch replay_video_recorder_system_status
|
|
|
|
case 0
|
|
|
|
if does_entity_exist(cia_enemy[11].ped)
|
|
replay_video_recorder_system_status++
|
|
endif
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
if is_ped_injured(cia_enemy[11].ped)
|
|
REPLAY_RECORD_BACK_FOR_TIME(3, 2.0, REPLAY_IMPORTANCE_NORMAL )
|
|
replay_video_recorder_system_status++
|
|
endif
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
endproc
|
|
|
|
|
|
func bool fbi1_shootout()
|
|
|
|
DEACTIVATE_VENDING_MACHINES_THIS_FRAME()
|
|
|
|
REPLAY_DISABLE_CAMERA_MOVEMENT_THIS_FRAME() //Fix for bug 2144295
|
|
|
|
if fb1_shootout_master_controller_system()
|
|
mission_flow = escape_cutscene
|
|
return true
|
|
endif
|
|
|
|
phone_call_system()
|
|
|
|
trigger_alarm()
|
|
|
|
cia_enemy_ai_system()
|
|
|
|
cia_enemy_top_floor_ai_system()
|
|
|
|
doctors_ai_system()
|
|
|
|
elevator_door_system()
|
|
|
|
dialogue_system()
|
|
|
|
special_ability_help_text_system()
|
|
|
|
music_event_system()
|
|
|
|
get_weapons_back_system()
|
|
|
|
give_player_weapon_component_system()
|
|
|
|
delete_wave_one_cia_enemies_and_doctors_system()
|
|
|
|
replay_video_recorder_system()
|
|
|
|
if is_special_ability_active(player_id())
|
|
|
|
if is_this_help_message_being_displayed("FBI1_help4")
|
|
clear_help()
|
|
set_label_as_triggered("FBI1_help4", true) //stops the special ability help text rendering if already triggered
|
|
FLASH_ABILITY_BAR(0)
|
|
endif
|
|
|
|
IF IS_PC_VERSION()
|
|
if is_this_help_message_being_displayed("FBI1_help4_KM")
|
|
clear_help()
|
|
set_label_as_triggered("FBI1_help4", true) //stops the special ability help text rendering if already triggered
|
|
FLASH_ABILITY_BAR(0)
|
|
endif
|
|
ENDIF
|
|
|
|
endif
|
|
|
|
//turn_off_alarm()
|
|
|
|
// bool door_lock_state
|
|
// float door_ratio
|
|
// get_state_of_closest_door_of_type(v_ilev_cor_doorglassb, <<232.58, -1363.37, 39.68>>, door_lock_state, door_ratio)
|
|
// printstring("door locked state:")
|
|
// printfloat(door_ratio)
|
|
// if door_lock_state
|
|
// printstring("door locked")
|
|
// printnl()
|
|
// else
|
|
// printstring("door OPEN")
|
|
// printnl()
|
|
// endif
|
|
//
|
|
// set_state_of_closest_door_of_type(v_ilev_cor_doorglassb, <<232.58, -1363.37, 39.68>>, true, 0.0)
|
|
|
|
return false
|
|
|
|
endfunc
|
|
|
|
proc franklin_ai_system()
|
|
|
|
if not is_ped_injured(franklin.ped)
|
|
|
|
switch franklin_ai_system_status
|
|
|
|
case 0
|
|
|
|
if not is_synchronized_scene_running(cutscene_index)
|
|
if not is_entity_at_coord(franklin.ped, franklin.pos, <<0.7, 0.7, 2.5>>)
|
|
if has_ped_task_finished_2(franklin.ped, script_task_perform_sequence, 1)
|
|
|
|
open_sequence_task(seq)
|
|
task_follow_nav_mesh_to_coord(null, franklin.pos, pedmove_walk, -1)
|
|
task_turn_ped_to_face_entity(null, player_ped_id())
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(franklin.ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
|
|
dialogue_root = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_ROOT()
|
|
|
|
IF ARE_STRINGS_EQUAL(dialogue_root, "call2")
|
|
|
|
TASK_USE_MOBILE_PHONE(franklin.ped, true)
|
|
|
|
franklin_ai_system_status++
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
if has_cellphone_call_finished()
|
|
or not IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
|
|
TASK_USE_MOBILE_PHONE(franklin.ped, false)
|
|
|
|
franklin_ai_system_status++
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
vector franklin_rot
|
|
|
|
cutscene_pos = <<1602.060, -1944.361, 100.796>>
|
|
cutscene_rot = <<-0.000, 1.000, 12.000>>
|
|
|
|
franklin.pos = GET_ANIM_INITIAL_OFFSET_POSITION("MISSFBI1LEADINOUTFBI_1_EXT", "_LEADIN_FRANKLIN", cutscene_pos, cutscene_rot)
|
|
franklin_rot = GET_ANIM_INITIAL_OFFSET_rotation("MISSFBI1LEADINOUTFBI_1_EXT", "_LEADIN_FRANKLIN", cutscene_pos, cutscene_rot)
|
|
|
|
if not is_entity_at_coord(franklin.ped, franklin.pos, <<1.0, 1.0, 1.6>>)
|
|
|
|
if has_ped_task_finished_2(franklin.ped)
|
|
|
|
open_sequence_task(seq)
|
|
task_follow_nav_mesh_to_coord(null, franklin.pos, pedmove_walk, -1, 0.1, enav_default, franklin_rot.z)
|
|
close_sequence_task(seq)
|
|
task_perform_sequence(franklin.ped, seq)
|
|
clear_sequence_task(seq)
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
cutscene_pos = <<1602.060, -1944.361, 100.796>>
|
|
cutscene_rot = <<-0.000, 1.000, 12.000>>
|
|
cutscene_index = CREATE_SYNCHRONIZED_SCENE(cutscene_pos, cutscene_rot)
|
|
TASK_SYNCHRONIZED_SCENE(franklin.ped, cutscene_index, "MISSFBI1LEADINOUTFBI_1_EXT", "_LEADIN_FRANKLIN", slow_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS, rbf_none, normal_blend_in)
|
|
set_synchronized_scene_looped(cutscene_index, true)
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
endif
|
|
|
|
endproc
|
|
|
|
|
|
proc truck_ptfx_system()
|
|
|
|
// if not is_entity_dead(players_truck.veh)
|
|
// if is_entity_in_angled_area(player_ped_id(), get_offset_from_entity_in_world_coords(players_truck.veh, <<-1.100, -1.400, 1.300>>), get_offset_from_entity_in_world_coords(players_truck.veh, <<1.100, -1.400, 3.500>>), 4.4)
|
|
// if not is_ped_stopped(player_ped_id())
|
|
//
|
|
// if lk_timer(original_time, 500)
|
|
//
|
|
// if not DOES_PARTICLE_FX_LOOPED_EXIST(ptfx_paper)
|
|
// //ptfx_paper = START_PARTICLE_FX_LOOPED_ON_ENTITY("scr_fbi1_paper_disturb", player_ped_id(), <<0.0, 0.3, -1.0>>, <<0.0, 0.0, 0.0>>, 1.0)
|
|
// start_particle_fx_non_looped_on_entity("scr_fbi1_paper_disturb", player_ped_id(), <<0.0, 0.3, -1.0>>, <<0.0, 0.0, 0.0>>, 1.0)
|
|
// original_time = get_game_timer()
|
|
//
|
|
// else
|
|
//
|
|
// stop_particle_fx_looped(ptfx_paper)
|
|
//
|
|
// endif
|
|
//
|
|
// endif
|
|
//
|
|
// else
|
|
//
|
|
// if DOES_PARTICLE_FX_LOOPED_EXIST(ptfx_paper)
|
|
// stop_particle_fx_looped(ptfx_paper)
|
|
// endif
|
|
//
|
|
// endif
|
|
//
|
|
// endif
|
|
//
|
|
// endif
|
|
|
|
endproc
|
|
|
|
proc request_mocap_data_for_FBI_1_EXT()
|
|
|
|
mocap_streaming_system(<<1593.3832, -1934.3777, 97.8>>, DEFAULT_CUTSCENE_LOAD_DIST, DEFAULT_CUTSCENE_UNLOAD_DIST, "FBI_1_EXT") //FBI_1_EXT
|
|
|
|
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("michael", PLAYER_PED_ID())
|
|
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("franklin", franklin.ped)
|
|
|
|
endproc
|
|
|
|
proc phone_call_system_2()
|
|
|
|
switch phone_call_system_2_status
|
|
|
|
case 0
|
|
|
|
if PLAYER_CALL_CHAR_CELLPHONE(scripted_speech, char_franklin, "fbi1aud", "call2", conv_priority_very_high)
|
|
REPLAY_RECORD_BACK_FOR_TIME(1.0, 10.0, REPLAY_IMPORTANCE_NORMAL)
|
|
phone_call_system_2_status++
|
|
endif
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
if has_cellphone_call_finished()
|
|
|
|
add_ped_for_dialogue(scripted_speech, ConvertSingleCharacter("5"), null, "dave")
|
|
|
|
phone_call_time = get_game_timer()
|
|
|
|
phone_call_system_2_status++
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
if lk_timer(phone_call_time, 4000)
|
|
|
|
if PLAYER_CALL_CHAR_CELLPHONE(scripted_speech, char_dave, "fbi1aud", "call3", conv_priority_very_high)
|
|
|
|
phone_call_system_2_status++
|
|
endif
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 3
|
|
|
|
if has_cellphone_call_finished()
|
|
phone_call_system_2_status++
|
|
endif
|
|
|
|
break
|
|
|
|
case 4
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
endproc
|
|
|
|
proc remove_shootout_assets()
|
|
|
|
int i = 0
|
|
|
|
if not shootout_assets_removed
|
|
|
|
if get_distance_between_coords(get_entity_coords(player_ped_id()), <<235.2498, -1354.1217, 29.5623>>) > 100.00
|
|
|
|
for i = 0 to count_of(cia_enemy_outside) - 1
|
|
|
|
if does_entity_exist(cia_enemy_outside[i].ped)
|
|
|
|
set_ped_as_no_longer_needed(cia_enemy_outside[i].ped)
|
|
set_model_as_no_longer_needed(cia_enemy_outside[i].model)
|
|
|
|
endif
|
|
endfor
|
|
|
|
for i = 0 to count_of(police_car) - 1
|
|
|
|
if does_entity_exist(police_car[i].veh)
|
|
|
|
set_vehicle_as_no_longer_needed(police_car[i].veh)
|
|
set_model_as_no_longer_needed(police_car[i].model)
|
|
|
|
endif
|
|
endfor
|
|
|
|
shootout_assets_removed = true
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc taxi_drop_off_for_pass_mocap()
|
|
|
|
if does_blip_exist(locates_data.LocationBlip)
|
|
if not taxi_drop_off_set_for_pass_mocap
|
|
SET_TAXI_DROPOFF_LOCATION_FOR_BLIP(locates_data.LocationBlip, <<1610.2008, -1914.6011, 99.6843>>, 138.8997)
|
|
taxi_drop_off_set_for_pass_mocap = true
|
|
endif
|
|
else
|
|
taxi_drop_off_set_for_pass_mocap = false
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc fbi1_get_to_hills()
|
|
|
|
int i = 0
|
|
|
|
truck_ptfx_system()
|
|
|
|
cia_enemy_outside_ai_system()
|
|
|
|
switch get_to_hills_status
|
|
|
|
case 0
|
|
|
|
request_model(franklin.model)
|
|
request_model(cia_enemy_outside[1].model)
|
|
request_model(cia_enemy_outside[3].model)
|
|
request_model(police_car[0].model)
|
|
request_model(franklins_car.model)
|
|
set_vehicle_model_is_suppressed(franklins_car.model, true)
|
|
request_anim_dict("MISSFBI1LEADINOUTFBI_1_EXT")
|
|
request_vehicle_recording(police_car[0].recording_number, "lkfbi1")
|
|
|
|
if not does_entity_exist(franklin.ped)
|
|
|
|
if original_time = 0
|
|
original_time = get_game_timer()
|
|
endif
|
|
|
|
if has_model_loaded(franklin.model)
|
|
and has_model_loaded(cia_enemy_outside[1].model)
|
|
and has_model_loaded(cia_enemy_outside[3].model)
|
|
and has_model_loaded(police_car[0].model)
|
|
and has_model_loaded(franklins_car.model)
|
|
and has_anim_dict_loaded("MISSFBI1LEADINOUTFBI_1_EXT")
|
|
and has_vehicle_recording_been_loaded(police_car[0].recording_number, "lkfbi1")
|
|
and lk_timer(original_time, 3000)
|
|
|
|
for i = 1 to 2
|
|
setup_enemy(cia_enemy_outside[i], true)
|
|
endfor
|
|
|
|
create_player_ped_on_foot(franklin.ped, char_franklin, franklin.pos, franklin.heading)
|
|
//SET_PED_COMP_ITEM_CURRENT_SP(franklin.ped, COMP_TYPE_PROPS, PROPS_P1_HEADSET)
|
|
setup_buddy_attributes(franklin.ped)
|
|
//setup_relationship_contact(franklin.ped, true)
|
|
set_blocking_of_non_temporary_events(franklin.ped, true)
|
|
add_ped_for_dialogue(scripted_speech, ConvertSingleCharacter("1"), franklin.ped, "franklin")
|
|
|
|
cutscene_pos = <<1602.060, -1944.361, 100.796>>
|
|
cutscene_rot = <<-0.000, 1.000, 12.000>>
|
|
cutscene_index = CREATE_SYNCHRONIZED_SCENE(cutscene_pos, cutscene_rot)
|
|
TASK_SYNCHRONIZED_SCENE(franklin.ped, cutscene_index, "MISSFBI1LEADINOUTFBI_1_EXT", "_LEADIN_FRANKLIN", INSTANT_BLEND_IN, NORMAL_BLEND_OUT, SYNCED_SCENE_USE_PHYSICS)
|
|
set_synchronized_scene_looped(cutscene_index, true)
|
|
|
|
CREATE_PLAYER_VEHICLE(franklins_car.veh, CHAR_FRANKLIN, franklins_car.pos, franklins_car.heading, TRUE, VEHICLE_TYPE_BIKE)
|
|
|
|
for i = 0 to 0//count_of(police_car) - 1
|
|
clear_area(police_car[i].pos, 10.00, true)
|
|
police_car[i].veh = create_vehicle(police_car[i].model, police_car[i].pos, police_car[i].heading)
|
|
if i = 0
|
|
start_playback_recorded_vehicle(police_car[i].veh, police_car[i].recording_number, "lkfbi1")
|
|
skip_time_in_playback_recorded_vehicle(police_car[i].veh, 0)
|
|
force_playback_recorded_vehicle_update(police_car[i].veh)
|
|
set_vehicle_siren(police_car[i].veh, true)
|
|
endif
|
|
endfor
|
|
|
|
setup_enemy_in_vehicle(cia_enemy_outside[3], police_car[0].veh)
|
|
setup_enemy_in_vehicle(cia_enemy_outside[4], police_car[0].veh, vs_front_right)
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
franklin_ai_system()
|
|
|
|
//// prepare it for every car the player enters.
|
|
// if not has_label_been_triggered("FBI1_RADIO")
|
|
// if is_ped_sitting_in_any_vehicle(player_ped_id())
|
|
// prepare_music_event("FBI1_RADIO")
|
|
// set_label_as_triggered("FBI1_RADIO", true)
|
|
//// else
|
|
//// set_label_as_triggered("FBI1_RADIO", false)
|
|
// endif
|
|
// endif
|
|
|
|
if not is_player_wanted_level_greater(player_id(), 0)
|
|
|
|
if not is_ped_in_any_vehicle(player_ped_id())
|
|
trigger_music_event("FBI1_COPS_LOST")
|
|
else
|
|
trigger_music_event("FBI1_RADIO")
|
|
endif
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("FBI_1_LOSE_COPS")
|
|
STOP_AUDIO_SCENE("FBI_1_LOSE_COPS")
|
|
endif
|
|
|
|
INFORM_MISSION_STATS_SYSTEM_OF_TIME_WINDOW_CLOSED()
|
|
|
|
clear_this_print("LOSE_WANTED")
|
|
|
|
clear_player_wanted_level(player_id())
|
|
set_wanted_level_multiplier(0.2)
|
|
|
|
get_to_hills_status++
|
|
endif
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
if does_entity_exist(franklins_car.veh)
|
|
if is_vehicle_driveable(franklins_car.veh)
|
|
REQUEST_VEHICLE_HIGH_DETAIL_MODEL(franklins_car.veh)//stops pop in cutscene.
|
|
endif
|
|
endif
|
|
|
|
phone_call_system_2()
|
|
|
|
franklin_ai_system()
|
|
|
|
request_mocap_data_for_FBI_1_EXT()
|
|
|
|
remove_shootout_assets()
|
|
|
|
IS_PLAYER_AT_LOCATION_any_means(locates_data, <<1593.3832, -1934.3777, 98.6576>>, <<0.01, 0.01, 0.01>>, false, "FBI1_God_6", true)
|
|
|
|
taxi_drop_off_for_pass_mocap()
|
|
|
|
if does_blip_exist(locates_data.LocationBlip)
|
|
if is_entity_in_angled_area(player_ped_id(), <<1586.747, -1943.608, 90.969>>, <<1611.747, -1943.609, 110.969>>, 42.000)
|
|
|
|
if get_current_player_vehicle(players_last_vehicle)
|
|
if IS_VEHICLE_ON_ALL_WHEELS(players_last_vehicle)
|
|
|
|
setup_vehicle_proofs(players_last_vehicle)
|
|
|
|
BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(players_last_vehicle, 7)
|
|
|
|
kill_any_conversation() //kills phone call
|
|
|
|
get_to_hills_status++
|
|
endif
|
|
|
|
else
|
|
|
|
//if has_cutscene_loaded()
|
|
if HAS_CUTSCENE_LOADED_WITH_FAILSAFE()
|
|
if start_new_cutscene_no_fade(false)
|
|
|
|
SET_PED_USING_ACTION_MODE(player_ped_id(), false)
|
|
|
|
setup_ped_proofs(franklin.ped)
|
|
|
|
register_entity_for_cutscene(player_ped_id(), "Michael", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
|
|
register_entity_for_cutscene(franklin.ped, "Franklin", CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY)
|
|
|
|
if does_entity_exist(franklins_car.veh)
|
|
if is_vehicle_driveable(franklins_car.veh)
|
|
SET_FORCE_HD_VEHICLE(franklins_car.veh, true)
|
|
endif
|
|
endif
|
|
|
|
REPLAY_RECORD_BACK_FOR_TIME(7.5, 0.0, REPLAY_IMPORTANCE_HIGH)
|
|
|
|
START_CUTSCENE()
|
|
|
|
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
|
|
|
|
get_to_hills_status = 4
|
|
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
request_mocap_data_for_FBI_1_EXT()
|
|
|
|
if BRING_VEHICLE_TO_HALT_AND_DISABLE_VEH_CONTROLS(players_last_vehicle, 7)
|
|
set_player_control(player_id(), false)
|
|
get_to_hills_status++
|
|
endif
|
|
|
|
break
|
|
|
|
case 3
|
|
|
|
request_mocap_data_for_FBI_1_EXT()
|
|
|
|
//if has_cutscene_loaded()
|
|
if HAS_CUTSCENE_LOADED_WITH_FAILSAFE()
|
|
if not is_any_text_being_displayed(locates_data)
|
|
if start_new_cutscene_no_fade(false, true, true, true)
|
|
|
|
SET_PED_USING_ACTION_MODE(player_ped_id(), false)
|
|
|
|
setup_ped_proofs(franklin.ped)
|
|
|
|
register_entity_for_cutscene(player_ped_id(), "Michael", CU_ANIMATE_EXISTING_SCRIPT_ENTITY)
|
|
register_entity_for_cutscene(franklin.ped, "Franklin", CU_ANIMATE_AND_DELETE_EXISTING_SCRIPT_ENTITY)
|
|
|
|
if does_entity_exist(franklins_car.veh)
|
|
if is_vehicle_driveable(franklins_car.veh)
|
|
SET_FORCE_HD_VEHICLE(franklins_car.veh, true)
|
|
endif
|
|
endif
|
|
|
|
START_CUTSCENE()
|
|
|
|
REPLAY_START_EVENT(REPLAY_IMPORTANCE_HIGHEST)
|
|
|
|
get_to_hills_status++
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 4
|
|
|
|
if is_cutscene_playing()
|
|
|
|
//use new reposition tool
|
|
//repostion_players_last_vehicle(players_last_vehicle, <<1621.736, -1922.556, 92.360>>, <<50.00, 50.00, 50.00>>, <<1616.2025, -1933.7650, 100.7450>>, 65.3292)
|
|
|
|
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<1629.403, -1946.552, 91.196>>, <<1571.303, -1946.552, 107.096>>, 62.100, <<1616.2025, -1933.7650, 100.7450>>, 65.3292, <<15.0, 15.0, 15.0>>)//, false)
|
|
set_players_last_vehicle_to_vehicle_gen(<<1616.2025, -1933.7650, 100.7450>>, 65.3292, true)
|
|
|
|
clear_area(get_entity_coords(player_ped_id()), 300.00, true)
|
|
|
|
if does_entity_exist(franklins_car.veh)
|
|
if is_vehicle_driveable(franklins_car.veh)
|
|
setup_vehicle_proofs(franklins_car.veh)
|
|
set_entity_heading(franklins_car.veh, franklins_car.heading)
|
|
set_entity_coords(franklins_car.veh, franklins_car.pos)
|
|
set_vehicle_on_ground_properly(franklins_car.veh)
|
|
freeze_entity_position(franklins_car.veh, true)
|
|
endif
|
|
endif
|
|
|
|
SET_AMBIENT_VEHICLE_RANGE_MULTIPLIER_THIS_FRAME(2.0)
|
|
|
|
original_time = get_game_timer()
|
|
|
|
get_to_hills_status++
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 5
|
|
|
|
if does_entity_exist(franklins_car.veh)
|
|
if is_vehicle_driveable(franklins_car.veh)
|
|
REQUEST_VEHICLE_HIGH_DETAIL_MODEL(franklins_car.veh)//stops pop in cutscene.
|
|
endif
|
|
endif
|
|
|
|
SET_AMBIENT_VEHICLE_RANGE_MULTIPLIER_THIS_FRAME(2.0)
|
|
|
|
if is_cutscene_active()
|
|
if not WAS_CUTSCENE_SKIPPED()
|
|
|
|
if CAN_SET_EXIT_STATE_FOR_REGISTERED_ENTITY("michael", GET_PLAYER_PED_MODEL(char_michael))
|
|
|
|
endif
|
|
|
|
// IF NOT cam_set_behind_player
|
|
// IF lk_timer(original_time, 160000)
|
|
//
|
|
// SET_GAMEPLAY_CAM_RELATIVE_HEADING((125 - GET_ENTITY_HEADING(PLAYER_PED_ID())))
|
|
// SET_GAMEPLAY_CAM_RELATIVE_PITCH()
|
|
//
|
|
// cam_set_behind_player = true
|
|
//
|
|
// ENDIF
|
|
// ENDIF
|
|
|
|
else
|
|
|
|
SET_CUTSCENE_FADE_VALUES(false, false, true)
|
|
|
|
get_to_hills_status = 22
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
// if does_entity_exist(players_last_vehicle)
|
|
// set_vehicle_as_no_longer_needed(players_last_vehicle)
|
|
// endif
|
|
|
|
deactivate_vehicle_proofs(players_last_vehicle)
|
|
|
|
if does_entity_exist(franklins_car.veh)
|
|
delete_vehicle(franklins_car.veh)
|
|
endif
|
|
|
|
end_cutscene_no_fade(false, false)
|
|
|
|
REPLAY_STOP_EVENT()
|
|
|
|
mission_passed()
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
case 22
|
|
|
|
if not is_cutscene_active()
|
|
|
|
deactivate_vehicle_proofs(players_last_vehicle)
|
|
|
|
if does_entity_exist(franklins_car.veh)
|
|
delete_vehicle(franklins_car.veh)
|
|
endif
|
|
|
|
end_cutscene(false)
|
|
|
|
REPLAY_STOP_EVENT()
|
|
|
|
mission_passed()
|
|
|
|
endif
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
endproc
|
|
|
|
proc fbi1_pass_cutscene()
|
|
|
|
end_cutscene()
|
|
|
|
mission_passed()
|
|
|
|
endproc
|
|
|
|
proc initialise_mission_doors()
|
|
|
|
//operating table room
|
|
fbi_door[0] = get_hash_key("fbi_1_door_0") //<<283.59, -1340.94, 24.68>>
|
|
add_door_to_system(fbi_door[0], v_ilev_cor_doorglassa, <<283.59, -1340.94, 24.68>>)
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(fbi_door[0], -1.2, false, false) //1.0
|
|
DOOR_SYSTEM_SET_DOOR_STATE(fbi_door[0], DOORSTATE_force_locked_this_frame, false, true)
|
|
|
|
fbi_door[1] = get_hash_key("fbi_1_door_1") //<<283.59, -1340.94, 24.68>>
|
|
add_door_to_system(fbi_door[1], v_ilev_cor_doorglassb, <<281.93, -1342.90, 24.68>>)
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(fbi_door[1], 1.2, false, false) //1.0
|
|
DOOR_SYSTEM_SET_DOOR_STATE(fbi_door[1], DOORSTATE_force_locked_this_frame, false, true)
|
|
|
|
//opposite morgue room
|
|
fbi_door[2] = get_hash_key("fbi_1_door_2")
|
|
add_door_to_system(fbi_door[2], v_ilev_cor_doorglassb, <<287.23, -1343.99, 24.68>>)
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(fbi_door[2], 1.0, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(fbi_door[2], DOORSTATE_force_locked_this_frame, false, true)
|
|
|
|
fbi_door[3] = get_hash_key("fbi_1_door_3")
|
|
add_door_to_system(fbi_door[3], v_ilev_cor_doorglassa, <<285.57, -1345.96, 24.68>>)
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(fbi_door[3], -1.0, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(fbi_door[3], DOORSTATE_force_locked_this_frame, false, true)
|
|
|
|
//first lab doors.
|
|
fbi_door[4] = get_hash_key("fbi_1_door_4")
|
|
add_door_to_system(fbi_door[4], v_ilev_cor_doorglassb, <<265.77, -1345.87, 24.68>>)
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(fbi_door[4], 1.0, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(fbi_door[4], DOORSTATE_force_unlocked_this_frame, false, true)
|
|
|
|
fbi_door[5] = get_hash_key("fbi_1_door_5")
|
|
add_door_to_system(fbi_door[5], v_ilev_cor_doorglassa, <<267.42, -1343.90, 24.68>>)
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(fbi_door[5], -1.6, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(fbi_door[5], DOORSTATE_force_locked_this_frame, false, true)
|
|
|
|
//end of corridor doors
|
|
fbi_door[6] = get_hash_key("fbi_1_door_6")
|
|
add_door_to_system(fbi_door[6], v_ilev_cor_firedoor, <<252.87, -1366.76, 24.55>>)
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(fbi_door[6], 0.0, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(fbi_door[6], DOORSTATE_force_locked_this_frame, false, true)
|
|
|
|
fbi_door[7] = get_hash_key("fbi_1_door_7")
|
|
add_door_to_system(fbi_door[7], v_ilev_cor_firedoor, <<251.10, -1365.28, 24.55>>)
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(fbi_door[7], 0.0, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(fbi_door[7], DOORSTATE_force_locked_this_frame, false, true)
|
|
|
|
|
|
//elevator doors
|
|
fbi_door[8] = get_hash_key("fbi_1_door_8")
|
|
add_door_to_system(fbi_door[8], v_ilev_cor_doorlift01, <<248.86, -1371.01, 23.52>>)
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(fbi_door[8], 0.0, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(fbi_door[8], DOORSTATE_force_locked_this_frame, false, true)
|
|
|
|
fbi_door[9] = get_hash_key("fbi_1_door_9")
|
|
add_door_to_system(fbi_door[9], v_ilev_cor_doorlift02, <<247.58, -1369.94, 24.52>>)
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(fbi_door[9], 0.0, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(fbi_door[9], DOORSTATE_force_locked_this_frame, false, true)
|
|
|
|
//single door shotgun enemy runs through
|
|
fbi_door[10] = get_hash_key("fbi_1_door_10")
|
|
add_door_to_system(fbi_door[10], v_ilev_cor_firedoorwide, <<243.51, -1367.83, 29.66>>)
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(fbi_door[10], 0.0, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(fbi_door[10], DOORSTATE_force_unlocked_this_frame, false, true)
|
|
|
|
//double doors leading up to top floor - left
|
|
fbi_door[11] = get_hash_key("fbi_1_door_11")
|
|
add_door_to_system(fbi_door[11], v_ilev_cor_firedoor, <<251.10, -1365.28, 29.67>>)
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(fbi_door[11], 1.0, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(fbi_door[11], DOORSTATE_force_locked_this_frame, false, true)
|
|
|
|
//double doors leading up to top floor - right
|
|
fbi_door[12] = get_hash_key("fbi_1_door_12")
|
|
add_door_to_system(fbi_door[12], v_ilev_cor_firedoor, <<252.87, -1366.76, 29.67>>)
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(fbi_door[12], -1.0, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(fbi_door[12], DOORSTATE_force_unlocked_this_frame, false, true)
|
|
|
|
//double doors top floor operating table room
|
|
fbi_door[13] = get_hash_key("fbi_1_door_13")
|
|
add_door_to_system(fbi_door[13], v_ilev_cor_firedoor, <<252.87, -1366.76, 39.55>>)
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(fbi_door[13], -1.2, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(fbi_door[13], DOORSTATE_force_locked_this_frame, false, true)
|
|
|
|
fbi_door[14] = get_hash_key("fbi_1_door_14")
|
|
add_door_to_system(fbi_door[14], v_ilev_cor_firedoor, <<251.10, -1365.28, 39.55>>)
|
|
DOOR_SYSTEM_SET_OPEN_RATIO(fbi_door[14], 1.2, false, false)
|
|
DOOR_SYSTEM_SET_DOOR_STATE(fbi_door[14], DOORSTATE_force_locked_this_frame, false, true)
|
|
|
|
endproc
|
|
|
|
proc load_repeat_play_assets()
|
|
|
|
request_model(get_player_ped_model(char_michael))
|
|
|
|
while not has_model_loaded(get_player_ped_model(char_michael))
|
|
|
|
wait(0)
|
|
|
|
endwhile
|
|
|
|
set_current_selector_ped(selector_ped_michael)
|
|
clear_ped_tasks_immediately(player_ped_id())
|
|
set_entity_coords(player_ped_id(), <<-444.1117, 1060.1145, 326.6852>>)
|
|
|
|
|
|
REQUEST_CUTSCENE_WITH_PLAYBACK_LIST("fbi_1_int", CS_SECTION_2|CS_SECTION_3|CS_SECTION_4|CS_SECTION_5|CS_SECTION_6)
|
|
|
|
while not has_cutscene_loaded()
|
|
|
|
SET_CUTSCENE_PED_COMPONENT_VARIATION_FROM_PED("michael", PLAYER_PED_ID())
|
|
|
|
wait(0)
|
|
|
|
endwhile
|
|
|
|
|
|
start_cutscene()
|
|
|
|
SET_CUTSCENE_FADE_VALUES(false, false, true)
|
|
|
|
|
|
while not is_cutscene_playing()
|
|
|
|
wait(0)
|
|
|
|
endwhile
|
|
|
|
RESOLVE_VEHICLES_INSIDE_ANGLED_AREA_WITH_SIZE_LIMIT(<<-411.094, 1180.761, 324.342>>, <<-414.034, 1171.203, 330.642>>, 13.00, <<-410.9237, 1174.4790, 324.6415>>, 253.2136, <<15.0, 15.0, 15.0>>)//, false)
|
|
set_players_last_vehicle_to_vehicle_gen(<<-410.9237, 1174.4790, 324.6415>>, 253.2136)
|
|
|
|
clear_area(get_entity_coords(player_ped_id()), 1000, true)
|
|
|
|
intro_mocap_status = 1
|
|
|
|
do_screen_fade_in(default_fade_time)
|
|
|
|
SET_REPLAY_MID_MISSION_STAGE_WITH_NAME(0, "Start of mission")
|
|
|
|
endproc
|
|
|
|
proc mission_setup()
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
load_lk_widgets()
|
|
set_locates_header_widget_group(fbi1_widget_group)
|
|
#endif
|
|
|
|
SUPPRESS_EMERGENCY_CALLS()
|
|
|
|
SET_PLAYER_PED_DATA_IN_CUTSCENES(false)
|
|
|
|
//INFORM_MISSION_STATS_OF_MISSION_START_fbi_one()
|
|
INFORM_MISSION_STATS_OF_DAMAGE_WATCH_ENTITY(player_ped_id())
|
|
|
|
set_building_state(BUILDINGNAME_IPL_CORONER_INTERIOR, BUILDINGSTATE_NORMAL, true)
|
|
|
|
load_text_and_dialogue()
|
|
|
|
add_relationship_groups()
|
|
|
|
//cover point for player at the left wall
|
|
add_cover_point(<<267.63803, -1350.05750, 23.53772>>, 139.1686, covuse_walltoleft, covheight_toohigh, COVARC_180)
|
|
add_cover_point(<<281.09470, -1344.61365, 23.53772>>, 49.3918, covuse_walltoright, covheight_toohigh, COVARC_180, true)
|
|
|
|
add_cover_point(<<245.97498, -1367.51013, 23.53797>>, 137.1840, covuse_walltoleft, covheight_toohigh, COVARC_180)
|
|
add_cover_point(<<242.58643, -1364.72803, 23.53797>>, 137.2854, covuse_walltoright, covheight_toohigh, COVARC_180)
|
|
add_cover_point(<<247.16701, -1366.89417, 38.53422>>, 139.2864, covuse_walltoleft, covheight_toohigh, COVARC_180)
|
|
//add_cover_point(<<237.7, -1357.65527, 38.53422>>, 230.8, covuse_walltoleft, covheight_toohigh, COVARC_180)
|
|
add_cover_point(<<237.57045, -1357.65686, 38.53421>>, 230.8, covuse_walltoleft, covheight_toohigh, COVARC_180)
|
|
//add_cover_point(<<236.36862, -1359.08789, 38.53422>>, 230.8070, covuse_walltoright, covheight_toohigh, COVARC_180)
|
|
add_cover_point(<<236.40781, -1359.09778, 38.53421>>, 230.8070, covuse_walltoright, covheight_toohigh, COVARC_180)
|
|
add_cover_point(<<234.05081, -1361.90210, 38.53421>>, 230.8812, covuse_walltoleft, covheight_toohigh, COVARC_180)
|
|
|
|
|
|
cia_enemy_cover_point[0] = add_cover_point(<<272.05145, -1344.09839, 23.53782>>, 232.800, covuse_walltoright, covheight_toohigh, COVARC_180)
|
|
cia_enemy_cover_point[3] = add_cover_point(<<258.43, -1355.88, 23.54>>, 324.4275, covuse_walltoleft, COVHEIGHT_low, COVARC_180)
|
|
cia_enemy_cover_point[4] = add_cover_point(<<262.65381, -1358.82007, 23.53772>>, 49.0454, covuse_walltoleft, COVHEIGHT_low, COVARC_180)
|
|
cia_enemy_cover_point[6] = add_cover_point(<<258.29, -1361.33, 23.54>>, 315.0264, covuse_walltoright, covheight_toohigh, COVARC_180)
|
|
cia_enemy_cover_point[16] = add_cover_point(<<280.02, -1344.69, 23.54>>, 322.6696, covuse_walltoleft, covheight_toohigh, COVARC_180)
|
|
|
|
cia_enemy_cover_point[4] = add_cover_point(<<260.62198, -1352.67603, 23.53772>>, 322.8431, covuse_walltoleft, covheight_toohigh, COVARC_180)
|
|
|
|
|
|
cia_enemy_top_floor_cover_point[0] = add_cover_point(<<242.27132, -1367.46399, 38.53431>>, 234.1995, covuse_walltoright, covheight_toohigh, COVARC_180)
|
|
//cia_enemy_top_floor_cover_point[1] = add_cover_point(<<238.54, -1368.56, 38.24>>, 50.0000, covuse_walltoleft, covheight_toohigh, COVARC_180)
|
|
cia_enemy_top_floor_cover_point[2] = add_cover_point(<<239.49130, -1379.23584, 38.53422>>, 0.0, COVUSE_WALLTOBOTH, COVHEIGHT_low, COVARC_180) //covuse_walltoright
|
|
|
|
|
|
//cia_enemy_top_floor_cover_point[0] = cia_enemy_top_floor_cover_point[0]
|
|
//cia_enemy_top_floor_cover_point[1] = cia_enemy_top_floor_cover_point[1]
|
|
//cia_enemy_top_floor_cover_point[2] = cia_enemy_top_floor_cover_point[2]
|
|
|
|
clear_player_wanted_level(player_id())
|
|
set_max_wanted_level(0)
|
|
set_create_random_cops(false)
|
|
|
|
//reset_glass_window()
|
|
window.been_created = false
|
|
|
|
initialise_mission_variables()
|
|
|
|
initialise_mission_doors()
|
|
|
|
if is_replay_in_progress()
|
|
|
|
replay_active = true
|
|
|
|
if not g_bShitskipAccepted
|
|
|
|
switch Get_Replay_Mid_Mission_Stage()
|
|
|
|
case 0
|
|
|
|
load_trip_skip_data_0() //start of mission - player on operating table
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
load_trip_skip_data_1() //stealth the cia guard
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
load_trip_skip_data_2() //start of shootout - player in dead bodies room
|
|
|
|
break
|
|
|
|
case 3
|
|
|
|
load_trip_skip_data_3() //half way through shootout
|
|
|
|
break
|
|
|
|
case 4
|
|
|
|
load_trip_skip_data_4() //outside coroners escape police.
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
else
|
|
|
|
int shit_skip_status
|
|
|
|
shit_skip_status = Get_Replay_Mid_Mission_Stage() + 1
|
|
|
|
switch shit_skip_status
|
|
|
|
case 1
|
|
|
|
load_trip_skip_data_1()
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
load_trip_skip_data_2()
|
|
|
|
break
|
|
|
|
case 3
|
|
|
|
load_trip_skip_data_3()
|
|
|
|
break
|
|
|
|
case 4
|
|
|
|
load_trip_skip_data_4()
|
|
|
|
break
|
|
|
|
case 5
|
|
|
|
load_trip_skip_data_5()
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
endif
|
|
|
|
replay_active = false
|
|
|
|
else
|
|
STORE_PLAYER_PED_WEAPONS_IN_SNAPSHOT(player_ped_id()) //
|
|
|
|
if not is_repeat_play_active()
|
|
|
|
if not is_screen_faded_in()
|
|
if not is_screen_fading_in()
|
|
do_screen_fade_in(default_fade_time)
|
|
endif
|
|
endif
|
|
|
|
else
|
|
|
|
load_repeat_play_assets()
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc setup_assets_after_locker_mocap()
|
|
|
|
disable_cellphone(false)
|
|
|
|
remove_anim_dict("move_crouch_proto")
|
|
|
|
//setup_weapon_for_ped(player_ped_id(), weapontype_combatpistol, 20, false, false)
|
|
|
|
clear_ped_tasks_immediately(cia_stealth.ped)
|
|
set_entity_coords(cia_stealth.ped, <<287.5420, -1345.9211, 23.5380>>)
|
|
set_entity_heading(cia_stealth.ped, 227.9037)
|
|
SET_PED_CAPSULE(cia_stealth.ped, 0.0)
|
|
force_ped_ai_and_animation_update(cia_stealth.ped)
|
|
|
|
clear_ped_tasks_immediately(player_ped_id())
|
|
set_entity_coords(player_ped_id(), <<275.7152, -1337.0142, 23.5377>>)
|
|
set_entity_heading(player_ped_id(), 241.8949)
|
|
SET_PED_STEALTH_MOVEMENT(player_ped_id(), true)
|
|
force_ped_motion_state(player_ped_id(), MS_STEALTHMODE_IDLE)
|
|
force_ped_ai_and_animation_update(player_ped_id())
|
|
|
|
trigger_music_event("FBI1_GET_GUN")
|
|
|
|
if is_screen_faded_in()
|
|
end_cutscene_no_fade(false)
|
|
else
|
|
end_cutscene(false)
|
|
endif
|
|
|
|
print_now("FBI1_God_11", default_god_text_time, 1)
|
|
|
|
//fail_time = get_game_timer()
|
|
|
|
mission_flow = stealth_the_cia_officer
|
|
|
|
endproc
|
|
|
|
proc reset_clothes_cutscene()
|
|
|
|
clear_ped_tasks_immediately(player_ped_id())
|
|
set_entity_coords(player_ped_id(), <<275.0209, -1337.7212, 23.5377>>)
|
|
|
|
destroy_all_cams()
|
|
|
|
delete_ped(cia_stealth.ped)
|
|
|
|
#if is_debug_build
|
|
widget_reset_cutscene = false
|
|
#endif
|
|
|
|
endproc
|
|
|
|
proc fbi1_stealth_the_cia_officer()
|
|
|
|
DEACTIVATE_VENDING_MACHINES_THIS_FRAME()
|
|
|
|
if is_ped_in_specific_room(player_ped_id(), <<288.9353, -1347.9430, 23.5378>>, "BodyStorage", "v_coroner")
|
|
disable_control_action(PLAYER_CONTROL, INPUT_JUMP)
|
|
endif
|
|
|
|
// SET_PLAYER_SNEAKING_NOISE_MULTIPLIER(player_id(), 0.1)
|
|
// SET_PLAYER_NOISE_MULTIPLIER(player_id(), 0.3)
|
|
|
|
if is_ped_injured(cia_stealth.ped)
|
|
|
|
remove_anim_dict("missfbi1ig_7")
|
|
|
|
remove_waypoint_recording("fbi1_0")
|
|
|
|
REPLAY_RECORD_BACK_FOR_TIME(3, 2.0, REPLAY_IMPORTANCE_NORMAL)
|
|
|
|
//set_ped_weapon_visible
|
|
|
|
//SET_PED_CURRENT_WEAPON_VISIBLE(cia_stealth.ped, false, true, false)
|
|
|
|
// give_weapon_to_ped(player_ped_id(), weapontype_combatpistol, 50)
|
|
// GIVE_WEAPON_COMPONENT_TO_PED(player_ped_id(), weapontype_combatpistol, WEAPONCOMPONENT_AT_PI_FLSH)
|
|
|
|
if does_blip_exist(cia_stealth.blip)
|
|
remove_blip(cia_stealth.blip)
|
|
endif
|
|
|
|
dead_body[0].blip = add_blip_for_entity(dead_body[0].ped) //(add_blip_for_coord(get_entity_coords(dead_body[0].ped))
|
|
set_blip_colour(dead_body[0].blip, blip_colour_green)
|
|
set_blip_scale(dead_body[0].blip, 0.5)
|
|
SET_BLIP_NAME_FROM_TEXT_FILE(dead_body[0].blip, "FBI1_God_13")
|
|
|
|
dead_body[1].blip = add_blip_for_entity(dead_body[1].ped)//add_blip_for_coord(get_entity_coords(dead_body[1].ped))
|
|
set_blip_colour(dead_body[1].blip, blip_colour_green)
|
|
set_blip_scale(dead_body[1].blip, 0.5)
|
|
SET_BLIP_NAME_FROM_TEXT_FILE(dead_body[1].blip, "FBI1_God_13")
|
|
|
|
trigger_music_event("FBI1_FIND_BODY")
|
|
|
|
if IS_AUDIO_SCENE_ACTIVE("FBI_1_STEALTH_KILL_AGENT")
|
|
STOP_AUDIO_SCENE("FBI_1_STEALTH_KILL_AGENT")
|
|
endif
|
|
|
|
start_audio_scene("FBI_1_INSPECT_BODIES")
|
|
|
|
print_now("FBI1_God_1", default_god_text_time, 1)
|
|
|
|
original_time = get_game_timer()
|
|
|
|
mission_flow = find_bodies
|
|
|
|
else
|
|
|
|
//bypass find dead bodis stage if the player decides to walk round the corner in the labs where the cia enemies are
|
|
if not is_entity_in_angled_area(player_ped_id(), <<284.463, -1354.515, 23.538>>, <<294.471, -1342.418, 26.538>>, 18.600)
|
|
and not is_entity_in_angled_area(player_ped_id(), <<277.116, -1340.988, 23.537>>, <<283.480, -1333.405, 26.537>>, 11.00)
|
|
|
|
int i
|
|
|
|
for i = 0 to count_of(dead_body) - 1
|
|
if does_blip_exist(dead_body[i].blip)
|
|
remove_blip(dead_body[i].blip)
|
|
endif
|
|
endfor
|
|
|
|
phone_call_system_status = 3
|
|
|
|
set_player_can_use_cover(player_id(), true)
|
|
|
|
DISABLE_CHEAT(CHEAT_TYPE_GIVE_WEAPONS, false)
|
|
|
|
bypass_find_dead_bodies_stage = true
|
|
|
|
mission_flow = shootout
|
|
|
|
exit
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
cia_stealth_enemy_ai_system()
|
|
|
|
get_weapons_back_system()
|
|
|
|
give_player_weapon_component_system()
|
|
|
|
endproc
|
|
|
|
proc fbi1_load_stage_selector_assets()
|
|
|
|
int i = 0
|
|
|
|
initialise_mission_variables()
|
|
|
|
wait(0)//removing and adding the doors in one frame will not allow the doors to be added. A wait 0 is required
|
|
|
|
initialise_mission_doors()
|
|
|
|
switch launch_mission_stage_menu_status
|
|
|
|
case 0
|
|
|
|
load_normal_start_of_mission()
|
|
|
|
break
|
|
|
|
case 1
|
|
|
|
load_trip_skip_data_1()
|
|
|
|
break
|
|
|
|
case 2
|
|
|
|
load_trip_skip_data_2()
|
|
|
|
break
|
|
|
|
case 3
|
|
|
|
load_trip_skip_data_3()
|
|
|
|
break
|
|
|
|
case 4
|
|
|
|
request_model(ambient_car[0].model)
|
|
request_model(ambient_car[1].model)
|
|
request_model(cia_enemy_outside[0].model)
|
|
request_model(V_ILev_Cor_windowSmash)
|
|
request_model(bin[0].model)
|
|
|
|
request_anim_dict("missfbi1")
|
|
|
|
request_ambient_audio_bank("SCRIPT\\FBI_01_DMW_02")
|
|
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_TORSO, 19, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_LEG, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_HAND, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_FEET, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_TEETH, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_DECL, 0, 0)
|
|
SET_PED_PRELOAD_VARIATION_DATA(PLAYER_PED_ID(), PED_COMP_JBIB, 0, 0)
|
|
|
|
set_building_state(BUILDINGNAME_IPL_CORONER_INTERIOR, BUILDINGSTATE_DESTROYED)
|
|
|
|
coroner_interior = get_interior_at_coords_with_type(<<279.9322, -1337.4902, 23.7419>>, "v_coroner")
|
|
|
|
while not is_valid_interior(coroner_interior)
|
|
coroner_interior = get_interior_at_coords_with_type(<<279.9322, -1337.4902, 23.7419>>, "v_coroner")
|
|
wait(0)
|
|
endwhile
|
|
|
|
pin_interior_in_memory(coroner_interior)
|
|
|
|
while not has_model_loaded(ambient_car[0].model)
|
|
or not has_model_loaded(ambient_car[1].model)
|
|
or not has_model_loaded(cia_enemy_outside[0].model)
|
|
or not has_model_loaded(V_ILev_Cor_windowSmash)
|
|
or not has_model_loaded(bin[0].model)
|
|
or not has_anim_dict_loaded("missfbi1")
|
|
or not request_ambient_audio_bank("SCRIPT\\FBI_01_DMW_02")
|
|
or not is_interior_ready(coroner_interior)
|
|
|
|
wait(0)
|
|
|
|
draw_rect(0.5, 0.5, 1, 1, 0, 0, 0, 255)
|
|
|
|
endwhile
|
|
|
|
clear_area(<<234.2708, -1360.3062, 44.0340>>, 300.00, true)
|
|
|
|
clear_ped_tasks_immediately(player_ped_id())
|
|
set_entity_visible(player_ped_id(), true)
|
|
set_entity_coords(player_ped_id(), <<239.4876, -1360.4357, 38.5342>>)
|
|
set_entity_heading(player_ped_id(), 50.2059)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TORSO, 19, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_LEG, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_HAND, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_FEET, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_TEETH, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_SPECIAL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_SPECIAL2, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_DECL, 0, 0)
|
|
SET_PED_COMPONENT_VARIATION(PLAYER_PED_ID(), PED_COMP_JBIB, 0, 0)
|
|
//clear_all_ped_props(PLAYER_PED_ID())
|
|
remove_player_ped_props(player_ped_id())
|
|
|
|
setup_player_fail_weapon(player_ped_id(), weapontype_combatpistol, 50)
|
|
|
|
CREATE_MODEL_SWAP(<<236.03, -1357.49, 40.45>>, 1.0, V_ILev_Cor_windowSolid, V_ILev_Cor_windowSmash, TRUE)
|
|
window.obj = GET_CLOSEST_OBJECT_OF_TYPE(<<236.03, -1357.49, 40.45>>, 1.0, V_ILev_Cor_windowSmash)
|
|
|
|
if does_entity_exist(window.obj)
|
|
window.been_created = true
|
|
endif
|
|
|
|
for i = 0 to count_of(ambient_car) - 1
|
|
ambient_car[i].veh = create_vehicle(ambient_car[i].model, ambient_car[i].pos, ambient_car[i].heading)
|
|
set_vehicle_doors_locked(ambient_car[i].veh, vehiclelock_locked_but_can_be_damaged)
|
|
endfor
|
|
|
|
bin[0].obj = create_object(bin[0].model, bin[0].pos)
|
|
set_entity_rotation(bin[0].obj, bin[0].rot)
|
|
freeze_entity_position(bin[0].obj, true)
|
|
|
|
trigger_alarm(true)
|
|
|
|
trigger_music_event("FBI1_SHOOTOUT_HALFWAY_RT")
|
|
|
|
load_scene(<<234.2708, -1360.3062, 44.0340>>)
|
|
|
|
end_cutscene()
|
|
|
|
special_ability_help_text_system_status = 3 //deactivates help text
|
|
|
|
phone_call_system_status = 3
|
|
|
|
music_event_system_status = 2
|
|
|
|
fbi1_master_controller_status = 6
|
|
|
|
mission_flow = shootout
|
|
|
|
break
|
|
|
|
case 5
|
|
|
|
load_trip_skip_data_4()
|
|
|
|
break
|
|
|
|
case 6
|
|
|
|
load_trip_skip_data_5()
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
endproc
|
|
|
|
proc fbi1_mission_fail_stage()
|
|
|
|
//process anything that needs to run untill game is faded out.
|
|
|
|
//stops the player doing a take down
|
|
if not is_ped_injured(cia_stealth.ped)
|
|
set_ped_reset_flag(cia_stealth.ped, PRF_PreventAllMeleeTakedowns, true)
|
|
endif
|
|
|
|
IF GET_MISSION_FLOW_SAFE_TO_CLEANUP()
|
|
|
|
if operating_table_fail
|
|
|
|
MISSION_FLOW_SET_FAIL_WARP_LOCATION(<<338.3677, -1394.1179, 31.5093>>, 61.6520)//hospital
|
|
|
|
else
|
|
|
|
MISSION_FLOW_SET_FAIL_WARP_LOCATION(<<-413.3700, 1168.5259, 324.8537>>, 156.3851)
|
|
|
|
endif
|
|
|
|
mission_failed()
|
|
|
|
endif
|
|
|
|
endproc
|
|
|
|
proc setup_mission_for_force_cleanup()
|
|
|
|
//MISSION_FLOW_SET_FAIL_WARP_LOCATION(<<760.5546, -983.6993, 24.7744>>, 82.4206)
|
|
|
|
endproc
|
|
|
|
script
|
|
|
|
set_mission_flag(true)
|
|
|
|
if has_force_cleanup_occurred()
|
|
|
|
Store_Fail_Weapon(player_ped_id(), enum_to_int(get_current_player_ped_enum()))
|
|
mission_flow_mission_force_cleanup()
|
|
reset_glass_window()
|
|
|
|
//restores the players original weapons that were cached at the begining of the mission via
|
|
//STORE_PLAYER_PED_WEAPONS_IN_SNAPSHOT. The weapon globals here are nothing to do with the weapon globals
|
|
//used in SET_REPLAY_MID_MISSION_STAGE_WITH_NAME
|
|
if not player_weapons_restored
|
|
RESTORE_PLAYER_PED_WEAPONS_IN_SNAPSHOT_FOR_CHAR(CHAR_MICHAEL)
|
|
endif
|
|
|
|
if is_ped_injured(player_ped_id())
|
|
g_RestoreSnapshotWeaponsOnDeath = TRUE
|
|
endif
|
|
|
|
mission_cleanup()
|
|
endif
|
|
|
|
mission_setup()//sets up all components required from the start of the mission to the end.
|
|
|
|
|
|
while true
|
|
|
|
wait(0)
|
|
|
|
if not stop_mission_fail_checks
|
|
if mission_fail_checks()
|
|
setup_mission_fail()
|
|
endif
|
|
endif
|
|
|
|
skip_system()
|
|
|
|
REPLAY_CHECK_FOR_EVENT_THIS_FRAME("M_DeadManWalking")
|
|
|
|
switch mission_flow
|
|
|
|
case intro_mocap
|
|
|
|
fbi1_intro_mocap()
|
|
|
|
break
|
|
|
|
case stealth_cutscene
|
|
|
|
fbi1_stealth_cutscene()
|
|
|
|
break
|
|
|
|
case stealth_the_cia_officer
|
|
|
|
fbi1_stealth_the_cia_officer()
|
|
|
|
break
|
|
|
|
case find_bodies
|
|
|
|
fbi1_find_bodies()
|
|
|
|
break
|
|
|
|
case shootout
|
|
|
|
fbi1_shootout()
|
|
|
|
break
|
|
|
|
case escape_cutscene
|
|
|
|
fbi1_escape_cutscene()
|
|
|
|
break
|
|
|
|
case get_to_hills
|
|
|
|
fbi1_get_to_hills()
|
|
|
|
break
|
|
|
|
case mission_fail_stage
|
|
|
|
fbi1_mission_fail_stage()
|
|
|
|
break
|
|
|
|
case load_stage_selector_assets
|
|
|
|
fbi1_load_stage_selector_assets()
|
|
|
|
break
|
|
|
|
endswitch
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
//is_entity_in_angled_area(player_ped_id(), <<267.960, -1350.535, 23.538>>, <<264.483, -1347.523, 26.538>>, 2.0)
|
|
|
|
// if is_keyboard_key_just_pressed(key_t)
|
|
//
|
|
// SET_PED_PRELOAD_VARIATION_DATA(player_ped_id(), PED_COMP_TORSO, 18, 0)
|
|
//
|
|
// while not has_ped_preload_variation_data_finished(player_ped_id())
|
|
// printstring("waiting on assets loading")
|
|
// printnl()
|
|
// wait(0)
|
|
// endwhile
|
|
//
|
|
// endif
|
|
|
|
|
|
|
|
|
|
// if does_entity_exist(bin_bag[1].obj)
|
|
// printvector(get_entity_coords(bin_bag[1].obj))
|
|
// printnl()
|
|
// endif
|
|
|
|
// if does_entity_exist(dead_body[0].ped)
|
|
// printvector(get_entity_coords(dead_body[0].ped, false))
|
|
// printnl()
|
|
// endif
|
|
//
|
|
// if does_entity_exist(dead_body[1].ped)
|
|
// printvector(get_entity_coords(dead_body[1].ped, false))
|
|
// printnl()
|
|
// endif
|
|
|
|
angled_area_locate_widget(player_ped_id())
|
|
|
|
//play_ptfx_on_truck_widget()
|
|
|
|
//create_and_move_object(explosive_barrels[0].obj)
|
|
|
|
// create_and_move_object(bin_bag[1].obj)
|
|
//create_and_move_object_2(bins[1].obj)
|
|
|
|
// if not does_entity_exist(bin[0].obj)
|
|
//
|
|
// request_model(bin[0].model)
|
|
//
|
|
// if has_model_loaded(bin[0].model)
|
|
//
|
|
// bin[0].obj = create_object(bin[0].model, bin[0].pos)
|
|
//
|
|
// endif
|
|
//
|
|
// endif
|
|
//
|
|
// create_and_move_object_2(bin[0].obj)
|
|
|
|
// relative_pitch_and_heading_widget()
|
|
|
|
pfx_widget()
|
|
|
|
if is_keyboard_key_just_pressed(key_s)
|
|
end_cutscene_no_fade()
|
|
set_entity_visible(player_ped_id(), true)
|
|
set_entity_collision(player_ped_id(), true)
|
|
freeze_entity_position(player_ped_id(), false)
|
|
mission_passed()
|
|
endif
|
|
|
|
if not stop_mission_fail_checks
|
|
if is_keyboard_key_just_pressed(key_f)
|
|
mission_failed_text = ""
|
|
setup_mission_fail()
|
|
endif
|
|
endif
|
|
|
|
//angled_area_locate_widget(players_truck.veh)
|
|
|
|
//is_entity_in_angled_area(player_ped_id(), <<252.429, -1367.320, 23.247>>, <<250.590, -1365.777, 26.72>>, 1.5)
|
|
|
|
#endif
|
|
|
|
endwhile
|
|
|
|
endscript
|
|
|
|
//CA_OPEN_COMBAT_WHEN_DEFENSIVE_AREA_IS_REACHED
|
|
|
|
|
|
//line 1711
|
|
|
|
//278.25, -1335.96, 24.25
|
|
|
|
//line 2002
|
|
|
|
//258.0359, -1344.9565, 23.2419
|
|
|
|
//int_office_interior = get_interior_at_coords_with_type(<<57.3878, -1346.0355, 23.7>>, "v_coroner")
|
|
//pin_interior_in_memory(coroner_interior)
|
|
//
|
|
//while not is_interior_ready(int_office_interior)
|
|
// wait(0)
|
|
//endwhile
|
|
|
|
//Target pos = 1612.0624, -1937.1222, 100.6656
|
|
|
|
//139249
|
|
|
|
|
|
//INDEX speaker id character dialogue line
|
|
//
|
|
//15 6 CIA1 cia_attak0
|
|
//2 8 CIA3 cia_attak2
|
|
//9 B CIA5 cia_attak4
|
|
//11 A CIA4 cia_attak3
|
|
//12 7 CIA2 cia_attak1
|
|
//
|
|
//tfcia 1 C CIA6 cia_attak5
|
|
|
|
|
|
//Bug Change: 373726 - dead bodies bug
|
|
//369947 - animation to ragdoll command
|
|
|
|
//dialogue bug with fbi1_doc3 playing during mocap 731786
|
|
|
|
|
|
//794153 - door bug
|
|
|
|
//787629 - window bug
|
|
|
|
//SET_AUDIO_FLAG("ScriptedConvListenerMaySpeak", TRUE)
|
|
|
|
//weapon object - 907536
|
|
|
|
//camera
|
|
|
|
//ANIM reactions for doctor when player moves = 893061
|
|
|
|
//CORPSE VARIATIONS CHANGE - 839479
|
|
|
|
//jumping out of window bug = 968403
|
|
|
|
// no scene handles = 1017792
|
|
|
|
//1101462 = blip not existing.
|
|
|
|
//1093583 - dialogue not being killed on wake up mocap
|
|
|
|
//1169985 - player dropping out issue when climbing out of window.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//proc what_the_fuck_anim_system()
|
|
//
|
|
// switch what_the_fuck_anim_system_status
|
|
//
|
|
// case 0
|
|
//
|
|
// if any controler stick pressed (dead zones)
|
|
// kill the dialogue immediately
|
|
//
|
|
// play wtf synched scene
|
|
//
|
|
// what_the_fuck_anim_system_status++
|
|
//
|
|
// break
|
|
//
|
|
// case 1
|
|
//
|
|
// if create_conversation wtf dialogue line
|
|
//
|
|
// what_the_fuck_anim_system_status++
|
|
//
|
|
// endif
|
|
//
|
|
// break
|
|
//
|
|
// case 2
|
|
//
|
|
// if wtf anim >= 1.0
|
|
// play loop
|
|
//
|
|
// what_the_fuck_anim_system_status++
|
|
//
|
|
// break
|
|
//
|
|
// case 3
|
|
//
|
|
// if any controler stick pressed (dead zones)
|
|
//
|
|
// play run away anim
|
|
//
|
|
// else
|
|
//
|
|
// if are_strings_equal(currently_playing_conversation_root, fbi1_conv_1)
|
|
//
|
|
// operating_table_anim_system_status = 3
|
|
//
|
|
// elif are_strings_equal(currently_playing_conversation, fbi1_conv_2
|
|
//
|
|
// operating_table_anim_system_status = 5
|
|
//
|
|
// elif are_strings_equal(currently_playing_conversation, fbi1_conv_3
|
|
//
|
|
// operating_table_anim_system_status = 7
|
|
//
|
|
// elif are_strings_equal(currently_playing_conversation, fbi1_conv_4
|
|
//
|
|
// operating_table_anim_system_status = 10
|
|
//
|
|
// endif
|
|
//
|
|
// endif
|
|
//
|
|
//
|
|
// break
|
|
//
|
|
// case 4
|
|
//
|
|
// break
|
|
//
|
|
// endswitch
|
|
//
|
|
//endproc
|
|
//
|
|
//proc operating table anim system()
|
|
//
|
|
// switch operating_table_anim_system
|
|
//
|
|
// case 0
|
|
//
|
|
// if intro zip anim >= 1.0
|
|
// if play synched scene fbi1_conv_1
|
|
// create_conversation fbi1_conv_1 //will work the first time as no dialogue will be playing 100%
|
|
//
|
|
// currently_playing_conversation = "fbi1_conv_1"
|
|
//
|
|
// endif
|
|
// endif
|
|
//
|
|
// break
|
|
//
|
|
// case 1
|
|
//
|
|
// if fbi1_conv_1 anim >= 1.0
|
|
// play idle anim
|
|
// task_synchonized_scene_looped
|
|
// endif
|
|
//
|
|
// if not is_any_text_being_displayed
|
|
// if create_conversation fbi1_conv_2
|
|
//
|
|
// play synched scene anims fbi1_conv_2
|
|
//
|
|
// currently_playing_conversation = "fbi1_conv_2"
|
|
//
|
|
// operating_table_anim_system_status++
|
|
//
|
|
// endif
|
|
// endif
|
|
//
|
|
// break
|
|
//
|
|
// endswitch
|
|
//
|
|
//endproc
|
|
//
|
|
//what_the_fuck_anim_system()
|
|
//
|
|
//operating table anim system
|
|
|
|
|
|
//break entity glass no particles issue - 1156519
|
|
|
|
//dialogue progression issue - 1152294
|
|
|
|
|
|
//SET_PED_HEARING_RANGE
|
|
//
|
|
//SET_PLAYER_SNEAKING_NOISE_MULTIPLIER
|
|
//SET_PLAYER_NOISE_MULTIPLIER
|
|
|
|
//1261774 - BREAK ENTITY GLASS BUG
|
|
|
|
//PCF_ShouldChargeNow
|
|
|
|
//1313469
|
|
//bugs with peds going through doors in combat
|
|
//Can you try setting CA_CAN_USE_DYNAMIC_STRAFE_DECISIONS to FALSE for these guys
|
|
//and also CCF_STRAFE_WHEN_MOVING_CHANCE to 1.0?
|
|
|
|
|
|
//1430614 - has_ped_preload_variation_data_finished(player_ped_id()) not working
|
|
|
|
//1513806 - wake up help text is not rendering.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|