# Десант: нативная проверка цели

Уточнение этапа5.2, v0.23.1. Исходная поставка Atlants имеет отдельные проверки источника, целевого курсора, дальности и результата высадки. Их нельзя заменять одной проверкой «видимая суша».

## Поведение в игре

| Цель | Предпросмотр и команда | Возможный результат |
| --- | --- | --- |
| Видимая суша без чужих частей | Разрешены | Отряд высаживается и расходует движение |
| Видимая суша со своими частями | Разрешены | Можно высадиться в свой стек |
| Видимая чужая часть, включая нейтральную | Приказ запрещён | Состояние и PRNG не меняются |
| Видимая вода | Приказ запрещён | Состояние и PRNG не меняются |
| Невидимая или неизвестная клетка | Слепая высадка с предупреждением | Безопасная суша допускает высадку; скрытая вода/чужая часть уничтожают десант |
| Пустой чужой город | Курсор разрешён, предупреждение о потере | Десант теряется без обычного боя и захвата города |

Для невидимой клетки предпросмотр не читает реальную местность и скрытые части. Даже известная по памяти вода не делает её видимой: нативный курсор проверяет текущий бит видимости. Это особенность воспроизводимого EXE; модель не добавляет более строгого запрета по памяти. Реальный результат определяется после выполнения приказа.

Дальность берётся прямо из PRTO.operational_range. На родной геометрии расстояние равно половине суммы модулей разностей x/y после независимого замыкания; это совпадает с существующей stepDistance. Граница включительная. Ноль означает только исходную клетку, отрицательное значение — отсутствие ограничения в исходном курсоре. Запасной радиус500 других воздушных команд здесь не применяется. Редактор пока принимает неотрицательные значения operational_range.

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

## Доказательства и ограничения

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

| Группа | Случаев | Что действительно исполняется |
| --- | ---: | --- |
| Цель |64| Полный Unit_check_airdrop_target0x5c30b0 и полный поиск видимых частей0x52c7b0/0x52c2f0; свойства клетки, отношения, итераторы и внешний ответ видимости контролируются |
| Курсор и дальность |128| Полный0x4dc360 с таблицей переходов и исходные Map_get_x_dist/Map_get_y_dist, замыкание обеих осей, включительная граница и нулевой радиус |
| Диспетчер действия |4| Полный0x5c1630: наземный десант, воздушный вылет, прерывание; результат ПВО и отрисовка контролируются |
| Привязка радиуса |5| Ограниченная ветка команды0x4dae8f…0x4daec6 и полный общий установщик курсора0x4d8750; исходный operational_range передаётся без замены нуля |
| Расход при прерывании |6| Ограниченная ветка0x5c668a…0x5c669a после обнаружения городским ПВО: добавление одного обычного кванта движения |

Названия функций уточнены по закреплённым локальным материалам C3X (`reference-original/upgrade-sources`, commit117bb1699376754738f3ed5e04f4c27b42845919). Это помощь в навигации: заимствованные названия сами по себе не доказывают правило. Все выводы выше проверены на EXE пользователя. Исполняемый файл не менялся.

Полная внешняя реализация видимости/невидимости особых типов, все эффекты низкоуровневой высадки, полный верхний обработчик команды, последовательность Windows/анимаций и исходный PRNG не объявлены проверенными. Контролируемый ответ unitVisible=false в таблице относится к отфильтрованному входу проверки цели, а не к реализации полной невидимости в веб-движке.

## Сохранения и проверки

Схема40 и air-v4 сохранены: поля состояния не менялись. В `tests/fixtures/released-schema40-before-drop-targets.json` находится партия, созданная именно опубликованным0.23.0, с грузом, парашютистом и отдельными видимой/скрытой целями. Импорт не меняет ни одного поля. Запрет видимой цели, слепая потеря, успешная высадка, PRNG и продолжение после сохранения проверяются целиком.

`tests/airdrop-targets.test.mjs` и `tests/test_airdrop_target_evidence.py` проверяют нативные случаи, отсутствие утечек скрытой информации, сырой радиус, сохранения и расход движения. [Сценарий Chromium](data/browser-airdrop-targets-verification.json) использует реальные кнопки/карту, предупреждение, успешную/неуспешную высадку, экспорт и перезагрузку. [Итог выпуска](data/release-0231-validation.json).

Полный5.2 и весьMVP остаются в работе.
