# Воздушный транспорт и десант

Продолжение этапа5.2: транспорт добавлен в v0.23.0, нативные ограничения цели уточнены в v0.23.1. В игре доступны транспортный самолёт310, вертолёт311 и приказ воздушного десанта для16 наземных типов, у которых он задан в Atlants. Полный этап5.2 и весь MVP продолжаются.

## Управление

- На одной клетке с воздушным транспортом откройте «Транспорт · L» и загрузите свои части. Вместимость самолёта —4, вертолёта —2. Требования Foot/OnlyAir проверяются по профилю; у этих двух типов Atlants флаг «только пехота» не установлен.
- Приказ «Перебазировать» перевозит загруженные части в свой город или аэродром. Дальность и расход движения самолёта проверяются общим расчётом. Движение пассажиров сохраняется.
- ПКМ по клетке транспорта показывает пассажиров с названием носителя. Можно выбрать пассажира и переместить его обычным приказом. На безопасной суше доступно «Выгрузить … здесь», в том числе после расходования движения носителя. Пассажир должен иметь собственное движение.
- «Воздушный десант · P» переводит карту в выбор цели; Escape отменяет приказ. Цель выбирается в рабочем радиусе. Видимая вода и видимые чужие части запрещают приказ. Невидимая клетка допускает слепую высадку с предупреждением: вода или скрытые части могут уничтожить десант. Пустой чужой город также приводит к потере, без обычного боя и бесплатного захвата.
- Наземный парашютист должен находиться в аэропорту или на аэродроме и не потратить движение. Прыжок расходует всё его движение.
- Вертолёт требует груз, высаживает все загруженные части и остаётся на исходной базе. Высаженные части расходуют движение; вертолёт — одну обычную единицу движения. ПВО и перехват могут сорвать вылет. Потеря вертолёта удаляет груз вместе с ним.

Проверка допустимости одинакова для команд игрока, предпросмотра, ИИ и загрузки сохранения. Настройки производства, технологии, ресурсы, принадлежность типа цивилизации и устаревание используют прежние общие требования. Добавление типа в каталог не означает выполнения всех его специальных способностей.

## Что проверено в исходных функциях

[Нативный отчёт](data/air-transport-native-evidence.json) содержит974 исполнения неизменённых инструкций поставленного EXE,6 диапазонов с байтами и SHA256:

| Проверка | Случаев | Граница доказательства |
| --- | ---: | --- |
| Обычная совместимость груза и вместимость |768| Домен, вместимость, число пассажиров, Foot, OnlyAir, OnlyFoot; армии и наследование улучшенного типа не включены |
| Полный общий допуск команды и источник десанта |192| Флаг приказа, движение, наземный/воздушный тип, город/аэропорт/аэродром, наличие груза |
| Наземный результат высадки |12| Суша/вода, владелец занятой цели, расход движения; низкоуровневое перемещение/удаление контролируются |
| Действие воздушного транспорта |2| Диспетчеризация пассажира, сохранение позиции носителя и расход одного очка; вложенный диспетчер и отрисовка контролируются |

Команда `0x10000020`, категория1/индекс5, соответствует ячейке12 исходного NormButtons. Используется исходная кнопка в трёх состояниях, позиция атласа `-128px -32px`.

В v0.23.0 выбор видимой суши был временной интерпретацией [руководства Firaxis](https://manuals.plus/m/0e4e661dbe03e34fd522a8657e1f6f14e231f153a7db35db7510f651a27ea36e). В v0.23.1 она заменена исполненной проверкой поставленного EXE: видимая вода/чужие части запрещены, слепая цель разрешена. Полные курсор, поиск видимых частей и расстояние с замыканием, ограниченная привязка operational_range и списание движения проверены207 случаями. Нулевой operational_range остаётся нулём; это отдельное правило десанта, без запасного радиуса500. [Точные границы доказательства](airdrop-target-native-rules.md) · [Нативные случаи](data/airdrop-target-native-evidence.json). Полный Windows и внешние помощники видимости ещё не объявлены проверенными.

## Исходная графика и нестандартные FLC

Подготовлены118 исходных анимационных записей для новых типов, затем восстановлены ещё2: всего120 записей. Добавлены18 производственных иконок. Аудио остаётся исходным PCM/WAV и AMB; весь комплект содержит995 клипов, загружаемых по необходимости.

Парашют использует исходную INI-анимацию `Build`, а не походку. Многие такие FLC содержат одну строку направлений. Метаданные фиксируют действительное число строк; вывод всегда выбирает нулевую строку для однонаправленного файла.

Два исключения конвертера устранены с явной диагностикой:

- `DesertParatrooperDrop.flc`: расширенный заголовок задаёт23 проигрываемых кадра и один кольцевой. Последний отличается от первого пятью индексированными пикселями. Сохраняются все23 объявленных кадра, кольцевой не проигрывается; исходные пиксели не исправляются. Для обычного заголовка без исходного холста неодинаковый лишний кадр по-прежнему отклоняется.
- `AirTransDeath.flc`: семь кадров содержат полный одиночный F1FA внутри одиночного F1FA. Разрешено одно строго ограниченное вложение с совпадающими размерами и нулевыми служебными байтами. Произвольные вложения и неправильные размеры отклоняются. Получены8 направлений по15 кадров.

Все143 восстановленных проигрываемых кадра двух файлов сравнены с PNG по каждому пикселю. Файлы оригинала не изменялись. У типов124 и342 INI не задаёт Build: вместо выдуманной парашютной графики используется исходная обычная поза. Точное смешивание теней Windows и полная синхронизация звуков остаются открытыми.

## ИИ, сохранения и проверка

Простая стратегия ИИ использует только свою отфильтрованную карту и известный фронт. Она умеет заказать воздушный транспорт, загрузить запасной отряд, перебазировать его ближе к фронту, выгрузить пассажиров и выполнить безопасный десант. На исходной базе остаётся защитник. Неподходящие видимые цели не создают цикл LOAD→UNLOAD. Полноценная стратегия воздушного снабжения и смешанных операций ещё не завершена.

Сохранение имеет схему40 и `native-air-missions-v4`. Подлинный опубликованный файл схемы39 переносится изменением только этих двух метаданных. Груз использует прежний `transportedBy`; посадка, перелёт, высадка, потери, PRNG и продолжение после экспорта/загрузки проверяются целиком.

Проверки: `tests/air-transport.test.mjs`, `tests/test_air_transport_evidence.py`, `tests/test_air_transport_media.py`, `tests/air-presentation.test.mjs`, `tests/unit-presentation.test.mjs`; [сценарий Chromium](data/browser-air-transport-verification.json). Итог первого выпуска — [release-0230-validation.json](data/release-0230-validation.json), уточнения целей — [release-0231-validation.json](data/release-0231-validation.json).

Не подтверждены: полная Windows-партия и совпадение PRNG с оригиналом; полная внешняя видимость/невидимость, обработка ввода и Windows; все низкоуровневые эффекты посадки/высадки; армии и наследуемая вместимость; специальные способности отдельных новых типов; полный календарь работ и повторное использование городских слотов; полная стратегия ИИ и все последующие пункты плана.
