# Морские действия и перевозка войск — v0.14.0

Продолжение пункта 5.1 плана. Подключены обычные корабли и сухопутные пассажиры; весь морской раздел пока не завершён. Правила и сохранения используют `naval-transport-v1`, собственная схема — 32. Оригинальные Windows SAV этой схемой не читаются.

## Что работает

- Производство 47 обычных морских типов из 53 записей Atlants при выполнении общих требований цивилизации, технологии, ресурсов и прибрежного города. Наличие записи в каталоге не делает её доступной каждой цивилизации. Добавлена Верфь (BLDG 93), включая её условие морской модернизации.
- Движение по воде и заход в свой город-порт. Морская стоимость клетки, игнорирование стоимости отдельных типов и All Terrain As Roads читаются из профиля. Морские клетки не получают сухопутных дорожных бонусов.
- Загрузка собственного сухопутного юнита, вместимость, ограничения Only Foot и запрет вложенных транспортов. Посадка возможна в одном городе/клетке и с соседнего берега. Движение на водную клетку со своим подходящим транспортом также выполняет посадку.
- Пассажиры следуют за кораблём и сохраняются при экспорте/загрузке. Их нельзя независимо обнаружить в чужом стеке или использовать как защитников морского боя. Высадка требует допустимого берега и движения пассажира; атака занятого вражеского берега требует Amphibious.
- Корабль открывает окно «Транспорт» кнопкой или L: состав, занятые места, доступные пассажиры и клетки высадки. Это рабочий интерфейс первого среза, ещё не точная копия всех оригинальных морских приказов.
- Базовый морской бой, совместное перемещение груза, потеря пассажиров с кораблём. При захвате вражеского портового города сухопутной частью находящиеся там вражеские корабли уничтожаются вместе с грузом. Роспуск и банкротство не оставляют пассажиров с несуществующим родителем.
- Безопасность Sea/Ocean зависит от исходных флагов типа, технологий 0x2000/0x4000, безопасного моря от зданий и морской черты цивилизации. Проверка опасной стоянки использует сохраняемый PRNG; вероятность гибели 1/2, у морской цивилизации 1/4. Предпросмотр маршрута предупреждает об известных опасных остановках, не раскрывая неизвестные клетки. ИИ избегает известных опасных стоянок.
- Простой ИИ строит первые разведывательные суда, выбирает подходящий транспорт, перевозит поселенца на известный отдельный остров и основывает город общей командой. Он использует своё представление карты, а не скрытую географию.

В Atlants галера имеет признак Wheeled: запрет Ocean из таблицы местности продолжает действовать даже после безопасной океанской навигации. Транспорт имеет базовое движение 6 и All Terrain As Roads: при внутреннем коэффициенте дороги 2 это даёт 12 обычных морских клеток. Эти свойства нельзя заменять параметрами стандартного Conquests. Вместимость также читается из Atlants: галера 2, каравелла 3, галеон 4, транспорт 8.

## Доказательства и пределы сверки

[Отчёт исходного кода](data/naval-native-evidence.json) фиксирует SHA-256 предоставленного `Civ3Conquests.exe`, 13 проверенных последовательностей инструкций и все 53 исходные морские записи. Проверены условия транспорта, сохранение ссылки родителя, индексы Only Foot/Foot и ветви риска Sea/Ocean с масками технологий и морской чертой. Сопоставление адресов опирается на [таблицу функций C3X](https://raw.githubusercontent.com/maxpetul/C3X/master/civ_prog_objects.csv) и [структуры Civ3Conquests](https://raw.githubusercontent.com/Antal1987/C3CPatchFramework/master/Info/Civ3Conquests.h); сами байты проверяются в предоставленном EXE скриптом `scripts/analyze-naval.py` и Python-тестом.

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

## Оригинальные ресурсы

Для поддерживаемых кораблей подключены исходные Default/Run/Attack/Death/Fortify через имеющиеся привязки INI и декодирование FLC. 215 морских записей анимаций; общие манифесты содержат 1 238 изображений/атласов и 814 WAV. Исходные кадры не перерисованы. Экспорт повторяется `scripts/prepare-naval-media.py`; общие палитры и восстановление национальных цветов сохраняются.

[Браузерный отчёт](data/browser-naval-verification.json) проверяет действительную загрузку кадров галеры и отсутствие ошибок изображений. В контрольной партии после перезагрузки: около 3,25 МиБ кадров юнитов при лимите 64 МиБ и около 51,5 МиБ прочих изображений. Это учёт декодированных изображений нашего кеша; он не измеряет всю память браузера или GPU. Музыка и эффекты отдельно проверяются своими сценариями.

[Посадка в порту](data/naval-loading-in-port.png) · [Город после высадки](data/naval-colony-after-landing.png).

## Проверки

17 тестов морского ядра входят в общий прогон 803 JavaScript-проверок в 65 отдельных модулях. Они проверяют домены и стоимость, вместимость и владельца, Foot, амфибийную атаку, сокрытие груза, уничтожение вместе с кораблём, воспроизводимое затопление, лечение, общую скорость, прибрежное производство и миграцию схемы 31 без изменения игровой истории.

[Сценарий колонизации ИИ](data/naval-ai-colonization.json): подготовленная карта двух островов, выданные галера и дополнительный поселенец, открытые технологии и видимость. За 24 команды ИИ садится, пересекает воду, высаживается и основывает город; после каждой команды сохранение загружается с точным совпадением. Это контроль механики и связности ИИ, а не доказательство такой же стратегии со стандартного старта.

Настоящий браузер проверяет человеческую посадку двух частей, морской маршрут после перезагрузки, прибытие груза, высадку и основание заморского города. Отдельно проходит прежняя полная небольшая партия до победы с экспортом и продолжением. Итоги локального/публичного прогонов и байтовой сверки: [отчёт выпуска](data/release-0140-validation.json).

## Что осталось в 5.1

В v0.15.0 подключён [активный обстрел](bombardment-model.md). Остаются точные модификаторы и отступление, невидимость и скрытая национальность, специальный груз авианосцев/ракетных подлодок, армии, иностранные порты и исключения пресных вод. Морские торговые связи ещё не добавлены к дорожной ресурсной сети. Начальное размещение груза в редакторе и стратегические десанты/эскорты ИИ также не завершены. Оставшиеся шесть специальных типов не включены в обычное производство до реализации их поведения. Воздушные действия — следующий отдельный блок плана. Полная совместимость с оригиналом и весь MVP остаются в работе.
