# Болезни местности и исходное поведение Atlants

Исследование 28.10.2026. Источник — предоставленный Conquests/Civ3Conquests.exe и conquests.biq, а не замена правил общим описанием Civilization III. Проверка Windows в исполнении пока не выполнена. [Машинный отчёт](data/disease-native-evidence.json) фиксирует хеши, 14 сигнатур кода и все 14 строк местности; воспроизведение: `python3 scripts/analyze-disease.py`.

## Данные и совместимость

Последние восемь байтов TERR сохранены как `terrain_flags_raw` (unsigned32) и `disease_strength` (signed32). Интерпретированы только бит2 Causes Disease и бит3 Cured by Sanitation; остальные биты сохраняются без придуманного значения. У поймы4, джунглей8 и болота9 установлены оба этих бита; сила во всех строках50.

Исходный EXE в0x4b4834/0x4b4859 проверяет **TECH8 «Математика»**. Объявленный флаг санитарии находится у TECH139, но эта проверка его не использует. Поэтому наша модель следует фактическому условию предоставленного EXE, даже если текст энциклопедии говорит о санитарии. Наличие флага и исполнение его смысла указаны отдельно в отчёте совместимости.

## Город

В риск входят центр и обрабатываемые горожанами клетки. Соседняя необрабатываемая клетка болезни не вызывает. Группы проверяются по ID местности. Для положительной силы рассчитывается диапазон `uint16(768-trunc(int32(strength<<9)/100))`; проверка включительная: `random(range)<=population`. Нулевой диапазон всё равно расходует случайное число и возвращает0. При населении1 город не погибает и новая активная болезнь не создаётся.

При начале болезни население уменьшается на1 и сохраняется эпизод. В следующих собственных хозяйственных фазах теряется не более одного жителя, затем эпизод продолжается при `random(128)<=оставшееся население`. Это **не фиксированные два хода**. Получение иммунитета или расчистка местности предотвращают новые случаи, но не обрывают уже начавшуюся болезнь. Эпизод содержит источник, начальный ход, количество фаз и общие потери; все поля проверяются при загрузке.

Потеря населения использует общую обработку национальностей/сопротивления. Распределение жителей пересчитывается до пищевого, финансового и научного расчётов; прогноз бюджета не заражает город и не расходует PRNG. Порядок среды: загрязнение, затем болезнь, затем пища/производство/финансы. Наш движок пока обрабатывает города пакетами, тогда как исходный EXE перемежает полную фазу по городам: совпадение его случайной последовательности **не заявлено**.

## Юнит

Независимая проверка: укреплённый юнит, `population_cost===0`, фактическая местность8 «Джунгли»; `random(1000)===0` уничтожает отряд. Сила болезни и технология иммунитета на эту ветку не влияют. Обычные рабочие/поселенцы с положительной стоимостью населения исключены; нельзя исключать вообще все рабочие роли, поскольку у рабов иной профиль.

## Интерфейс, сохранения и проверки

В городе показаны риск либо состояние эпизода; подсказки клеток объясняют источник и фактический иммунитет. Справка Математики объясняет её эффект в этой поставке. Собственные сохранения используют схему30, модель `native-terrain-disease-v1` и экономикуv18. Реальный файл опубликованной схемы29 с частично завершённой уборкой переносится только изменением метаданных; задания, мир и PRNG сохраняются.

Автоматические проверки: `tests/disease.test.mjs`. Проверяются извлечение, включительные границы, нулевой диапазон, знаковое переполнение, эпизод длиннее двух фаз, население1, приобретённый иммунитет, укреплённые юниты, неизменность прогнозов, строгая загрузка, реальный END_TURN и продолжение старого задания. Результат общего браузерного прогона фиксируется отдельно после выполнения.

## Дополнительные источники

- [Исходный формат BIX/BIQ, описание разработчиком извлечения](https://apolyton.net/forum/civilization-series/civilization-iii/122361-civilization-iii-bix-biq-file-format): структура TERR.
- [C3X, исходный код и перечень исправлений](https://github.com/maxpetul/C3X): известна жёсткая проверка индекса8. Настройка её исправления не подменяет выбранный нами немодифицированный EXE.
- [Руководство Civilization III, раздел Disease, печатная с.64](https://usermanual.wiki/Document/Civilization3Manual.1841378190.pdf): качественное описание болезней; оно не доказывает точную формулу Atlants.
- Предоставленные Civilopedia, Script и темы `terrain_page.htm`, `disaster_page.htm` оригинальной справки редактора: названия, сообщения и смысл полей. Их текстовые обещания отделены от статически подтверждённой ветки кода.


## Итог интеграционной проверки v0.9.0

Опубликовано28.10.2026 в04:32 МСК, код `bd5314f4a3a8d843`. Соответствующий реальный Chromium-сценарий прошёл локально и на основном HTTPS-сайте. Проверяется выполнение действий и состояние, а не только наличие DOM-элементов. [Текущий публичный отчёт](data/browser-disease-verification.json). [Сверка138 опубликованных файлов](data/published-090-byte-audit.json) не нашла расхождений; восемь статических файлов независимых сервисов сохранены. Совпадение поведения Windows-оригинала за пределами явно перечисленных свидетельств не заявляется.
