Право прохода и военные союзы Atlants
Следующее расширение: торговое эмбарго Atlants, сборка 81b8a8ba758403e5; ниже сохранён отчёт предыдущего этапа.
Продолжение рубежа 4.4. Сборка baa9e4d530dfc654 опубликована на основной странице игры. Схема сохранений 24, экономика city-economy-v15, работы native-terrain-work-v5, соглашения atlants-agreements-v1. Остальные задачи MVP остаются в работе.
Как попробовать
- Встретьте другую цивилизацию, откройте «Письменность» и учредите посольство. Для соглашений достаточно нужной технологии у одной из сторон: в исходном Atlants право прохода даёт «Династии» (TECH30, бит 0x200), военный союз — «Политическая философия» (TECH101, бит 0x400).
- Откройте «Цивилизации → Предложить сделку». Право прохода — взаимный пункт; его можно предложить без золота и других предметов. Отказы объясняются рядом с пунктом. ИИ может принять или отклонить предложение.
- После принятия юниты обеих сторон получают преимущества чужих дорог и железных дорог. Обычный короткий щелчок лишь выбирает/осматривает клетку; движение задаётся через G, перетаскивание самого юнита, удержание на назначении или цифровой блок. Договор не разрешает вставать на чужие юниты и входить в чужие города.
- Рабочий может улучшать территорию партнёра. Технологии, способности и материалы проверяются для владельца рабочего; чужой ресурс не становится вашим от права прохода. Занятый рабочий сохраняет запрет ручного перемещения.
- Для военного союза выберите известную обоим третью цивилизацию. Хотя бы один участник уже должен воевать с ней. Можно добавить обычные предметы обмена, например плату за вступление в войну. Перед отправкой показаны новые объявления войны и нарушение действующего мирного договора, если оно возникает.
- Вкладка «Действующие договоры» показывает условия и оставшийся обязательный срок. Договор действует минимум 20 ходов, затем до отмены. Отмена союза сама по себе не заключает мир с общим противником. Отдельный мир прекращает союз; экран предупреждает об этом и о нарушении оставшегося обязательного срока.
!Предупреждение о вступлении союзника в войну
Общие правила и состояние
Право прохода и союз хранятся как взаимные условия обычной торговой сделки, вместе с разовым золотом, технологиями, ресурсами и платежами за ход. Один и тот же нормализатор, проверка допустимости и команды PROPOSE_TRADE, RESOLVE_TRADE, CANCEL_TRADE обслуживают интерфейс и ИИ. Взаимное условие записывается один раз; поддельные направления, повторения и неизвестные цели отвергаются. Ожидающее предложение сохраняется и возвращает ход отправителю после ответа.
Обычный расчёт движения и предпросмотр по известному миру используют одинаковое право прохода. Союзные дороги, железные дороги и территориальные остановки укреплений учитывают договор. Пакты посторонних сторон не дают прав игроку и не попадают в его представление мира.
Принятие военного союза исполняет обычную команду объявления войны для вступающей стороны и переносит разовый платёж атомарно. Если новый участник этим нарушает мир или прежнее право прохода, виновником записывается именно он, независимо от того, кто нажал «Принять». Отдельный мир разрывает весь торговый пакет и прекращает связанные будущие платежи/поставки; ранее переданное золото не возвращается. Второй союзник остаётся в состоянии войны. Уничтожение общей цели завершает союз без записи нарушения.
История отмечает ранний разрыв обязательства и использование права прохода для нападения изнутри территории партнёра, в том числе после 20 ходов. Это ограниченная модель истории и реакции ИИ; полная глобальная репутация Firaxis ещё не воспроизведена. ИИ принимает и предлагает соглашения через общие команды, но оценка выгоды — наша явная начальная эвристика.
Ресурсная сеть отдельно исправлена: известные дороги через мирную третью сторону соединяют собственные залежи и города без требования права прохода. Война прерывает такой маршрут. В сеть засчитываются только собственные раскрытые залежи и действующие поставки. Это не позволяет присваивать материалы партнёра. Морские и воздушные соединения ещё не подключены.
Если право прохода прекращено, недопустимое задание на чужой территории останавливается, сохраняя уже накопленный прогресс клетки. Юнит не телепортируется и автоматически не начинает войну. Требования покинуть территорию и высылка ещё не реализованы. Приоритет получателя щитов чужой вырубки, отдельные фазовые случаи и точный порядок оригинальных расчётов требуют контрольных случаев Windows.
Совместимость и проверки
| Направление | Проверено в веб-движке | Что ещё требуется |
|---|---|---|
| Правила | Исходные флаги технологий, посольство/мир, взаимность, 20 ходов, движение/работы, объявления войны, разрывы, выполнение цели | Точная оригинальная оценка ИИ, глобальная репутация, крайние случаи работ и фаз |
| Представление | Панель взаимных условий, предупреждения о войне/мире, причина завершения сделки, оригинальные растры карты и юнитов | Полный исходный дипломатический экран и оригинальные реакции/звуковые события |
| Управление | Явные приказы движения, выбор/отмена условий, общий ответ ИИ, блокировка занятого рабочего | Ручная сверка задержек и всех сочетаний с Windows-оригиналом |
| Данные | Сохранение соглашений и ожидающих решений; настоящая опубликованная схема 23 мигрирует с изменением только метаданных | Импорт состояния оригинального SAV остаётся отдельной задачей |
Пройдены 23 проверки новых соглашений, полный набор 555 JavaScript + 30 Python = 585 автоматических проверок, отдельно DOM и локальный Chromium. Все 26 сценариев Chromium прошли на основном сайте с первой попытки, включая полную партию до победы на 18-м ходу. Адреса, версии и ошибки всех отчётов сверены; 67 опубликованных файлов кода/интерфейса и исходный профиль совпадают с локальными. Итог доступен в машинном отчёте; браузерный сценарий содержит адрес, версию модулей и ошибки страницы/запросов. Наличие собственных тестов не означает проверку исполнения Windows-оригинала.
Первоначальные отказы подготовленных тестов выявили неверные предположения самих примеров: коэффициент дороги Atlants равен 2, шахте нужна TECH26, железной дороге — TECH121, а раскрытию угля дополнительно TECH143. Примеры исправлены по исходному профилю; проверки требований сохранены.
Подлинные сохранения предыдущей опубликованной сборки с посольством, оплаченным отчётом, дорогой, очередью и торговлей: активный договор, ожидающее предложение. Их исходный движок 23 и контрольные хеши сохранены отдельно; новые файлы не выдаются за старые. Карта, жители, войска, отчёты, работа, очередь и PRNG при миграции не перестраиваются. Полный перечень проверок соглашений.
Основания правил
- Руководство Civilization III, разделы Military Alliance и Right of Passage, с. 140: минимальный срок, действие дорог/железных дорог, отдельный мир и отмена союза без автоматического мира. Это исходное руководство; названия/доступность технологий в Atlants берутся из BIQ.
- How to make alliances?, сообщения I. Larkin №7/9 и проверка сохранений Optional №8/10: достаточно существующей войны у одной стороны. В обсуждении есть первоначальные противоположные предположения, позднее уточнённые участниками; они не приняты как окончательный результат. Исключения, упомянутые другими участниками, требуют отдельной проверки нашего EXE.
- Gonzo_for_civ, Peaceful War, раздел Workers: наблюдение возможности улучшать чужую землю при праве прохода. Статья относится к ранней версии 1.17f; её остальные советы и шпионские действия не переносятся автоматически на Conquests/Atlants.
- Civ3 FAQ на Apolyton: ограничения совместного размещения юнитов. Политика входа в город и занятую клетку сохраняет отдельную проверку движения/войны.
- Локальный эталон Atlants: BIQ
827be8b3f7aab140d2e702ecb6a8e4b2dc5c8c4324d0e2fcb2be497903723be9, EXE 1.21.0.0. Исходные таблицы и неизвестные поля не заменены стандартными значениями Conquests.
Следующие задачи 4.4: остальные пакты и предметы, требования ухода, шпионы/миссии, более полная репутация, морская/воздушная сеть. Параллельно сохраняются все незавершённые пункты 4.1–4.8, полный состав Atlants, BIQ и SAV из общего плана.