if ((actor instanceof TypeBomber || actor instanceof TypeTransport) && AP.way.curr() != null && AP.way.curr().Action == 3 && (AP.way.curr().getTarget() == null || actor instanceof Scheme4)) {
double d = Loc.z - World.land().HQ(Loc.x, Loc.y);
if (d < 0.0)
d = 0.0;
if (((double) AP.getWayPointDistance() < ((double) getSpeed() * Math.sqrt(d * 0.2038699984550476))) && !bombsOut) {
if (CT.Weapons[3] != null && CT.Weapons[3][0] != null && CT.Weapons[3][0].countBullets() != 0 && !(CT.Weapons[3][0] instanceof BombGunPara))
Voice.airSpeaks((Aircraft) actor, 85, 1);
bombsOut = true;
AP.way.curr().Action = 0;
if (Group != null)
Group.dropBombs();
}
}
вот алгоритм стандартный.
По русски это значит:
проверить является ли самолет бомбардировщиком или транспортником и текущая точка существует и действие текущей точки атака и цель не выбрана на ней actor instanceof Scheme4 это не знаю что за тип.
double d = Loc.z - World.land().HQ(Loc.x, Loc.y);
if (d < 0.0)
d = 0.0;
это переменной d задает значение Loc с координатами текущик координаты самолета.
Следующая проверка есть ли бомбы у самолета и расчитать точку сброса.
(double) AP.getWayPointDistance() < ((double) getSpeed() * Math.sqrt(d * 0.2038699984550476)
это какраз снос бомб.
дальше если это все выполняется сбросить бомбы и сказать Бомбы сброшены, если есть группа вся группа сбрасывает бомбы.