Полевые аэродромы — v0.22.0, эвакуация v0.22.3
Продолжение этапа5.2: строительство аэродрома, базирование самолётов, переброска между полевыми базами и городскими аэропортами, первоначальный ИИ, редактор карт и сохранения. Полный этап5.2 и MVP остаются в работе. Подготовленный эталон отдельно описывает исходные функции и пределы доказательства.
Работа рабочего
У подходящего рабочего появилась отдельная исходная кнопка «Построить аэродром» и сочетание Ctrl-Shift-A. В общем списке работ есть та же команда. Подсказка показывает срок и прогресс, а также предупреждает о расходовании рабочего. Перед началом открывается отменяемое подтверждение; отказ не меняет партию.
Исполняется обычный START_WORK с TFRM9, а не мгновенная установка базы. Требуются флаг действия типа, положительный остаток движения, технология119, разрешение местности Allow_Airfields и прочие требования фактической записи TFRM. Чужая территория запрещена даже при праве прохода. В городе и поверх существующего аэродрома строительство недоступно.
Работа использует общую величину TFRM, поправку местности и индивидуальный workerRate. Рабочие на одном задании складывают вклад. При достижении порога расходуется один рабочий — тот, чей вклад пересекает требуемую величину в порядке обработки группы; у оставшихся задание завершается. Шахта, орошение, крепость/баррикада и заменяемые полевые сооружения снимаются; дороги и железная дорога сохраняются. Запрет строить шахту после уже готового аэродрома по аналогии не добавлен: такие последовательности сохраняются и загружаются.
Точный исходный календарь первого начисления, кооперации и обхода групп ещё требует проверки полной Windows-фазы. Собственные расчёты, продолжение сохранения и фактическое завершение обычным ходом проверяются отдельно.
Базирование и воздушная переброска
REBASE принимает свой аэродром наряду с городом и подходящим авианосцем. Вместимость полевой базы не ограничена. Самолёт не превращается в груз транспорта; обычные ограничения дальности и расхода движения сохраняются.
AIRLIFT использует общий приказ, кнопку и T. Можно перелетать из действующего городского аэропорта на свой аэродром, обратно и между аэродромами. Каждая база имеет один исходящий слот; приём не расходует этот слот и возможен даже после его использования. Приказ расходует всё оставшееся движение части. Отправочный слот аэродрома хранится отдельно от городского и сбрасывается в настоящий следующий ход владельца.
ПКМ по клетке показывает владельца аэродрома и, для своей базы, «отправка доступна» или «отправка использована». Чужой отправочный счётчик не передаётся в представлении игрока. База открывает свою клетку и соседнюю область; изображение присутствует также в превью контекстного меню. Сама возможность базирования или переброски не соединяет ресурсы: воздушная торговля остаётся отдельным городским эффектом.
Владение и разрушение
Наземная часть на войне захватывает базу при входе на её клетку. Слот отправки при передаче не пополняется. Если новый владелец не знает требуемую технологию, аэродром разрушается. При смене принадлежности территории применяется та же проверка; переход клетки в нейтральное состояние сам по себе не назначает другого владельца аэродрома. Захват внутри неизменившихся чужих границ не отменяется следующей обычной командой.
Построение крепости/баррикады на месте базы и основание города удаляют данные аэродрома. Пустой аэродром добавлен к целям обстрела; после разрушения его метаданные также удаляются. Самолёты в аэродроме не становятся обычной целью артиллерии или воздушной бомбардировки, и база не разрушается из-под них; наземные защитники сохраняют свои обычные проверки.
С v0.22.3 культурная передача сначала эвакуирует воздушные части в ближайший город прежнего владельца аэродрома. Аэропорт, дальность перебазирования и положительный остаток движения для этого не требуются. Если такого города нет, части удаляются. Наземные и морские части не эвакуируются; наземный захват по-прежнему использует общий захват/уничтожение воздушных частей на занятой клетке.
Выбор города использует ту же культурную метрику, что подтверждена исходной функцией ближайшего города; учитываются замыкания карты. При равенстве остаётся первый слот города. В нашем движке это порядок создания в массиве городов; совпадение повторно используемых оригинальных ID городов после уничтожения отдельно не доказано. Сам исходный участок проверяет домен и координаты каждой части, без отдельного фильтра владельца самолёта.
Перенос расходует одно обычное очко движения — RULE.road_movement_factor внутренних единиц; остаток в нашем состоянии ограничен нулём. HP, PRNG и приказ дежурства сохраняются. Культурная передача разрешается в межходовом расчёте до начала следующего хода: прежний владелец не должен успеть обнулить отправочный слот потерянной базы. После этого слот сбрасывается только в действительный ход её текущего владельца. Для игрока добавлено уведомление об эвакуации или потере части.
Эталон airfield-evacuation-native-evidence.json содержит140 исполнений исходных инструкций:96 полных поисков ближайшего города,32 исполнения ограниченной ветки аэродрома и12 полных процедур переноса с контролируемыми нижележащими обновлением координат/удалением. Пять диапазонов сверяются с EXE. Полная Windows-фаза, внешний обход изменения территории и все побочные эффекты низкоуровневых помощников этим не объявляются проверенными.
Исходная графика и ИИ
Конвертированы пять ресурсов: два рисунка аэродрома128×64, два фрагмента атласа теней и маленькая пиктограмма Civilopedia. Основные изображения — точные вырезки исходного PCX без перерисовки или масштабирования. Восьми исполнениями полной исходной функции0x4c4700 подтверждён выбор рисунка по эпохе наблюдателя: для четырёх эпох индексы0,0,0,1. Источники/хеши: airfield-media.json, код/результаты функции: airfield-renderer-evidence.json. Тени декодируются принятой в проекте четырёхбитной альфа-шкалой; точное Windows-смешивание отдельно не подтверждено.
Кнопка использует ячейку33 Conquests NormButtons, а не похожую ячейку PTW. Браузерная проверка обнаружила пропуск новых типов картинок в загрузке карты; список загрузки исправлен, рисунок проверяется на главной карте и в контекстном превью.
Первоначальный ИИ может построить базу на известном собственном фронтире при наличии авиации и нескольких рабочих, если рядом нет своей базы и клетка не обрабатывается городом. Переброска и выбор базы боевых самолётов учитывают известные свои аэродромы. Это политика нашего ИИ, не заявление совпадения со стратегией оригинала.
Карты, сохранения и проверки
Редактор предлагает «Аэродром» с выбранным владельцем стороны. Рисование и отмена восстанавливают метаданные вместе с клеткой. Копирование текущей карты переносит владельца базы, но не использованный слот партии. Проверка проекта отвергает неизвестного владельца, запрещённую местность, конфликт с городом/крепостью и лишние поля. При запуске сценария база сохраняется.
Схема39 добавляет необязательный tile.airfield с ownerId и необязательным boolean airliftUsed. Сохранение опубликованной схемы38 переносится с изменением только version. В качестве исходника использован подлинный файл, восстановленный неизменённым опубликованным движком0.21.0 из предыдущего сохранения после переброски. Старые мир, аэропорт, части, PRNG и ресурсная модель не переписываются. Неверный владелец, тип счётчика, несовместимая клетка и раздельно оставленные флаг/метаданные отвергаются загрузчиком.
Тринадцать проверок ядра включают сравнение с336 нативными размещениями, обычное завершение хода, совместных рабочих, неограниченное базирование, независимые слоты, захват, замену улучшений, фильтрацию чужих данных, миграцию, обстрел, ИИ и редактор/сценарий. Браузер проходит реальное подтверждение и отмену, Ctrl-Shift-A, полный ход ИИ, строительство, перебазирование, аэропорт→аэродром→аэропорт, контекстный статус, изображения, точный экспорт и перезагрузку. Каждый игровой результат сравнивается с общей командой ядра.
Общий итог выпуска фиксируется после полного прогона и публикации в release-0220-validation.json. Исходные370 случаев и7 сигнатур остаются отдельным эталоном; полная Windows-партия и все оставшиеся воздушные системы ими не подменяются.
Для v0.22.3 добавлены шесть проверок ядра, настоящий файл схемы39 из опубликованной0.22.2 и отдельный браузерный сценарий расширения границ ИИ. Сохранение загружается без изменения формата; его следующий ход эвакуирует часть, сохраняет использованный слот, а экспорт и перезагрузка точно продолжают результат. Браузерная проверка · Итог выпуска.