@salmo:
Modified:
Code:
public override void OnAircraftTookOff(int missionNumber, string shortName, AiAircraft aircraft)
{
if (m_random.Next(1, 200 + 1) != 67) // 0.5% chance of takeoff failure
{
DoDamage(aircraft);
}
}
private void DoDamage(AiAircraft aircraft)
{ // Script that triggered an accidental damage to the player plane
// Author: FG28_Kodiak Modified by: Salmo
// Ref: http://forum.1cpublishing.eu/showthread.php?t=22184
if (aircraft.Player(0) == null) return; // If no human pilot leave
switch (m_random.Next(1, 7 + 1))
{
// ===================================
// ---- Engine(s) failures ----
// ===================================
case 1:
aircraft.hitNamed(part.NamedDamageTypes.Eng0TotalFailure);
//sendScreenMessageToPilot(PlayerPlane, "Engine Failure", null);
//GamePlay.gpHUDLogCenter("Engine Failure");
break;
case 2:
aircraft.hitNamed(part.NamedDamageTypes.Eng0OilSecondariesFire);
//sendScreenMessageToPilot(aircraft, "Oil is on fire");
GamePlay.gpHUDLogCenter("Oil is on fire");
break;
// ===================================
// ---- Hydrolicss & cables failures ----
// ===================================
case 3:
if (m_random.Next(1, 2) == 1)
{
aircraft.hitNamed(part.NamedDamageTypes.UndercarriageUpLockFailureL);
//sendScreenMessageToPilot(aircraft, "Undercarriage failure");
GamePlay.gpHUDLogCenter("Undercarriage failure");
}
else
{
aircraft.hitNamed(part.NamedDamageTypes.UndercarriageUpLockFailureR);
//sendScreenMessageToPilot(aircraft, "Undercarriage failure");
GamePlay.gpHUDLogCenter("Undercarriage failure");
}
break;
case 4:
aircraft.hitNamed(part.NamedDamageTypes.Eng0ThrottleControlBroken);
//sendScreenMessageToPilot(aircraft, "Broken throttle cable");
GamePlay.gpHUDLogCenter("Broken throttle cable");
break;
// ===================================
// ---- Flight surfaces failures ----
// ===================================
case 5:
aircraft.hitNamed(part.NamedDamageTypes.ControlsElevatorDisabled);
//sendScreenMessageToPilot(aircraft, "Elevator jammed");
GamePlay.gpHUDLogCenter("Elevator jammed");
break;
case 6:
aircraft.hitNamed(part.NamedDamageTypes.ControlsAileronsDisabled);
//sendScreenMessageToPilot(aircraft, "Ailerons jammed");
GamePlay.gpHUDLogCenter("Ailerons jammed");
break;
case 7:
aircraft.hitNamed(part.NamedDamageTypes.ControlsRudderDisabled);
//sendScreenMessageToPilot(aircraft, "Rudder jammed");
GamePlay.gpHUDLogCenter("Rudder jammed");
break;
default:
aircraft.hitNamed(part.NamedDamageTypes.Eng0TotalFailure);
//sendScreenMessageToPilot(aircraft, "Engine Failure");
GamePlay.gpHUDLogCenter("Engine Failure");
break;
}
}