Десант: нативная проверка цели
Уточнение этапа5.2, v0.23.1. Исходная поставка Atlants имеет отдельные проверки источника, целевого курсора, дальности и результата высадки. Их нельзя заменять одной проверкой «видимая суша».
Поведение в игре
| Цель | Предпросмотр и команда | Возможный результат |
|---|---|---|
| Видимая суша без чужих частей | Разрешены | Отряд высаживается и расходует движение |
| Видимая суша со своими частями | Разрешены | Можно высадиться в свой стек |
| Видимая чужая часть, включая нейтральную | Приказ запрещён | Состояние и PRNG не меняются |
| Видимая вода | Приказ запрещён | Состояние и PRNG не меняются |
| Невидимая или неизвестная клетка | Слепая высадка с предупреждением | Безопасная суша допускает высадку; скрытая вода/чужая часть уничтожают десант |
| Пустой чужой город | Курсор разрешён, предупреждение о потере | Десант теряется без обычного боя и захвата города |
Для невидимой клетки предпросмотр не читает реальную местность и скрытые части. Даже известная по памяти вода не делает её видимой: нативный курсор проверяет текущий бит видимости. Это особенность воспроизводимого EXE; модель не добавляет более строгого запрета по памяти. Реальный результат определяется после выполнения приказа.
Дальность берётся прямо из PRTO.operational_range. На родной геометрии расстояние равно половине суммы модулей разностей x/y после независимого замыкания; это совпадает с существующей stepDistance. Граница включительная. Ноль означает только исходную клетку, отрицательное значение — отсутствие ограничения в исходном курсоре. Запасной радиус500 других воздушных команд здесь не применяется. Редактор пока принимает неотрицательные значения operational_range.
Проверка источника и движение из v0.23.0 сохраняются: наземному отряду нужны аэропорт/аэродром и весь запас движения; вертолёту нужен груз. Исходная ветка при прерванном городским ПВО вылете списывает одно обычное очко движения. Повторного списания после возврата диспетчера нет. Поведение нашего движка уже соответствовало этой ветке и дополнительно проверено на частях с несколькими очками движения.
Доказательства и ограничения
Нативный отчёт содержит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 использует реальные кнопки/карту, предупреждение, успешную/неуспешную высадку, экспорт и перезагрузку. Итог выпуска.
Полный5.2 и весьMVP остаются в работе.