# Ранняя партия: наземный бой, захват и завоевание

Модель собственного движка: `land-rounds-v1`, схема сохранения 5. Область — фиксированная карта России и Рима, ранние наземные типы из выбранного BIQ. Числа профиля и программные проверки отделены от наблюдений Windows-оригинала: **контрольное воспроизведение в оригинале ещё не выполнено**.

## Что соединено в игровой цикл

Оба игрока используют обычные команды: основание города, производство, исследование, бюджет, дорога и ресурсная сеть, движение, укрепление, объявление войны, бой, выбор судьбы города и завершение хода. Начальное правительство — «Община», сложность ID 2, Россия и Рим, карта `reference-fixed-v2` 12×10, seed 42027, возрождение цивилизаций отключено. Это технический сценарий; его дополнительные стартовые военные юниты задаются сценарием, а не объявляются точной стандартной расстановкой оригинала.

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

## Правила и границы проверки

| Часть | Исполнение | Что ещё сверить в оригинале |
| --- | --- | --- |
| Раунд | Один проигравший теряет 1 HP; вероятность победы атакующего `A / (A + D)` | Округления внутренней силы и особые случаи |
| Защита | Базовая защита, местность, укрепление, город, сооружение, река; проценты берутся из BIQ | Сочетания и порядок бонусов, выбор лучшего защитника |
| Отступление | Для быстрого против медленного; проверка на переходе к 1 HP при HP противника больше 1 | Полные ограничения, выбор клетки, реальная случайная последовательность |
| Опыт | Вероятностное повышение, воинственная черта, повторная победа после неудавшегося повышения | Действие этих правил именно в данной поставке и прибавка HP |
| Оборонительная стрельба | Один доступный выстрел другого юнита в стеке, не ниже 1 HP атакующего | Самоподдержка, выбор стрелка и точная сила против целей |
| Порабощение | Флаг действия, тип результата из BIQ, один шанс после победы | Бит флага, вероятность и допустимые жертвы |
| Лечение | Полный ход без движения/атаки/работы: 2 HP в городе, 1 вне города; чужая территория исключена | Больницы, технологии, особые типы и граничные случаи |
| Город | Население 1 и нулевая культура — автоматическое разрушение; иначе обязательный выбор сохранить/разрушить | Точная проверка исторической культуры, добыча, сохранность сооружений |
| Сопротивление | Жители отделены от работающих; гарнизон участвует в подавлении | Полная матрица правительств/культуры, национальности отдельных жителей |
| Победа | Нет городов и юнитов основания — устранение; последний оставшийся побеждает | Дополнительные сценарные условия, возрождение и остальные победы |

Вероятность отступления в модели — `свой retreat_bonus / (чужой retreat_bonus + 50)`, по разбору исполняемого файла Antal1987. Это более конкретное свидетельство, чем описание «быстрый иногда отступает», но не заменяет проверки собственной поставки. Предпросмотр исходов учитывает HP, оборонительный выстрел и отступление; он не тратит случайные числа.

**Рабочие допущения:** выбор защитника максимизирует эффективную защиту × оставшиеся HP; обычные сооружения переживают захват с вероятностью 2/3; базовый шанс сопротивления иностранного жителя — 70%, подавления одной проверки — 40%. Последние два значения временные: матрица отношений культур и правительств ещё не применяется. Золото при захвате, лидеры, золотой век, полная культура и смена границ, мирные договоры, армии, морской/воздушный бой и большинство специальных способностей не реализованы.

Основатель ID 318 в Atlants имеет **защиту 1**, поэтому сражается. Его нельзя обрабатывать как беззащитного поселенца. Тип ID 0 имеет защиту 0 и при захвате превращается в рабочих. Порабощение создаёт тип 379 из поля профиля. Происхождение и признак пленного сохраняются отдельно; скорость учитывает силу типа, правительство и плен. Совместное действие силы 0,5 у типа 379 и модификатора пленного пока требует оригинального контрольного случая.

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

К исходным анимациям покоя добавлены оригинальные `attack1` и `death` ранних военных типов и основателя: все восемь направлений, длительности кадров и смещения холста остаются в манифесте. Конвертируется формат хранения и удаляются общие прозрачные поля; видимые исходные пиксели не перерисовываются. Боевые атласы загружаются по требованию. Их RGBA-память учитывается отдельно от начально загружаемого набора.

