# Подготовка боевых воздушных действий: исходные ветки и открытые проверки

Состояние на28.10.2026 после0.17.0. Это рабочие результаты исследования для продолжения5.2. Бомбардировка, перехват и городская/войсковая ПВО ещё не являются действующими командами веб-движка.

Исследован предоставленный `Conquests/Civ3Conquests.exe`, SHA-256 `c40583d707af7abd9b8568e2ed5a4f117f27a775dca617c8d7b873d76772dd6d`. Адреса ниже относятся к этой поставке. Имена структур сопоставлены с первичными исходниками C3X; изменения C3X нельзя автоматически считать правилами исходного EXE.

## Приказ воздушного превосходства

Ветка `0x4d9480` проверяет допустимость `0x30000004`, вызывает установку состояния15 (`0x4d9495–0x4d9499`), получает полное движение (`0x4d94a0`) и записывает его в счётчик использованного движения (`0x4d94a5`, поле юнита `+0x50`).

Поиск перехватчика далее проверяет состояние15, использованное движение и предел движения (`0x5c6b35–0x5c6b50`). Часть с исчерпанным движением пропускается. Следовательно, назначение приказа нельзя без проверки заменить немедленным доступным перехватом. Первичный код C3X содержит отдельное исправление `patch_intercept_lost_turn_bug`: функция `patch_Unit_get_move_points_after_set_to_intercept` сохраняет прежнее значение движения только при включённом исправлении, иначе возвращает предел.

Веб-движок сейчас сбрасывает движения на границе глобального хода. Для будущей реализации нужно отдельно проверить реальную границу хода владельца, дипломатические прерывания и сохранение состояния готовности. Просто добавить проверку `moves>0` после глобального сброса недостаточно для воспроизведения собственной очереди владельца. Точное Windows-поведение и исключения пока не проверены.

## Городская ПВО складывается

Функция `0x4c1270–0x4c130c` перебирает постройки, проверяет наличие/действие и устаревание, затем читает поле `+0xc4` структуры постройки (`0x4c12e4`) и **прибавляет** его к накопленной силе (`0x4c12eb`). Выбор максимальной из построек не соответствует этой ветке.

В текущем профиле BLDG44 «Flak Cannons» имеет `air_power=6`, BLDG88 «Батарея ПВО» —12. Аэропорт9 имеет нулевую силу ПВО и отдельные флаги обучения/воздушной торговли. Предстоящая общая проверка должна учитывать действующие предоставленные постройки, устаревание и владельца через существующие функции зданий.

Для городской ПВО ранее проверен знаменатель случайного испытания `planeDefense + airPower`. Если результат достигает защиты самолёта, самолёт уничтожается; выжившая ветка также возвращается через выход прерванной миссии. Порог обнаружения берётся из обычного либо stealth-параметра RULE. В этой поставке это80 и5. Полный порядок случайных вызовов и иммунитетов ещё требует контрольных случаев.

## Войсковая ПВО и истребители

Ранее исполненные арифметические блоки подтверждают вес выживания `D*(experienceId+1)*5`, знаменатель `weight+AA` и предельный выбор четырёх сильнейших зенитных частей. Поле опыта — абсолютное `Unit+0x44`; это не накопленный урон. Ветку сравнения результата, выбор участников и порядок при нескольких владельцах необходимо проверять отдельно.

Рабочий радиус истребителя делится на два с усечением и минимумом1 для положительного значения. При исходном нуле отдельная ветка оставляет нулевой радиус. После успешного перехвата `0x5c6e21` расходует движение и `0x5c6e24` вызывает смену состояния. Полная геометрия выбора и воздушный бой пока не исполнены в стенде.

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

## Следующие проверяемые результаты

1. Обычная бомбардировка и точечный удар: точные цели/категории повреждения, цена действия, исходные ограничения и отказ без изменения PRNG.
2. Отдельные сохраняемые приказы перехвата и их готовность на настоящем ходу владельца.
3. Городская ПВО, до четырёх зенитных частей и истребители: порядок испытаний, уничтожение/прерывание, общий воспроизводимый PRNG.
4. Производство только реально поддержанных типов через общие национальные, технологические и ресурсные требования.
5. Предпросмотр и ИИ по доступным игроку сведениям; исполнение может учитывать скрытую оборону, но подсказка не должна раскрывать её заранее.
6. Исходные кадры полёта/атаки и звук после расчёта. Скрытые чужие действия не проигрываются и не загружают анимационные ресурсы.
7. Сохранение посреди приказов, продолжение и полный небольшой игровой цикл до победы.

[Проверенные численные блоки](data/air-native-evidence.json) · [Точная привязка пяти кнопок](air-command-icons.md). Полная совместимость с Windows-оригиналом не заявляется.

## Реализация v0.18.0

Первоначальные записи выше сохраняются как история исследования. Подключённая реализация,732 дополнительных исполнения исходных инструкций, проверки и оставшиеся расхождения описаны в [air-combat-model.md](air-combat-model.md).
