# Воздушная переброска через аэропорты

Продолжение этапа5.2 в v0.20.0: наземные части с исходным разрешением Airlift могут перебрасываться между аэропортами. Полный этап5.2 и MVP остаются в работе; аэродромы вне городов, транспортные самолёты, вертолётный и парашютный десант выполняются отдельно.

В v0.21.0 также подключён отдельный [эффект воздушной торговли ресурсами](air-trade-network.md). Он не расходует отправочный слот войск.

Для следующей части5.2 подготовлен отдельный [эталон полевых аэродромов](airfields-native-rules.md):370 машинных случаев и7 сигнатур. Полевые базы ещё не включены в веб-движок; их исходные отправочный слот и передача владельцу рассматриваются отдельно от городского аэропорта.

## Общие правила и управление

Человек и ИИ используют AIRLIFT и общую airliftQuote. Нужны исходный флаг PRTO.action_flags_hex byte4:bit2, оставшееся движение и действующий аэропорт отправления. Занятые работой и находящиеся на борту части не перебрасываются. Пункт назначения — свой другой город с действующим аэропортом. Расстояние между городами не ограничено, наземный путь не требуется.

Аэропорт определяется по действующему эффекту veteranAir, исходному флагу0x40000, с учётом устаревания, правительства и общих дарованных построек. Это отдельный флаг от airTrade: одна лишь возможность воздушной торговли не разрешает переброску. В поставке оба признака есть у здания9 «Аэропорт». Технологию строительства и цену определяют обычные данные здания.

Один аэропорт отправляет один отряд за свой ход. Приём не расходует отправочный слот: несколько аэропортов могут отправить части в один город, а получатель может отправить свой другой отряд. Переброшенная часть расходует всё оставшееся движение; частично двигавшаяся часть тоже может выполнить приказ. Состояние укрепления и предыдущий приказ снимаются, новая видимость рассчитывается обычным ядром.

Кнопка с исходным значком и клавиша T включают выбор назначения на карте; Escape отменяет выбор. Неверная клетка показывает причину и не выполняет приказ. После отправки выбирается следующий доступный юнит. В городе рядом со сведениями о сети показано, свободна ли отправка. Подсказка аэропорта объясняет отправочный лимит и приём. Между далёкими городами не воспроизводится наземная анимация бега через промежуточные клетки; точная исходная экранная/звуковая последовательность ещё требует Windows-контроля.

## Исходный EXE и границы доказательства

Использован предоставленный Civ3Conquests.exe, SHA256 c40583d707af7abd9b8568e2ed5a4f117f27a775dca617c8d7b873d76772dd6d. [24 исполнения исходных инструкций](data/airlift-native-evidence.json) проверяют полные Unit_can_perform_command и Unit_can_airlift для комбинаций расхода движения, флага приказа, наличия аэропорта и использованного слота. Внешние помощники карты и подсчёта построек возвращают контролируемые значения. Это не запуск Windows-партии и не исполнение исходного поиска маршрута к получателю.

Восемь сигнатур фиксируют маску аэропорта0x40000, городской бит использования4, установку бита только у отправителя, полный расход движения, маску поиска получателя и массив специальных кнопок. Полная исходная функция перечисления команд подтверждает0x10000004; специальный индекс2 соответствует ячейке9 Conquests/Art/interface/normbuttons.pcx. Для трёх состояний используются уже конвертированные оригинальные атласы, прямоугольник32,32,32,32; новые изображения не рисовались.

Отдельная нативная ветка аэродромов обнаружена, но не объявлена реализованной. Проверка оригинального поиска получателей, иностранного аэропорта отправления, смены владельца, специальных армий, исходных экранных фаз и всех исключений остаётся открытой. Предикат отправления в исследованном EXE сам по себе не проверяет владельца города; реализация также не добавляет такого запрета. Доступ части на чужую клетку остаётся отдельной общей механикой движения и соглашений.

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

Начальный ИИ использует только отфильтрованные сведения: известные воюющие части/города, свои города и свои резервы. Он отправляет свободный боевой отряд ближе к известному фронту, оставляя защитника в городе отправления. Изменение скрытого противника не меняет выбор. Строительство сети аэропортов и развитая стратегия воздушной логистики остаются дальнейшей работой.

Схема37, airModel native-air-missions-v3. Необязательный boolean city.airliftUsed хранит расход отправочного слота. Он сбрасывается только при настоящем начале хода владельца города. Переключение на человека для ответа на предложение ИИ его не сбрасывает. Значения другого типа отклоняются загрузчиком. Подлинный файл опубликованной схемы36 переносится с изменением только двух полей метаданных; мир, груз, исследования и PRNG сохраняются.

Двенадцать проверок ядра включают сопоставление с нативными комбинациями, ограничения целей/движения/владения, несколько отправлений/один приёмник, активные эффекты зданий, загрузку, дипломатическое прерывание и ИИ, включая общий цикл выбора команд. Браузер сначала строит аэропорт через обычное меню и расчёт города, затем использует настоящее окно, три исходных состояния кнопки, T/Escape, выбор клетки, статус аэропорта, повторную загрузку и следующий настоящий ход; каждый итог сравнивается с обычными командами ядра. [Итоговый отчёт выпуска](data/release-0200-validation.json) заполняется по завершении общего прогона.