Показ боя пока сокращён: один цикл атаки и цикл гибели вместо отдельной анимации каждого случайного раунда. HP итогового состояния, повышение и пленные рассчитываются сразу; анимация лишь показывает готовый результат. Подключены две исходные NTP-палитры и боевые WAV/AMB; укреплённый юнит показывает конечную позу fortify, рабочий — дорожную анимацию. Полное чередование fortify/victory/run и точное воспроизведение последовательности оригинала остаются открытыми. [Проверочный набор и политика звука](media-verification.md).

На главном экране появились «Цивилизации», укрепление F, подтверждение войны перед атакой, обязательный выбор судьбы города и окно победы/поражения. Выбор судьбы города входит в сохранение; закрытие окна через Escape не пропускает решение. Завершённую партию можно экспортировать и осмотреть, но команды больше не начисляют доходы и не повторяют победу.

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

Схема 5 хранит войны, состояния укрепления/атаки/оборонительных выстрелов, происхождение пленных, историю последних 20 боёв, ожидающий выбор города и результат партии. В историю боя входят раунды и броски собственной PRNG. Опубликованные схемы 2–4 мигрируют; новые поля не перемещают старые юниты и не обнуляют незавершённую дорогу.

Сохранение во время показа боя уже содержит рассчитанный результат. После перезагрузки продолжается игра с этого состояния; анимация боя не проигрывается как новая команда. Совпадение состояний нашего движка с загрузкой и без неё **не означает совпадения PRNG оригинала**.

`tests/combat.test.mjs` проверяет отдельные правила и отказы. `tests/small-game.test.mjs` начинает новую партию без изменения правил, проводит обе стороны общей политикой через команды и сравнивает полное состояние после каждой вставки сохранения/загрузки. Это автоматическое прохождение, а не ручная приёмка человеком. Результат, хеш команд и хеш конечного состояния публикуются в [машинном отчёте](data/small-game-verification.json). `tests/game-screen.test.mjs` отдельно проверяет окна и обязательные решения; настоящий Chromium проверяет браузерные действия.

## Источники для контрольных случаев

- [Combat System Explained](https://forums.civfanatics.com/threads/combat-system-explained.7679/) — описание вероятностных раундов; ранняя версия игры, поэтому применимость к Conquests/Atlants проверяется отдельно.
- [Antal1987: разбор retreat bonus, сообщение 62](https://forums.civfanatics.com/threads/useful-patches-for-civ-3-conquests-v1-22.526285/page-4) — формула проверки отступления по исследованию Conquests EXE.
- [CivFanatics FAQ](https://civfanatics.com/civ3/faq/) — повышения опыта и воинственная черта.
- [Обсуждение автоматического разрушения](https://forums.civfanatics.com/threads/1-pop-cities-automatically-destroyed-when-captured.160966/) — зависимость от населения и культуры; отдельные сообщения расходятся, нужен контроль оригинала.
- [Civ III Info Center](https://civfanatics.com/civ3/infocenter/) — опубликованные сведения Firaxis о захвате поселенцев, национальности и судьбе города.
- [Sullla: Conquests Always War](https://sullla.com/Civ3/CQ/CQ_MTR3.html) — наблюдение сохранения цивилизации с поселенцем без города.
- [Оборонительная стрельба: противоречивые наблюдения](https://forums.civfanatics.com/threads/practical-implementation-of-landmines.254385/post-6256583) — неопределённость самоподдержки одиночного стрелка.
- [Gramphos: формат BIX/BIQ](https://apolyton.net/forum/civilization-series/civilization-iii/122361-civilization-iii-bix-biq-file-format) — поля типа результата порабощения и боевых характеристик; не является доказательством всех правил исполнения.

Дальнейшие наблюдения добавляются в [контрольные случаи](reference-cases.md); каждое допущение должно получить явный результат проверки или остаться помеченным ограничением совместимости.

Обновление0.13.0: совместное влияние силы типа и иностранного происхождения на труд теперь проверено изолированным исполнением исходной арифметики. Полный Windows-сеанс не заявляется; [модель скорости](worker-rate-model.md).
