static void update_master_caution (void) { // // monitor engine damage // engine_damage_imminent_status = get_current_flight_dynamics_engine_damage_imminent (); if ((!previous_engine_damage_imminent_status) && engine_damage_imminent_status) { play_client_server_warning_message (get_gunship_entity (), SPEECH_SYSTEM_ENGINE_OVERTORQUE); activate_blackhawk_master_caution (); } previous_engine_damage_imminent_status = engine_damage_imminent_status; // // update master caution // master_caution_sound_timer -= get_delta_time (); if (master_caution_sound_timer <= 0.0) { master_caution_sound_timer = 0.0; pause_local_entity_sound_type (get_gunship_entity (), ENTITY_SUB_TYPE_EFFECT_SOUND_MCA, 0.5); } }
static void update_master_caution (void) { // // monitor engine damage // engine_damage_imminent_status = get_current_flight_dynamics_engine_damage_imminent (); if ((!previous_engine_damage_imminent_status) && engine_damage_imminent_status) { play_client_server_warning_message (get_gunship_entity (), SPEECH_SYSTEM_ENGINE_OVERTORQUE); activate_hokum_master_caution (); } previous_engine_damage_imminent_status = engine_damage_imminent_status; // // update master caution lamp // if (master_caution_alert) { master_caution_flash_timer -= get_delta_time (); if (master_caution_flash_timer <= 0.0) { master_caution_flash_timer = MASTER_CAUTION_FLASH_RATE; hokum_lamps.master_caution ^= 1; } master_caution_sound_timer -= get_delta_time (); if (master_caution_sound_timer <= 0.0) { master_caution_sound_timer = 0.0; pause_local_entity_sound_type (get_gunship_entity (), ENTITY_SUB_TYPE_EFFECT_SOUND_MCA, 0.5); } } }
static void damage_systems (kiowa_damage_flags damage) { entity *en; en = get_gunship_entity (); //////////////////////////////////////// if (damage.flir) { if (!kiowa_damage.flir) { activate_kiowa_master_caution (); kiowa_damage.flir = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); play_client_server_warning_message (en, SPEECH_SYSTEM_FLIR_FAILURE); if (target_acquisition_system == TARGET_ACQUISITION_SYSTEM_FLIR) { select_kiowa_target_acquisition_system (TARGET_ACQUISITION_SYSTEM_OFF); } } } //////////////////////////////////////// if (damage.dtv) { if (!kiowa_damage.dtv) { activate_kiowa_master_caution (); kiowa_damage.dtv = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); play_client_server_warning_message (en, SPEECH_SYSTEM_DTV_FAILURE); if (target_acquisition_system == TARGET_ACQUISITION_SYSTEM_DTV) { select_kiowa_target_acquisition_system (TARGET_ACQUISITION_SYSTEM_OFF); } } } //////////////////////////////////////// if (damage.laser_designator) { if (!kiowa_damage.laser_designator) { activate_kiowa_master_caution (); kiowa_damage.laser_designator = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_laser_is_active(FALSE); play_client_server_warning_message (en, SPEECH_SYSTEM_LASER_DESIGNATOR_FAILURE); } } //////////////////////////////////////// if (damage.infra_red_jammer) { if (!kiowa_damage.infra_red_jammer) { activate_kiowa_master_caution (); kiowa_damage.infra_red_jammer = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); play_client_server_warning_message (en, SPEECH_SYSTEM_IR_JAMMER_FAILURE); if (get_local_entity_int_value (get_gunship_entity (), INT_TYPE_INFRA_RED_JAMMER_ON)) { set_client_server_entity_int_value (get_gunship_entity (), INT_TYPE_INFRA_RED_JAMMER_ON, FALSE); } } } //////////////////////////////////////// if (damage.navigation_computer) { if (!kiowa_damage.navigation_computer) { activate_kiowa_master_caution (); kiowa_damage.navigation_computer = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); play_client_server_warning_message (en, SPEECH_SYSTEM_NAV_COMPUTER_FAILURE); } } //////////////////////////////////////// if (damage.communications) { if (!kiowa_damage.communications) { activate_kiowa_master_caution (); kiowa_damage.communications = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); play_client_server_warning_message (en, SPEECH_SYSTEM_COMMS_FAILURE); } } //////////////////////////////////////// if (damage.radar_warning_system) { if (!kiowa_damage.radar_warning_system) { activate_kiowa_master_caution (); kiowa_damage.radar_warning_system = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); play_client_server_warning_message (en, SPEECH_SYSTEM_RADAR_WARNING_FAILURE); } } //////////////////////////////////////// if (damage.co_pilot_main_mfd) { if (!kiowa_damage.co_pilot_main_mfd) { activate_kiowa_master_caution (); kiowa_damage.co_pilot_main_mfd = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); play_client_server_warning_message (en, SPEECH_SYSTEM_MFD_FAILURE); select_kiowa_main_mfd_mode (KIOWA_MAIN_MFD_MODE_DAMAGED, KIOWA_MAIN_MFD_LOCATION_CO_PILOT); } } //////////////////////////////////////// if (damage.pilot_main_mfd) { if (!kiowa_damage.pilot_main_mfd) { activate_kiowa_master_caution (); kiowa_damage.pilot_main_mfd = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); play_client_server_warning_message (en, SPEECH_SYSTEM_MFD_FAILURE); select_kiowa_main_mfd_mode (KIOWA_MAIN_MFD_MODE_DAMAGED, KIOWA_MAIN_MFD_LOCATION_PILOT); } } //////////////////////////////////////// if (damage.center_main_mfd) { if (!kiowa_damage.center_main_mfd) { activate_kiowa_master_caution (); kiowa_damage.center_main_mfd = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); play_client_server_warning_message (en, SPEECH_SYSTEM_MFD_FAILURE); select_kiowa_main_mfd_mode (KIOWA_MAIN_MFD_MODE_DAMAGED, KIOWA_MAIN_MFD_LOCATION_CENTER); } } //////////////////////////////////////// if (damage.pnvs) { if (!kiowa_damage.pnvs) { activate_kiowa_master_caution (); kiowa_damage.pnvs = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); play_client_server_warning_message (en, SPEECH_SYSTEM_PNVS_FAILURE); night_vision_system_active = FALSE; } } //////////////////////////////////////// if (damage.lh_pylon) { if (!kiowa_damage.lh_pylon) { activate_kiowa_master_caution (); kiowa_damage.lh_pylon = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); play_client_server_warning_message (en, SPEECH_SYSTEM_HARDPOINT_DAMAGED); } } //////////////////////////////////////// if (damage.rh_pylon) { if (!kiowa_damage.rh_pylon) { activate_kiowa_master_caution (); kiowa_damage.rh_pylon = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); play_client_server_warning_message (en, SPEECH_SYSTEM_HARDPOINT_DAMAGED); } } //////////////////////////////////////// if (damage.chaff_dispenser) { if (!kiowa_damage.chaff_dispenser) { activate_kiowa_master_caution (); kiowa_damage.chaff_dispenser = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); play_client_server_warning_message (en, SPEECH_SYSTEM_CHAFF_DISPENSER_DAMAGED); } } //////////////////////////////////////// if (damage.flare_dispenser) { if (!kiowa_damage.flare_dispenser) { activate_kiowa_master_caution (); kiowa_damage.flare_dispenser = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); play_client_server_warning_message (en, SPEECH_SYSTEM_FLARE_DISPENSER_DAMAGED); } } //////////////////////////////////////// if (damage.hud) { if (!kiowa_damage.hud) { activate_kiowa_master_caution (); kiowa_damage.hud = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); play_client_server_warning_message (en, SPEECH_SYSTEM_HUD_FAILURE); } } //////////////////////////////////////// set_kiowa_weapon_damage_status (); }
static void damage_systems (havoc_damage_flags damage) { entity *en; en = get_gunship_entity (); //////////////////////////////////////// if (damage.radar) { if (!havoc_damage.radar) { activate_havoc_master_caution_lamp (); havoc_damage.radar = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_havoc_ekran_display_text ("RADAR", "FAILURE", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_RADAR_FAILURE); if ( (target_acquisition_system == TARGET_ACQUISITION_SYSTEM_GROUND_RADAR) || (target_acquisition_system == TARGET_ACQUISITION_SYSTEM_AIR_RADAR) ) { select_havoc_target_acquisition_system (TARGET_ACQUISITION_SYSTEM_OFF); } } } //////////////////////////////////////// if (damage.flir) { if (!havoc_damage.flir) { activate_havoc_master_caution_lamp (); havoc_damage.flir = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_havoc_ekran_display_text ("FLIR", "FAILURE", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_FLIR_FAILURE); if (target_acquisition_system == TARGET_ACQUISITION_SYSTEM_FLIR) { select_havoc_target_acquisition_system (TARGET_ACQUISITION_SYSTEM_OFF); } } } //////////////////////////////////////// if (damage.llltv) { if (!havoc_damage.llltv) { activate_havoc_master_caution_lamp (); havoc_damage.llltv = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_havoc_ekran_display_text ("LLLTV", "FAILURE", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_LLLTV_FAILURE); if (target_acquisition_system == TARGET_ACQUISITION_SYSTEM_LLLTV) { select_havoc_target_acquisition_system (TARGET_ACQUISITION_SYSTEM_OFF); } } } //////////////////////////////////////// if (damage.laser_range_finder) { if (!havoc_damage.laser_range_finder) { activate_havoc_master_caution_lamp (); havoc_damage.laser_range_finder = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_havoc_ekran_display_text ("LASER", "FAILURE", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_LASER_RANGE_FINDER_FAILURE); } } //////////////////////////////////////// if (damage.radar_jammer) { if (!havoc_damage.radar_jammer) { activate_havoc_master_caution_lamp (); havoc_damage.radar_jammer = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_havoc_ekran_display_text ("RD JAMMER", "FAILURE", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_RADAR_JAMMER_FAILURE); if (get_local_entity_int_value (get_gunship_entity (), INT_TYPE_RADAR_JAMMER_ON)) { set_client_server_entity_int_value (get_gunship_entity (), INT_TYPE_RADAR_JAMMER_ON, FALSE); } } } //////////////////////////////////////// if (damage.infra_red_jammer) { if (!havoc_damage.infra_red_jammer) { activate_havoc_master_caution_lamp (); havoc_damage.infra_red_jammer = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_havoc_ekran_display_text ("IR JAMMER", "FAILURE", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_IR_JAMMER_FAILURE); if (get_local_entity_int_value (get_gunship_entity (), INT_TYPE_INFRA_RED_JAMMER_ON)) { set_client_server_entity_int_value (get_gunship_entity (), INT_TYPE_INFRA_RED_JAMMER_ON, FALSE); } } } //////////////////////////////////////// if (damage.navigation_computer) { if (!havoc_damage.navigation_computer) { activate_havoc_master_caution_lamp (); havoc_damage.navigation_computer = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_havoc_ekran_display_text ("NAV COMP", "FAILURE", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_NAV_COMPUTER_FAILURE); } } //////////////////////////////////////// if (damage.communications) { if (!havoc_damage.communications) { activate_havoc_master_caution_lamp (); havoc_damage.communications = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_havoc_ekran_display_text ("COMMS", "FAILURE", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_COMMS_FAILURE); } } //////////////////////////////////////// if (damage.radar_warning_system) { if (!havoc_damage.radar_warning_system) { activate_havoc_master_caution_lamp (); havoc_damage.radar_warning_system = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_havoc_ekran_display_text ("RWS", "FAILURE", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_RADAR_WARNING_FAILURE); } } //////////////////////////////////////// if (!get_global_simple_avionics ()) { if (damage.head_up_display) { if (!havoc_damage.head_up_display) { activate_havoc_master_caution_lamp (); havoc_damage.head_up_display = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_havoc_ekran_display_text ("HUD", "FAILURE", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_HUD_FAILURE); } } } //////////////////////////////////////// if (!get_global_simple_avionics ()) { if (damage.helmet_mounted_sight) { if (!havoc_damage.helmet_mounted_sight) { activate_havoc_master_caution_lamp (); havoc_damage.helmet_mounted_sight = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_havoc_ekran_display_text ("HMS", "FAILURE", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_HELMET_MOUNTED_SIGHT_FAILURE); if (target_acquisition_system == TARGET_ACQUISITION_SYSTEM_HMS) { select_havoc_target_acquisition_system (TARGET_ACQUISITION_SYSTEM_OFF); } } } } //////////////////////////////////////// if (damage.tv_display) { if (!havoc_damage.tv_display) { activate_havoc_master_caution_lamp (); havoc_damage.tv_display = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_havoc_ekran_display_text ("TV", "FAILURE", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_TV_DISPLAY_FAILURE); } } //////////////////////////////////////// if (damage.threat_warning_display) { if (!havoc_damage.threat_warning_display) { activate_havoc_master_caution_lamp (); havoc_damage.threat_warning_display = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_havoc_ekran_display_text ("TWD", "FAILURE", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_THREAT_WARNING_DISPLAY_FAILURE); } } //////////////////////////////////////// if (damage.night_vision_goggles) { if (!havoc_damage.night_vision_goggles) { activate_havoc_master_caution_lamp (); havoc_damage.night_vision_goggles = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_havoc_ekran_display_text ("NVG", "DAMAGED", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_NIGHT_VISION_GOGGLES_FAILURE); night_vision_system_active = FALSE; } } //////////////////////////////////////// if (damage.gun_jammed) { if (!havoc_damage.gun_jammed) { activate_havoc_master_caution_lamp (); havoc_damage.gun_jammed = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_havoc_ekran_display_text ("GUN", "JAMMED", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_GUN_JAMMED); } } //////////////////////////////////////// if (damage.lh_outer_pylon) { if (!havoc_damage.lh_outer_pylon) { activate_havoc_master_caution_lamp (); havoc_damage.lh_outer_pylon = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_havoc_ekran_display_text ("HARDPOINT", "DAMAGED", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_HARDPOINT_DAMAGED); } } //////////////////////////////////////// if (damage.lh_inner_pylon) { if (!havoc_damage.lh_inner_pylon) { activate_havoc_master_caution_lamp (); havoc_damage.lh_inner_pylon = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_havoc_ekran_display_text ("HARDPOINT", "DAMAGED", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_HARDPOINT_DAMAGED); } } //////////////////////////////////////// if (damage.rh_outer_pylon) { if (!havoc_damage.rh_outer_pylon) { activate_havoc_master_caution_lamp (); havoc_damage.rh_outer_pylon = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_havoc_ekran_display_text ("HARDPOINT", "DAMAGED", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_HARDPOINT_DAMAGED); } } //////////////////////////////////////// if (damage.rh_inner_pylon) { if (!havoc_damage.rh_inner_pylon) { activate_havoc_master_caution_lamp (); havoc_damage.rh_inner_pylon = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_havoc_ekran_display_text ("HARDPOINT", "DAMAGED", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_HARDPOINT_DAMAGED); } } //////////////////////////////////////// if (damage.chaff_dispenser) { if (!havoc_damage.chaff_dispenser) { activate_havoc_master_caution_lamp (); havoc_damage.chaff_dispenser = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_havoc_ekran_display_text ("CHAFF", "DAMAGED", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_CHAFF_DISPENSER_DAMAGED); } } //////////////////////////////////////// if (damage.flare_dispenser) { if (!havoc_damage.flare_dispenser) { activate_havoc_master_caution_lamp (); havoc_damage.flare_dispenser = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_havoc_ekran_display_text ("FLARES", "DAMAGED", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_FLARE_DISPENSER_DAMAGED); } } //////////////////////////////////////// set_havoc_weapon_damage_status (); }
void dynamics_damage_model (unsigned int damage, int random) { dynamics_damage_types damage_array [NUM_DYNAMIC_DAMAGES]; int count; dynamics_damage_types this_damage; if (!get_session_entity ()) { return; } if (get_local_entity_int_value (get_gunship_entity (), INT_TYPE_INVULNERABLE_FROM_COLLISIONS)) { // if invulnerable only allow damage/use of fire extinguisher damage = damage & DYNAMICS_DAMAGE_FIRE_EXTINGUISHER; } if (random) { damage_array [0] = DYNAMICS_DAMAGE_NONE; this_damage = DYNAMICS_DAMAGE_NONE; count = 1; while (this_damage < NUM_DYNAMICS_DAMAGE_TYPES) { if (damage & this_damage) { damage_array [count] = this_damage; count ++; } this_damage = this_damage << 1; } damage = damage_array [rand16 () % count]; #if DYNAMICS_DEBUG debug_log ("DYNAMICS: randomly selecting damage %d", damage); #endif } notify_avionics_of_dynamics_fault (damage); this_damage = DYNAMICS_DAMAGE_NONE; while (this_damage < NUM_DYNAMICS_DAMAGE_TYPES) { if ((damage & this_damage) && (!(current_flight_dynamics->dynamics_damage & this_damage))) { switch (this_damage) { case DYNAMICS_DAMAGE_NONE: { #if DYNAMICS_DEBUG debug_log ("DYNAMICS: no damage"); #endif current_flight_dynamics->dynamics_damage = DYNAMICS_DAMAGE_NONE; current_flight_dynamics->main_blade_pitch.damaged = FALSE; current_flight_dynamics->main_rotor_roll_angle.damaged = FALSE; current_flight_dynamics->main_rotor_pitch_angle.damaged = FALSE; current_flight_dynamics->main_rotor_rpm.damaged = FALSE; current_flight_dynamics->tail_blade_pitch.damaged = FALSE; current_flight_dynamics->tail_rotor_rpm.damaged = FALSE; current_flight_dynamics->left_engine_torque.damaged = FALSE; current_flight_dynamics->left_engine_rpm.damaged = FALSE; current_flight_dynamics->right_engine_torque.damaged = FALSE; current_flight_dynamics->right_engine_rpm.damaged = FALSE; current_flight_dynamics->cross_coupling_effect.damaged = FALSE; current_flight_dynamics->input_data.cyclic_x.damaged = FALSE; current_flight_dynamics->input_data.cyclic_y.damaged = FALSE; current_flight_dynamics->input_data.cyclic_x_trim.damaged = FALSE; current_flight_dynamics->input_data.cyclic_y_trim.damaged = FALSE; break; } case DYNAMICS_DAMAGE_MAIN_ROTOR: { //#if DYNAMICS_DEBUG debug_log ("DYNAMICS: main rotor damage"); //#endif current_flight_dynamics->dynamics_damage |= DYNAMICS_DAMAGE_MAIN_ROTOR; current_flight_dynamics->main_blade_pitch.damaged = TRUE; current_flight_dynamics->main_rotor_roll_angle.damaged = TRUE; current_flight_dynamics->main_rotor_pitch_angle.damaged = TRUE; current_flight_dynamics->main_rotor_rpm.damaged = TRUE; set_client_server_entity_int_value (get_gunship_entity (), INT_TYPE_MAIN_ROTOR_DAMAGED, TRUE); play_client_server_warning_message (get_gunship_entity (), SPEECH_SYSTEM_MAIN_ROTOR_DAMAGED); set_current_flight_dynamics_auto_hover (HOVER_HOLD_NONE); set_current_flight_dynamics_auto_pilot (FALSE); break; } case DYNAMICS_DAMAGE_TAIL_ROTOR: { //#if DYNAMICS_DEBUG debug_log ("DYNAMICS: tail rotor damage"); //#endif current_flight_dynamics->dynamics_damage |= DYNAMICS_DAMAGE_TAIL_ROTOR; current_flight_dynamics->tail_blade_pitch.damaged = TRUE; current_flight_dynamics->tail_rotor_rpm.damaged = TRUE; current_flight_dynamics->cross_coupling_effect.damaged = TRUE; set_client_server_entity_int_value (get_gunship_entity (), INT_TYPE_TAIL_ROTOR_DAMAGED, TRUE); play_client_server_warning_message (get_gunship_entity (), SPEECH_SYSTEM_TAIL_ROTOR_DAMAGED); set_current_flight_dynamics_auto_hover (HOVER_HOLD_NONE); set_current_flight_dynamics_auto_pilot (FALSE); break; } case DYNAMICS_DAMAGE_LEFT_ENGINE: { //#if DYNAMICS_DEBUG debug_log ("DYNAMICS: left engine damage"); //#endif current_flight_dynamics->dynamics_damage |= DYNAMICS_DAMAGE_LEFT_ENGINE; current_flight_dynamics->left_engine_torque.damaged = TRUE; current_flight_dynamics->left_engine_rpm.damaged = TRUE; play_client_server_warning_message (get_gunship_entity (), SPEECH_SYSTEM_LEFT_ENGINE_FAILURE); set_current_flight_dynamics_auto_hover (HOVER_HOLD_NONE); set_current_flight_dynamics_auto_pilot (FALSE); break; } case DYNAMICS_DAMAGE_RIGHT_ENGINE: { //#if DYNAMICS_DEBUG debug_log ("DYNAMICS: right engine damage"); //#endif current_flight_dynamics->dynamics_damage |= DYNAMICS_DAMAGE_RIGHT_ENGINE; current_flight_dynamics->right_engine_torque.damaged = TRUE; current_flight_dynamics->right_engine_rpm.damaged = TRUE; play_client_server_warning_message (get_gunship_entity (), SPEECH_SYSTEM_RIGHT_ENGINE_FAILURE); set_current_flight_dynamics_auto_hover (HOVER_HOLD_NONE); set_current_flight_dynamics_auto_pilot (FALSE); break; } case DYNAMICS_DAMAGE_LEFT_ENGINE_FIRE: { //#if DYNAMICS_DEBUG debug_log ("DYNAMICS: left engine fire damage"); //#endif current_flight_dynamics->dynamics_damage |= DYNAMICS_DAMAGE_LEFT_ENGINE_FIRE; play_client_server_warning_message (get_gunship_entity (), SPEECH_SYSTEM_LEFT_ENGINE_FIRE); set_current_flight_dynamics_auto_hover (HOVER_HOLD_NONE); set_current_flight_dynamics_auto_pilot (FALSE); break; } case DYNAMICS_DAMAGE_RIGHT_ENGINE_FIRE: { //#if DYNAMICS_DEBUG debug_log ("DYNAMICS: right engine fire damage"); //#endif current_flight_dynamics->dynamics_damage |= DYNAMICS_DAMAGE_RIGHT_ENGINE_FIRE; play_client_server_warning_message (get_gunship_entity (), SPEECH_SYSTEM_RIGHT_ENGINE_FIRE); set_current_flight_dynamics_auto_hover (HOVER_HOLD_NONE); set_current_flight_dynamics_auto_pilot (FALSE); break; } case DYNAMICS_DAMAGE_LOW_HYDRAULICS: { //#if DYNAMICS_DEBUG debug_log ("DYNAMICS: LOW HYDRAULICS damage"); //#endif current_flight_dynamics->dynamics_damage |= DYNAMICS_DAMAGE_LOW_HYDRAULICS; current_flight_dynamics->input_data.cyclic_x.damaged = TRUE; current_flight_dynamics->input_data.cyclic_y.damaged = TRUE; if (sfrand1 () < 0.0) { play_client_server_warning_message (get_gunship_entity (), SPEECH_SYSTEM_HYDRAULIC_PRESSURE_FAILURE); } else { play_client_server_cpg_message (get_gunship_entity (), 0.5, 1.0, SPEECH_CATEGORY_CPG_SYSTEMS, 1.0, SPEECH_CPG_CONTROL_SYSTEMS_DAMAGED); } set_current_flight_dynamics_auto_hover (HOVER_HOLD_NONE); set_current_flight_dynamics_auto_pilot (FALSE); break; } case DYNAMICS_DAMAGE_STABILISER: { //#if DYNAMICS_DEBUG debug_log ("DYNAMICS: STABILISER damage"); //#endif current_flight_dynamics->dynamics_damage |= DYNAMICS_DAMAGE_STABILISER; set_current_flight_dynamics_auto_hover (HOVER_HOLD_NONE); set_current_flight_dynamics_auto_pilot (FALSE); if (sfrand1 () < 0.0) { play_client_server_warning_message (get_gunship_entity (), SPEECH_SYSTEM_STABILISER_DAMAGED); } else { play_client_server_cpg_message (get_gunship_entity (), 0.5, 1.0, SPEECH_CATEGORY_CPG_SYSTEMS, 1.0, SPEECH_CPG_CONTROL_SYSTEMS_DAMAGED); } break; } case DYNAMICS_DAMAGE_FUEL_LEAK: { //#if DYNAMICS_DEBUG debug_log ("DYNAMICS: FUEL_LEAK damage"); //#endif current_flight_dynamics->dynamics_damage |= DYNAMICS_DAMAGE_FUEL_LEAK; play_client_server_warning_message (get_gunship_entity (), SPEECH_SYSTEM_FUEL_LEAK); break; } case DYNAMICS_DAMAGE_LOW_OIL_PRESSURE: { //#if DYNAMICS_DEBUG debug_log ("DYNAMICS: LOW_OIL_PRESSURE damage"); //#endif current_flight_dynamics->dynamics_damage |= DYNAMICS_DAMAGE_LOW_OIL_PRESSURE; current_flight_dynamics->input_data.cyclic_y.damaged = TRUE; if (sfrand1 () < 0.0) { play_client_server_warning_message (get_gunship_entity (), SPEECH_SYSTEM_LOW_ENGINE_OIL_PRESSURE); } else { play_client_server_cpg_message (get_gunship_entity (), 0.5, 1.0, SPEECH_CATEGORY_CPG_SYSTEMS, 1.0, SPEECH_CPG_CONTROL_SYSTEMS_DAMAGED); } set_current_flight_dynamics_auto_hover (HOVER_HOLD_NONE); set_current_flight_dynamics_auto_pilot (FALSE); break; } case DYNAMICS_DAMAGE_HIGH_OIL_PRESSURE: { //#if DYNAMICS_DEBUG debug_log ("DYNAMICS: HIGH_OIL_PRESSURE damage"); //#endif current_flight_dynamics->dynamics_damage |= DYNAMICS_DAMAGE_HIGH_OIL_PRESSURE; current_flight_dynamics->input_data.collective.damaged = TRUE; if (sfrand1 () < 0.0) { play_client_server_warning_message (get_gunship_entity (), SPEECH_SYSTEM_HIGH_ENGINE_OIL_TEMPERATURE); } else { play_client_server_cpg_message (get_gunship_entity (), 0.5, 1.0, SPEECH_CATEGORY_CPG_SYSTEMS, 1.0, SPEECH_CPG_CONTROL_SYSTEMS_DAMAGED); } set_current_flight_dynamics_auto_hover (HOVER_HOLD_NONE); set_current_flight_dynamics_auto_pilot (FALSE); break; } case DYNAMICS_DAMAGE_AVIONICS: { //#if DYNAMICS_DEBUG debug_log ("DYNAMICS: AVIONICS damage"); //#endif current_flight_dynamics->dynamics_damage |= DYNAMICS_DAMAGE_AVIONICS; break; } case DYNAMICS_DAMAGE_FIRE_EXTINGUISHER: { //#if DYNAMICS_DEBUG debug_log ("DYNAMICS: FIRE_EXTINGUISHER damage"); //#endif current_flight_dynamics->dynamics_damage |= DYNAMICS_DAMAGE_FIRE_EXTINGUISHER; break; } case DYNAMICS_DAMAGE_UNDERCARRIAGE: { //#if DYNAMICS_DEBUG debug_log ("DYNAMICS: UNDERCARRIAGE damage"); //#endif current_flight_dynamics->dynamics_damage |= DYNAMICS_DAMAGE_UNDERCARRIAGE; current_flight_dynamics->undercarriage_state.damaged = TRUE; play_client_server_warning_message (get_gunship_entity (), SPEECH_SYSTEM_GEAR_DAMAGED); break; } default: { debug_fatal ("DYNAMICS: unknown damage %d", this_damage); } } } this_damage = this_damage << 1; } }
static void damage_systems (apache_damage_flags damage) { entity *en; en = get_gunship_entity (); //////////////////////////////////////// if (damage.radar) { if (!apache_damage.radar) { apache_damage.radar = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("RADAR FAILURE", "", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_RADAR_FAILURE); if ( (target_acquisition_system == TARGET_ACQUISITION_SYSTEM_GROUND_RADAR) || (target_acquisition_system == TARGET_ACQUISITION_SYSTEM_AIR_RADAR) ) { select_apache_target_acquisition_system (TARGET_ACQUISITION_SYSTEM_OFF); } } } //////////////////////////////////////// if (damage.flir) { if (!apache_damage.flir) { apache_damage.flir = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("FLIR FAILURE", "", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_FLIR_FAILURE); if (target_acquisition_system == TARGET_ACQUISITION_SYSTEM_FLIR) { select_apache_target_acquisition_system (TARGET_ACQUISITION_SYSTEM_OFF); } } } //////////////////////////////////////// if (damage.dtv) { if (!apache_damage.dtv) { apache_damage.dtv = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("DTV FAILURE", "", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_DTV_FAILURE); if (target_acquisition_system == TARGET_ACQUISITION_SYSTEM_DTV) { select_apache_target_acquisition_system (TARGET_ACQUISITION_SYSTEM_OFF); } } } //////////////////////////////////////// if (damage.dvo) { if (!apache_damage.dvo) { apache_damage.dvo = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("DVO FAILURE", "", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_DVO_FAILURE); if (target_acquisition_system == TARGET_ACQUISITION_SYSTEM_DVO) { select_apache_target_acquisition_system (TARGET_ACQUISITION_SYSTEM_OFF); } } } //////////////////////////////////////// if (damage.laser_designator) { if (!apache_damage.laser_designator) { apache_damage.laser_designator = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("LASER DESIG", "FAILURE", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_LASER_DESIGNATOR_FAILURE); } } //////////////////////////////////////// if (damage.radar_jammer) { if (!apache_damage.radar_jammer) { apache_damage.radar_jammer = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("RADAR JAMMER", "FAILURE", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_RADAR_JAMMER_FAILURE); if (get_local_entity_int_value (get_gunship_entity (), INT_TYPE_RADAR_JAMMER_ON)) { set_client_server_entity_int_value (get_gunship_entity (), INT_TYPE_RADAR_JAMMER_ON, FALSE); } } } //////////////////////////////////////// if (damage.infra_red_jammer) { if (!apache_damage.infra_red_jammer) { apache_damage.infra_red_jammer = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("IR JAMMER", "FAILURE", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_IR_JAMMER_FAILURE); if (get_local_entity_int_value (get_gunship_entity (), INT_TYPE_INFRA_RED_JAMMER_ON)) { set_client_server_entity_int_value (get_gunship_entity (), INT_TYPE_INFRA_RED_JAMMER_ON, FALSE); } } } //////////////////////////////////////// if (damage.navigation_computer) { if (!apache_damage.navigation_computer) { apache_damage.navigation_computer = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("NAV COMPUTER", "FAILURE", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_NAV_COMPUTER_FAILURE); } } //////////////////////////////////////// if (damage.communications) { if (!apache_damage.communications) { apache_damage.communications = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("COMMS FAILURE", "", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_COMMS_FAILURE); } } //////////////////////////////////////// if (damage.radar_warning_system) { if (!apache_damage.radar_warning_system) { apache_damage.radar_warning_system = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("RADAR WARNING", "FAILURE", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_RADAR_WARNING_FAILURE); } } //////////////////////////////////////// if (!get_global_simple_avionics ()) { if (damage.ihadss) { if (!apache_damage.ihadss) { apache_damage.ihadss = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("IHADSS FAILURE", "", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_IHADSS_FAILURE); if (target_acquisition_system == TARGET_ACQUISITION_SYSTEM_IHADSS) { select_apache_target_acquisition_system (TARGET_ACQUISITION_SYSTEM_OFF); } } } } //////////////////////////////////////// if (damage.lh_mfd) { if (!apache_damage.lh_mfd) { apache_damage.lh_mfd = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("MFD FAILURE", "", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_MFD_FAILURE); select_apache_mfd_mode (MFD_MODE_DAMAGED, MFD_LOCATION_LHS); } } //////////////////////////////////////// if (damage.rh_mfd) { if (!apache_damage.rh_mfd) { apache_damage.rh_mfd = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("MFD FAILURE", "", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_MFD_FAILURE); select_apache_mfd_mode (MFD_MODE_DAMAGED, MFD_LOCATION_RHS); } } //////////////////////////////////////// if (damage.pnvs) { if (!apache_damage.pnvs) { apache_damage.pnvs = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("PNVS FAILURE", "", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_PNVS_FAILURE); night_vision_system_active = FALSE; } } //////////////////////////////////////// if (damage.gun_jammed) { if (!apache_damage.gun_jammed) { apache_damage.gun_jammed = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("GUN JAMMED", "", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_GUN_JAMMED); } } //////////////////////////////////////// if (damage.lh_wing_tip_mount) { if (!apache_damage.lh_wing_tip_mount) { apache_damage.lh_wing_tip_mount = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("HARDPOINT", "DAMAGED", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_HARDPOINT_DAMAGED); } } //////////////////////////////////////// if (damage.lh_outer_pylon) { if (!apache_damage.lh_outer_pylon) { apache_damage.lh_outer_pylon = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("HARDPOINT", "DAMAGED", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_HARDPOINT_DAMAGED); } } //////////////////////////////////////// if (damage.lh_inner_pylon) { if (!apache_damage.lh_inner_pylon) { apache_damage.lh_inner_pylon = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("HARDPOINT", "DAMAGED", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_HARDPOINT_DAMAGED); } } //////////////////////////////////////// if (damage.rh_wing_tip_mount) { if (!apache_damage.rh_wing_tip_mount) { apache_damage.rh_wing_tip_mount = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("HARDPOINT", "DAMAGED", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_HARDPOINT_DAMAGED); } } //////////////////////////////////////// if (damage.rh_outer_pylon) { if (!apache_damage.rh_outer_pylon) { apache_damage.rh_outer_pylon = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("HARDPOINT", "DAMAGED", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_HARDPOINT_DAMAGED); } } //////////////////////////////////////// if (damage.rh_inner_pylon) { if (!apache_damage.rh_inner_pylon) { apache_damage.rh_inner_pylon = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("HARDPOINT", "DAMAGED", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_HARDPOINT_DAMAGED); } } //////////////////////////////////////// if (damage.chaff_dispenser) { if (!apache_damage.chaff_dispenser) { apache_damage.chaff_dispenser = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("CHAFF DISPNSR", "DAMAGED", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_CHAFF_DISPENSER_DAMAGED); } } //////////////////////////////////////// if (damage.flare_dispenser) { if (!apache_damage.flare_dispenser) { apache_damage.flare_dispenser = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_apache_upfront_display_text ("FLARE DISPNSR", "DAMAGED", NULL, NULL); play_client_server_warning_message (en, SPEECH_SYSTEM_FLARE_DISPENSER_DAMAGED); } } //////////////////////////////////////// set_apache_weapon_damage_status (); }
static void damage_systems (ka50_damage_flags damage) { entity *en; en = get_gunship_entity (); //////////////////////////////////////// if (damage.flir) { if (!ka50_damage.flir) { activate_ka50_master_caution (); ka50_damage.flir = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_ka50_text_display_text ("FLIR", "FAILURE", ""); play_client_server_warning_message (en, SPEECH_SYSTEM_FLIR_FAILURE); if (target_acquisition_system == TARGET_ACQUISITION_SYSTEM_FLIR) { select_ka50_target_acquisition_system (TARGET_ACQUISITION_SYSTEM_OFF); } } } //////////////////////////////////////// if (damage.laser_designator) { if (!ka50_damage.laser_designator) { activate_ka50_master_caution (); ka50_damage.laser_designator = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_laser_is_active(FALSE); set_ka50_text_display_text ("LASER", "DESIGNATOR", "FAILURE"); play_client_server_warning_message (en, SPEECH_SYSTEM_LASER_DESIGNATOR_FAILURE); } } //////////////////////////////////////// if (damage.radar_jammer) { if (!ka50_damage.radar_jammer) { activate_ka50_master_caution (); ka50_damage.radar_jammer = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_ka50_text_display_text ("RADAR", "JAMMER", "FAILURE"); play_client_server_warning_message (en, SPEECH_SYSTEM_RADAR_JAMMER_FAILURE); if (get_local_entity_int_value (get_gunship_entity (), INT_TYPE_RADAR_JAMMER_ON)) { set_client_server_entity_int_value (get_gunship_entity (), INT_TYPE_RADAR_JAMMER_ON, FALSE); } } } //////////////////////////////////////// if (damage.infra_red_jammer) { if (!ka50_damage.infra_red_jammer) { activate_ka50_master_caution (); ka50_damage.infra_red_jammer = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_ka50_text_display_text ("IR JAMMER", "FAILURE", ""); play_client_server_warning_message (en, SPEECH_SYSTEM_IR_JAMMER_FAILURE); if (get_local_entity_int_value (get_gunship_entity (), INT_TYPE_INFRA_RED_JAMMER_ON)) { set_client_server_entity_int_value (get_gunship_entity (), INT_TYPE_INFRA_RED_JAMMER_ON, FALSE); } } } //////////////////////////////////////// if (damage.navigation_computer) { if (!ka50_damage.navigation_computer) { activate_ka50_master_caution (); ka50_damage.navigation_computer = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_ka50_text_display_text ("NAVIGATION", "COMPUTER", "FAILURE"); play_client_server_warning_message (en, SPEECH_SYSTEM_NAV_COMPUTER_FAILURE); } } //////////////////////////////////////// if (damage.communications) { if (!ka50_damage.communications) { activate_ka50_master_caution (); ka50_damage.communications = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_ka50_text_display_text ("COMMS", "FAILURE", ""); play_client_server_warning_message (en, SPEECH_SYSTEM_COMMS_FAILURE); } } //////////////////////////////////////// if (damage.radar_warning_system) { if (!ka50_damage.radar_warning_system) { activate_ka50_master_caution (); ka50_damage.radar_warning_system = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_ka50_text_display_text ("RADAR", "WARNING", "FAILURE"); play_client_server_warning_message (en, SPEECH_SYSTEM_RADAR_WARNING_FAILURE); } } //////////////////////////////////////// if (!get_global_simple_avionics ()) { if (damage.head_up_display) { if (!ka50_damage.head_up_display) { activate_ka50_master_caution (); ka50_damage.head_up_display = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_ka50_text_display_text ("HUD", "FAILURE", ""); play_client_server_warning_message (en, SPEECH_SYSTEM_HUD_FAILURE); } } } //////////////////////////////////////// if (!get_global_simple_avionics ()) { if (damage.helmet_mounted_sight) { if (!ka50_damage.helmet_mounted_sight) { activate_ka50_master_caution (); ka50_damage.helmet_mounted_sight = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_ka50_text_display_text ("HMS", "FAILURE", ""); play_client_server_warning_message (en, SPEECH_SYSTEM_HELMET_MOUNTED_SIGHT_FAILURE); if (target_acquisition_system == TARGET_ACQUISITION_SYSTEM_HMS) { select_ka50_target_acquisition_system (TARGET_ACQUISITION_SYSTEM_OFF); } } } } //////////////////////////////////////// if (damage.shkval_mfd) { if (!ka50_damage.shkval_mfd) { activate_ka50_master_caution (); ka50_damage.shkval_mfd = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_ka50_text_display_text ("SHKVAL", "FAILURE", ""); play_client_server_warning_message (en, SPEECH_SYSTEM_MFD_FAILURE); select_ka50_mfd_mode (KA50_MFD_MODE_DAMAGED, KA50_MFD_LOCATION_SHKVAL); } } //////////////////////////////////////// if (damage.abris_mfd) { if (!ka50_damage.abris_mfd) { activate_ka50_master_caution (); ka50_damage.abris_mfd = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_ka50_text_display_text ("ABRIS", "FAILURE", ""); play_client_server_warning_message (en, SPEECH_SYSTEM_MFD_FAILURE); select_ka50_mfd_mode (KA50_MFD_MODE_DAMAGED, KA50_MFD_LOCATION_ABRIS); } } //////////////////////////////////////// if (damage.night_vision_goggles) { if (!ka50_damage.night_vision_goggles) { activate_ka50_master_caution (); ka50_damage.night_vision_goggles = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_ka50_text_display_text ("NVG", "DAMAGED", ""); play_client_server_warning_message (en, SPEECH_SYSTEM_NIGHT_VISION_GOGGLES_FAILURE); night_vision_system_active = FALSE; } } //////////////////////////////////////// if (damage.gun_jammed) { if (!ka50_damage.gun_jammed) { activate_ka50_master_caution (); ka50_damage.gun_jammed = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_ka50_text_display_text ("GUN", "JAMMED", ""); play_client_server_warning_message (en, SPEECH_SYSTEM_GUN_JAMMED); } } //////////////////////////////////////// if (damage.lh_outer_pylon) { if (!ka50_damage.lh_outer_pylon) { activate_ka50_master_caution (); ka50_damage.lh_outer_pylon = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_ka50_text_display_text ("HARDPOINT", "DAMAGED", ""); play_client_server_warning_message (en, SPEECH_SYSTEM_HARDPOINT_DAMAGED); } } //////////////////////////////////////// if (damage.lh_inner_pylon) { if (!ka50_damage.lh_inner_pylon) { activate_ka50_master_caution (); ka50_damage.lh_inner_pylon = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_ka50_text_display_text ("HARDPOINT", "DAMAGED", ""); play_client_server_warning_message (en, SPEECH_SYSTEM_HARDPOINT_DAMAGED); } } //////////////////////////////////////// if (damage.rh_outer_pylon) { if (!ka50_damage.rh_outer_pylon) { activate_ka50_master_caution (); ka50_damage.rh_outer_pylon = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_ka50_text_display_text ("HARDPOINT", "DAMAGED", ""); play_client_server_warning_message (en, SPEECH_SYSTEM_HARDPOINT_DAMAGED); } } //////////////////////////////////////// if (damage.rh_inner_pylon) { if (!ka50_damage.rh_inner_pylon) { activate_ka50_master_caution (); ka50_damage.rh_inner_pylon = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_ka50_text_display_text ("HARDPOINT", "DAMAGED", ""); play_client_server_warning_message (en, SPEECH_SYSTEM_HARDPOINT_DAMAGED); } } //////////////////////////////////////// if (damage.lh_chaff_dispensers) { if (!ka50_damage.lh_chaff_dispensers) { activate_ka50_master_caution (); ka50_damage.lh_chaff_dispensers = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_ka50_text_display_text ("CHAFF", "DISPENSER", "DAMAGED"); play_client_server_warning_message (en, SPEECH_SYSTEM_CHAFF_DISPENSER_DAMAGED); } } //////////////////////////////////////// if (damage.rh_chaff_dispensers) { if (!ka50_damage.rh_chaff_dispensers) { activate_ka50_master_caution (); ka50_damage.rh_chaff_dispensers = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_ka50_text_display_text ("CHAFF", "DISPENSER", "DAMAGED"); play_client_server_warning_message (en, SPEECH_SYSTEM_CHAFF_DISPENSER_DAMAGED); } } //////////////////////////////////////// if (damage.lh_flare_dispensers) { if (!ka50_damage.lh_flare_dispensers) { activate_ka50_master_caution (); ka50_damage.lh_flare_dispensers = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_ka50_text_display_text ("FLARE", "DISPENSER", "DAMAGED"); play_client_server_warning_message (en, SPEECH_SYSTEM_FLARE_DISPENSER_DAMAGED); } } //////////////////////////////////////// if (damage.rh_flare_dispensers) { if (!ka50_damage.rh_flare_dispensers) { activate_ka50_master_caution (); ka50_damage.rh_flare_dispensers = TRUE; dynamics_damage_model (DYNAMICS_DAMAGE_AVIONICS, FALSE); set_ka50_text_display_text ("FLARE", "DISPENSER", "DAMAGED"); play_client_server_warning_message (en, SPEECH_SYSTEM_FLARE_DISPENSER_DAMAGED); } } //////////////////////////////////////// set_ka50_weapon_damage_status (); }