# Призыв в Civilization III Atlants 2

Итерация рубежа 4.3. Кнопка «Призвать» находится в окне города рядом с ускорением. Перед приказом показываются тип, здоровье рекрута, потеря населения и использованный лимит; подтверждение перечисляет последствия. Используется основной сайт игры.

Это описание выполненной модели и её проверок. Контрольные ходы выбранного Windows EXE ещё не выполнены.

## Исходные данные и расхождения

| Свойство | Измеренная поставка | Использование |
| --- | --- | --- |
| Технология призыва | TECH.flags, бит 4; единственная запись — TECH 134 «Политика» | Общая проверка знания технологии; название Nationalism из базовой игры не используется |
| Доступные типы | PRTO.ability_flags_hex, байт 1, бит 1 | Полный каталог помеченных наземных типов, общие требования технологий, цивилизации и ресурсов текущего города |
| Минимальный размер | Civilopedia: население 8 или выше; RULE.town_max_size = 7 | Граница town_max_size + 1; связь с изменяемым параметром требует проверки на EXE |
| Цена | Civilopedia: один житель | Удаляется один житель национальности владельца, иностранные и сопротивляющиеся группы сохраняются |
| Опыт | EXPR 0 «Рекрут», base_hp = 3 | Здоровье = EXPR.base_hp + PRTO.hp_bonus; у Стрелка 88 получается 5, не 2 из обычной Civ III |
| Недовольство | RULE.draft_unhappiness = 20 | Отдельный накопленный срок, не смешанный со сроком принудительного труда или военной усталостью |

Дневные лимиты GOVT по идентификаторам 0–13: **0, 1, 0, 0, 1, 0, 1, 2, 1, 0, 1, 1, 1, 1**. Лимит относится к каждому городу. Анархия, Республика, Демократия, Теократия и Социализм запрещают призыв. При Фашизме таблица разрешает два призыва, хотя текст Civilopedia перечисляет его среди форм с одним. В расчёте используется BIQ; наблюдение EXE остаётся обязательным.

Справка также упоминает копейщика и пикинёра, но их названия не заменяют фактические флаги PRTO. [Текст, хеши и противоречия](data/drafting-sources.json).

Первичное внешнее свидетельство о немедленном движении — [проверка Chamnix в исходной Civ III](https://forums.civfanatics.com/threads/domestic-ministry-term-x.185284/page-3): автор прямо пишет, что проверил появление юнита и возможность двигаться в ход призыва. [Исследование флагов редактора](https://forums.civfanatics.com/threads/editor-rules-explained.210035/) подтверждает назначение Draft. Это не контроль нашей поставки Atlants. Семантика битов дополнительно сопоставлена с закреплёнными структурами QueryCiv3/OpenCiv3.

## Общая команда и жизненный цикл

`DRAFT_UNIT {playerId, params: {cityId}}` проходит обычные проверки владельца, хода, ожидающих решений и завершения партии. `draftQuote` используется интерфейсом, командой и ИИ. Недопустимый приказ возвращает `DRAFT_REQUIREMENTS` со структурированными причинами и сохраняет исходное состояние.

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

Текущий порядок выбора: защита по убыванию, нападение, бонус здоровья, затем идентификатор. Это **предварительный порядок**, а не доказанная функция EXE. В частности, Пулемётчик с защитой 8 предпочитается типам пехоты с защитой 6. Дубли записей с другими стратегиями ИИ сохраняются в исходном каталоге; названия не служат ключами выбора.

Исполнение сразу создаёт юнит в городе с собственным гражданством, EXPR 0, полным здоровьем рекрута и обычным запасом движения. Казармы не повышают его до ветерана. Казна, щиты, заказ и PRNG не расходуются. Население уменьшается на один, затем общий расчёт назначения жителей восстанавливает допустимые рабочие места и специалистов.

Лимит хранится в городе как `lastDraftTurn` и `draftsThisTurn`; повторная загрузка, переговоры о мире или изменение бюджета не обновляют его. Новый естественный ход разрешает использовать лимит снова. Счётчик привязан к сохранённому глобальному номеру хода; точное поведение смены владельца в этом же ходе требует оригинального контроля.

## Настроение и экономика

Каждый призыв добавляет 20 к `draftAngerTurns`. Число отрицательных пунктов настроения — `ceil(draftAngerTurns / 20)`: два последовательных призыва дают срок 40 и два пункта в начале. Срок уменьшается на один в конце собственного расчёта города; чужой ход и загрузка его не уменьшают.

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

Национальность конкретного рабочего места пока не хранится. Мы сохраняем правильные суммарные группы, но не утверждаем совпадение выбора конкретного портрета/клетки с оригиналом. Запрет призыва при сопротивлении пока также требует Windows-проверки; отдельный запрет из-за обычных беспорядков в эту итерацию не добавлен.

Простой ИИ рассматривает призыв при видимом враге в двух клетках и менее двух собственных защитниках в городе. Он проверяет последствия общим расчётом и избегает новых беспорядков. Это собственная базовая политика, не реконструкция стратегии ИИ Firaxis.

## Сохранения и представление

Схема 15, `atlants-drafting-v1`, экономика `city-economy-v10`. Миграция 14 → 15 добавляет нулевое призывное недовольство и неиспользованные лимиты: в прежнем движке этой механики не было. География, старые национальности, дороги, незаконченные работы, договоры, решения и PRNG сохраняются. Проверка использует настоящий файл схемы 14, полученный обычными приказами неизменённых модулей сборки `6e60a8d03def7c14`.

Из оригинала конвертированы восемь наборов для призывных типов двух фиксированных цивилизаций: 82, 85, 86, 88, 94, 95, 107, 109. Для каждого подготовлены default/run/attack1/death, восемь направлений, NTP 01 и 09. Это не включает обычное производство этих типов и полную реализацию всех их способностей. Весь подготовленный набор теперь содержит 471 графический ресурс, 126 атласов анимации, 252 цветовых варианта и 244 исходных WAV. Проверка реального Windows-воспроизведения и точных звуковых событий остаётся отдельной работой.

## Проверки и остающиеся вопросы

[18 проверок ядра](data/drafting-verification.json) проверяют исходные требования, границу населения 7/8, лимиты всех правительств, национальность, ресурсы, опыт/здоровье, немедленное движение, накопление/уменьшение срока, неизменность отклонённого приказа, миграцию, валидацию, ИИ и точное продолжение после загрузки.

[Настоящий Chromium](data/browser-drafting-verification.json) проверяет кнопку и причины запрета, отмену/подтверждение, сохранение иностранных групп, два призыва при Фашизме с перезагрузкой после каждого, запрет Республики и полный ход ИИ с призывом. Состояния сравниваются с ядром; это проверка нашего продукта, а не оригинального поведения.

R27/U20 в [реестре контрольных случаев](reference-cases.md): оригинальный размер города и изменённая граница Town, гражданство, сопротивление/беспорядки, приоритет типов и ничьи, движение, точный порядок недовольства, перенос срока/лимита при захвате, расхождение Civilopedia с BIQ. Рубеж 4.3 остаётся в работе.

[План](../development-plan.md) · [Ход разработки](../development-progress.md)
