# Активный обстрел артиллерией и кораблями — v0.15.0

Продолжение пункта 5.1. Активный приказ `BOMBARD` использует одну общую проверку для человека, интерфейса и ИИ. Собственная схема сохранений33 добавляет `bombardmentModel: native-bombardment-v1`; опубликованные сохранения32 мигрируют без изменения мира, пассажиров, заданий и PRNG. Морской раздел и весь MVP остаются в работе.

## Приказ и цели

Кнопка с исходным значком и B включаются по PRTO: действие Bombard, положительные сила, дальность и ROF, сухопутный/морской домен. У галеры Atlants сила4, дальность0: она поддерживает оборонительный бой и не получает активный обстрел. Подключены 11 наземных артиллерийских типов, включая отдельную лёгкую артиллерию213; национальные, технологические и ресурсные требования остаются общими.

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

Выстрел расходует одну исходную единицу движения, оставляет стрелка на месте и отмечает использованную атаку. Без Blitz повторная атака в этом ходу запрещена. Допустимы войска, городское население, физические здания и улучшения. Корабли перевозят груз как прежде; гибель судна от летального обстрела уничтожает и пассажиров. Сухопутный и морской летальные флаги независимы. Обычный нелетальный залп останавливается на1 HP и не переходит на следующую часть того же стека.

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

## Вероятность и исходный EXE

[Статический отчёт](data/bombardment-native-evidence.json) содержит 21 проверенную последовательность инструкций предоставленного EXE. [Арифметический отчёт](data/bombardment-native-arithmetic.json) содержит 1 130 исполнений трёх неизменённых участков машинного кода в Unicorn. Подставляются только параметры и регистры входа; код и исходные константы не заменяются. Полный Windows-сеанс не выполнялся.

Для обстрела клетки/городской цели сначала вычисляется целая защита:

`D = trunc(baseDefense × (100 + terrainBonus + cityBuildingBonus) / 100)`

Защита населения и зданий читается из RULE: в Atlants обе равны16. У обычных улучшений исходный базовый уровень16. Порог неудачи:

`threshold = clamp(1, 1023, trunc(int32(D × 1024) / int32(D + B)))`

Выстрел попадает, если целый случайный результат0…1023 не меньше порога. ROF задаёт число попыток, а не гарантированный урон. Для инфраструктуры и городских потерь попытки прекращаются после первого успеха; население уменьшается максимум на одного за залп и не опускается ниже1.

Для защиты юнита процентные множители сохраняются до деления: используется отношение `Dbase × (100 + bonus)` к `B × 100`, с теми же пределами порога. Потеря дробной части защиты до расчёта дала бы другое поведение. Для корабля в порту исходный EXE дополнительно использует `trunc((threshold + 1) × 0.5)`.

На экстремальных значениях сохранено исходное знаковое 32-битное переполнение числителя. Эти контрольные случаи не являются обычными параметрами Atlants. Полная исходная PRNG-последовательность не воспроизведена: детерминированность нашего движка проверяется отдельно.

Адреса функций сопоставлены с [таблицей C3X](https://raw.githubusercontent.com/maxpetul/C3X/master/civ_prog_objects.csv), поля и флаги — со [структурами Civ3Conquests](https://raw.githubusercontent.com/Antal1987/C3CPatchFramework/master/Info/Civ3Conquests.h). Модифицированные формулы C3X не подменяют оригинальные байты поставки.

## Последствия

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

Для инфраструктуры реализована найденная последовательность: рельсы снимаются отдельно; дорога/шахта/орошение снимаются группой; комплекс баррикады очищает соответствующие укрепления и наземную инфраструктуру. Загрязнение, ресурс и река при этом сохраняются. Авиационные/ракетные и специальные объекты требуют соответствующих следующих систем. Во всех исследованных наземных и морских PRTO текущего профиля `creates_craters=0`.

## Представление и ИИ

Исходный значок Bombard взят из PTW NormButtons (колонка4, строка1), включая hover/pressed. Наземной артиллерии добавлены исходные Default/Run/Attack/Death/Fortify; корабельные анимации используют ранее подключённые ресурсы. Цель отмечается отдельным исходным32px прицелом из Cursor.pcx; направляющие атласа не включены в вырезку. Общий манифест: 1 294 изображения/атласа и879 WAV. Проигрывание не меняет состояние или PRNG. Невидимый вражеский стрелок не анимируется; видимость проверяется перед загрузкой кадров/звука.

ИИ стреляет общей командой по наблюдаемым целям, заказывает артиллерийскую поддержку достаточной сухопутной армии, сохраняет начатый заказ и выходит на позицию по известной карте. Число рассматриваемых целей/позиций ограничено. Это начальная стратегия, а не воспроизведение оценки Firaxis или законченная тактика эскортов.

## Проверки и оставшееся

[Браузерный сценарий](data/browser-bombardment-verification.json) проверяет кнопку и B, выбор на карте, реальную загрузку исходных кадров, артиллерийский залп, фрегат, отсутствие активной кнопки у галеры, отказ в тумане, точный экспорт/перезагрузку и сохранённый груз прежней версии. [Предпросмотр](data/bombardment-target-preview.png) · [Фрегат после выстрела](data/bombardment-frigate-after-shot.png). [Итог выпуска](data/release-0150-validation.json).

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