|
|
|
#3 |
|
Местный
|
2 пилот.класс
public void setManeuverByTask() { clear_stack(); switch (get_task()) { case 2: if (Leader != null && Actor.isValid(Leader.actor) && !Leader.isReadyToReturn() && !Leader.isReadyToDie() && Leader.getSpeed() > 35.0F) set_maneuver(24); else set_task(3); break; case 3: set_maneuver(21); if (!AP.way.isLanding()) { wingman(true); if (Leader == null) { boolean bool = false; int i; float f; if (AP.way.Cur() < AP.way.size() - 1) { AP.way.next(); i = AP.way.curr().Action; bool = AP.way.curr().getTarget() != null; f = AP.getWayPointDistance(); AP.way.prev(); } else { i = AP.way.curr().Action; f = AP.getWayPointDistance(); } Pilot pilot_6_ = (Pilot) ((Aircraft) actor).FM; float f_7_ = AP.getWayPointDistance(); while (pilot_6_.Wingman != null) { pilot_6_ = (Pilot) pilot_6_.Wingman; pilot_6_.wingman(true); pilot_6_.AP.way.setCur(AP.way.Cur()); if (!pilot_6_.AP.way.isLanding() && pilot_6_.get_task() == 3) pilot_6_.set_task(2); } if (((Aircraft) actor).aircIndex() == 0 && Speak5minutes == 0 && i == 3 && (double) f < 30000.0) { Voice.speak5minutes((Aircraft) actor); Speak5minutes = 1; } } } break; case 4: if (get_maneuver() == 0) set_maneuver(21); if (danger == null) set_task(3); else { if (actor instanceof TypeFighter) { bombsOut = true; CT.dropFuelTanks(); } dist = (float) Loc.distance(danger.Loc); VDanger.sub(danger.Loc, Loc); OnMe.scale(-1.0, VDanger); Maneuver.tmpOr.setYPR(Or.getYaw(), 0.0F, 0.0F); Maneuver.tmpOr.transformInv(VDanger); diffV.sub(danger.Vwld, Vwld); Maneuver.tmpOr.transformInv(diffV); diffVLength = diffV.length(); Maneuver.tmpOr.setYPR(danger.Or.getYaw(), 0.0F, 0.0F); danger.Or.transformInv(OnMe); VDanger.normalize(); OnMe.normalize(); dE = (Energy - danger.Energy) * 0.1019F; Energed = danger.Energy > Energy; Faster = danger.getSpeed() > getSpeed(); Higher = danger.Loc.z > Loc.z; Near = dist < 300.0F; OnBack = VDanger.x < 0.0 && dist < 2000.0F; Visible = VDanger.dot(MainLook) > 0.0; Looks = OnMe.x > 0.0; VDanger.normalize(); if (OnBack && Near && danger instanceof TypeFighter && (actor instanceof TypeTransport || Wingman == null || killed(Wingman) || ((Pilot) Wingman).target != danger)) { if (isLeader()) { if ((actor instanceof TypeFighter || (actor instanceof TypeStormovik && Skill > 1 && AP.way.curr().Action == 0)) && Wingman != null && !killed(Wingman) && !((Pilot) Wingman).requestCoverFor(this)) { if (Wingman.Wingman != null && !killed(Wingman.Wingman)) ((Pilot) Wingman.Wingman) .requestCoverFor(this); else if (Skill >= 2) { Aircraft aircraft = War.getNearestFriendlyFighter(((Aircraft) actor), 8000.0F); if (aircraft != null && aircraft.FM instanceof Pilot) ((Pilot) aircraft.FM) .requestCoverFor(this); } } } else if (Skill >= 2) { Aircraft aircraft = War.getNearestFriendlyFighter((Aircraft) actor, 8000.0F); if (aircraft instanceof TypeFighter && aircraft.FM instanceof Pilot) ((Pilot) aircraft.FM).requestCoverFor(this); } } if (actor instanceof TypeFighter) fighterDefence(); else if (actor instanceof TypeStormovik) stormovikDefence(); else transportDefence(); } break; case 5: if (airClient != null && !killed(airClient)) { followOffset.set(100.0, 0.0, 20.0); set_maneuver(65); } else { airClient = null; if (target != null && !killed(target)) { set_task(6); set_maneuver(0); } else { set_task(3); set_maneuver(21); } } break; case 6: WeWereInAttack = true; if (actor instanceof TypeFighter) { bombsOut = true; CT.dropFuelTanks(); } if (target == null || !hasCourseWeaponBullets()) { if (AP.way.curr().Action == 3) { set_task(7); set_maneuver(0); } else { set_task(3); if (Leader != null) set_maneuver(24); else set_maneuver(21); } } else { int i = ((Aircraft) actor).aircIndex(); if (target.actor instanceof TypeBomber) attackBombers(); else if (target.actor instanceof TypeStormovik) attackStormoviks(); else { if (i == 0 || i == 2) set_maneuver(27); if (i == 1 || i == 3) { if (Leader != null && !killed(Leader)) { airClient = Leader; set_task(5); set_maneuver(0); } else set_maneuver(27); } } } break; case 7: if (!WeWereInGAttack) WeWereInGAttack = true; if (!Actor.isAlive(target_ground)) { set_task(2); set_maneuver(0); } else { boolean bool = true; if (CT.Weapons[0] != null && CT.Weapons[0][0] != null && CT.Weapons[0][0].bulletMassa() > 0.05F && CT.Weapons[0][0].countBullets() > 0) bool = false; if (bool && CT.getWeaponMass() < 15.0F || CT.getWeaponMass() < 1.0F) { Voice.speakEndOfAmmo((Aircraft) actor); set_task(2); set_maneuver(0); if (AP.way.curr().Action != 3) AP.way.next(); target_ground = null; } if (target_ground instanceof Prey && (((Prey) target_ground).HitbyMask() & 0x1) == 0) { float f = 0.0F; for (int i = 0; i < 4; i++) { if (CT.Weapons[i] != null && CT.Weapons[i][0] != null && CT.Weapons[i][0].countBullets() != 0 && CT.Weapons[i][0].bulletMassa() > f) f = CT.Weapons[i][0].bulletMassa(); } if (f < 0.08F || target_ground instanceof TgtShip && f < 0.55F) { set_task(2); set_maneuver(0); if (AP.way.curr().Action != 3) AP.way.next(); target_ground = null; } } if (CT.Weapons[3] != null && CT.Weapons[3][0] != null && CT.Weapons[3][0].countBullets() != 0) { if (CT.Weapons[3][0] instanceof TorpedoGun) { if (target_ground instanceof TgtShip) set_maneuver(51); else set_maneuver(43); } else if (CT.Weapons[3][0] instanceof BombGunPara) { AP.way.curr().setTarget(null); target_ground = null; set_maneuver(21); } else if (CT.Weapons[3][0].bulletMassa() < 10.0F) set_maneuver(52); else if (actor instanceof TypeDiveBomber && Alt > 1200.0F) set_maneuver(50); else set_maneuver(43); } else { if (target_ground instanceof BridgeSegment) { set_task(2); set_maneuver(0); if (AP.way.curr().Action != 3) AP.way.next(); target_ground = null; } if (actor instanceof TypeFighter || actor instanceof TypeStormovik) set_maneuver(43); else { set_task(2); set_maneuver(0); if (AP.way.curr().Action != 3) AP.way.next(); target_ground = null; } } } break; case 0: if (isReadyToDie()) set_maneuver(49); break; case 1: set_maneuver(45); break; } } |
|
|
|
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|