# Правила Atlants и различия сценариев

## Основной профиль

`Conquests/conquests.biq` распакован из PKWare DCL в структуру `BICX`, версия формата 12.08. Все разделы пройдены по границам записей до конца файла. Извлечены имена, идентификаторы Civilopedia, зависимости, характеристики и часть флагов. Полные результаты находятся в [rules-main.json](data/rules-main.json); отдельные таблицы перечислены в [каталоге данных](data/README.md).

| Раздел | Записей | Что можно перенести |
| --- | --- | --- |
| TECH | 236 | Названия, эпохи, стоимость, координаты дерева, четыре слота предпосылок, флаги |
| PRTO | 413 | Атака, защита, движение, здоровье, бомбардировка, вместимость, требования, улучшение, флаги |
| BLDG | 244 | Стоимость, содержание, культура, требования, устаревание, флаги чудес и создаваемые юниты |
| GOOD | 52 | Тип ресурса, появление, исчезновение, технология, пища, щиты и коммерция |
| GOVT | 14 | Требования, содержание войск, военная полиция, наука, труд, недовольство и другие параметры |
| TERR | 14 | Базовый доход, движение, защита, улучшения и допустимые ресурсы |
| RACE | 32 | Цивилизации, начальные технологии, цвета, лидеры и признаки |
| CTZN | 22 | Жители и специалисты, требования и виды выработки |
| TFRM | 13 | Работы, требуемая технология, ресурсы и объём работы |
| DIFF | 9 | Бонусы компьютера, довольство, анархия и коэффициенты сложности |
| EXPR | 4 | Базовое здоровье и бонус отступления по опыту |
| WSIZ | 5 | Параметры размеров мира и коэффициенты исследований |

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

## Настройки общей игры

| Параметр RULE | Значение этого профиля |
| --- | --- |
| Пища на одного жителя за ход | 3 |
| Начальная казна | 10 |
| Длительность золотого века | 30 ходов |
| Минимальный и максимальный срок исследования | 1 и 50 ходов |
| Коэффициент движения по дорогам | 2 |
| Предельный размер малого и среднего города | 7 и 15 |
| Защита малых, средних и крупных городов | 0, 50 и 100 |
| Защитный бонус реки | 25 |
| Защитный бонус крепости | 75 |
| Защитный бонус укрепления | 25 |

Процентный смысл бонусов следует применять в соответствующей формуле движка. Само число из RULE не реализует формулу суммирования бонусов, округления, коррупции или обработки особых случаев.

Здоровье по EXPR: рекрут — **3**, солдат — **4**, ветеран — **5**, элита — **7**. К нему относится также индивидуальный `hp_bonus` типа юнита. Не следует заменять эти параметры стандартными величинами из справочника Conquests.

## Технологии и эпохи

В ERAS четыре обычные эпохи: древний мир, средние века, промышленная и современная. В них распределены соответственно **49, 51, 52 и 48 технологий**. Ещё **36 записей имеют `era = -1`**; среди них есть язык, служебные технологии, «своды» цивилизаций и недоступные обычному исследованию записи.

Надпись «Эпоха Атлантов» встречается в `labels.txt`, но сама по себе не доказывает наличие пятой эпохи в основном BIQ. Дерево нужно строить из связей TECH, а оформление и текстовую подпись выбирать отдельно.

В таблице найдено **293 заполненных слота предпосылок**. Выходов за допустимые индексы и циклов в проверенных зависимостях нет. Координаты X/Y пригодны как основа расположения узлов, но для браузера потребуется пересчитать область прокрутки, подписи и линии.

## Юниты и стоимости

| Тип | Атака | Защита | Движение | Стоимость в щитах |
| --- | --- | --- | --- | --- |
| Воин | 1 | 1 | 1 | 10 |
| Лучник | 2 | 1 | 1 | 20 |
| Копейщик | 1 | 3 | 1 | 30 |
| Ранний танк | 14 | 10 | 2 | 280 |
| Тяжёлый фрегат | 12 | 12 | 7 | 140 |

PRTO хранит стоимость юнита непосредственно. Стоимость здания в BLDG задаётся в других единицах: значение поля умножается на 10 при переносе в щиты. Например, у дворца `cost_raw = 10`, что даёт 100 щитов. Такое различие единиц подтверждается [реализацией импорта OpenCiv3](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/C7GameData/ImportCiv3.cs); для исходной игры остаётся полезна визуальная сверка в редакторе.

По домену записи PRTO распределены на 333 наземных, 53 морских и 27 воздушных. У 56 типов маска цивилизаций равна нулю, у 39 стоимость равна нулю; эти группы могут пересекаться. Поэтому фильтр «всё с параметрами атаки доступно для постройки» неверен. Проверенные ссылки улучшений корректны, циклов не найдено.

## Сценарии и сохранения

В поставке 33 BIQ, но только **17 уникальных файлов по SHA-256**. Основной профиль встречается отдельно, а 16 сценариев продублированы в двух каталогах.

- `_PA2_Sea Land` содержит собственную карту и таблицы того же объёма, что основная игра; равенство объёмов не означает тождественность всех параметров.
- `_PA2_Player 1` имеет 114 типов юнитов и 82 технологии.
- `_PA2_New rules` имеет 118 типов юнитов и 83 технологии.
- `_PA2_Units` имеет 66 типов юнитов и 82 технологии.
- Некоторые карты, например `_PA2_Africa`, не содержат собственных таблиц правил и должны рассматриваться с правилами соответствующего основного профиля.

Классификация всех файлов и количество клеток находятся в [scenario-index.json](data/scenario-index.json). Нельзя объединять объекты всех сценариев в один профиль автоматически.

В сохранении `Земля, Русские - 7.SAV`, указанном в настройках, обнаружен встроенный блок `BICQ`. После декодирования записанные таблицы совпадают с основным BIQ побайтово по разделам, кроме `GAME`. Это сильнее совпадения названий и количеств. Карта, города, дипломатия, очередь производства и остальное текущее состояние SAV пока не импортируются. Результат: [сверка сохранения](data/save-rules-comparison.json).

## Что таблицы не сообщают полностью

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