# Взаимная защита: обязательные контрольные случаи

Подготовлено 27.10.2026 для следующей части 4.4. **Наземная модель пакта опубликована: [реализация и ограничения](mutual-protection-model.md). Оригинальные контрольные случаи ниже остаются отдельными от тестов веб-движка.** Это реестр проверок исходного поведения перед реализацией, а не отчёт о готовой механике. Эмбарго разрабатывается отдельным текущим изменением.

Измеренный профиль Atlants: флаг TECH **0x100**, **TECH130 «Национализм»**. Civilopedia установленной поставки также связывает договор о взаимопомощи с этой технологией. Технологические названия стандартной Civilization III не заменяют данные Atlants.

[Исходное руководство, с. 141](https://manuals.plus/m/0e4e661dbe03e34fd522a8657e1f6f14e231f153a7db35db7510f651a27ea36e) описывает взаимную военную помощь при нападении, посольство/мир, достаточность технологии у одной стороны, обязательство 20 ходов и отдельное урегулирование возникших войн после отмены. Отдельно указано нарушение при мире с противником, который всё ещё вторгается на территорию партнёра. Руководство не раскрывает всех событий, вызывающих реакцию.

[What triggers a Mutual Protection Pact?, №2/3](https://forums.civfanatics.com/threads/what-triggers-a-mutual-protection-pact-i-cant-get-them-to-work.210496/) различает объявление войны и нападение внутри территории участника; автор №3 уточняет первоначальный ответ №2. [MPPs, №5 и №7](https://forums.civfanatics.com/threads/mpps.97016/) содержит наблюдения о достаточности нахождения противника в границах и о бомбардировке, включая повторное наблюдение игрока в 2025 году. Следовательно, нельзя без проверки свести пакт только к событию `WAR_DECLARED` или только к успешному уничтожению юнита.

| Контрольный случай | Что требуется установить/сохранить |
|---|---|
| Объявление войны без войск в границах | Само объявление не равно нападению/вторжению; не начинать лишние войны |
| Войска уже в границах при объявлении | Проверить точную фазу вызова партнёра, класс учитываемых юнитов и наличие прибрежных исключений |
| Вход воюющего юнита на защищённую территорию | Проверить самостоятельный триггер входа, включая пустую клетку |
| Нападение на юнит вне его национальных границ | Национальности защитника недостаточно для территориального условия; уточнить нейтральную/третью территорию |
| Нападение внутри границ, закончившееся гибелью нападавшего | Партнёр должен оценивать само нападение, а не только оставшиеся на карте войска |
| Захват города меняет владельца клетки | Сохранить владельца и координаты цели до боя; не потерять причину реакции после пересчёта границ |
| Захват рабочего/поселенца | Установить, достаточно ли гражданской цели и как учитывается вторжение гражданским юнитом |
| Бомбардировка/налёт/десант/ядерное действие | Подключать соответствующие причины вместе с системами 5.1–5.4, без ложного объявления всей поддержки готовой |
| Цепочка нескольких взаимных пактов | Установить порядок реакций и разрыва несовместимых договоров; каждое объявление войны должно иметь фактического инициатора |
| Отдельный мир | Различать продолжающееся вторжение, завершённую угрозу и чистую отмену после обязательного срока |
| Загрузка между вторжением и реакцией | Сохранение причин/ожидающих решений должно давать тот же итог, без повторных объявлений и повторного начисления усталости |
| ИИ | Использовать общие причины/команды и доступные сведения; проверить исключение партнёра по пакту из обычного выбора цели войны |

Список — задачи проверки, а не доказанные ответы на все строки. Исполняемый эталон — **1.21.0.0**; адреса и исправления C3X для Conquests 1.22 нельзя применять к нему простым вычитанием константы. Сравнение собственного воспроизводимого движка с самим собой не подтверждает эти условия Windows-оригинала.

Дополнительный первичный разбор: [Flintlock о выборе войны ИИ](ai-war-plotting-reference.md). Он важен для предотвращения самовольного нападения на партнёра в обычном планировании войны; другие причины войны рассматриваются отдельно.
