# Обмен контактами и картами

Продолжение задачи 4.4. [Проверки](data/knowledge-exchange-verification.json) · [28 случаев](data/knowledge-exchange-test-checks.json) · [Браузер](data/browser-knowledge-trade-verification.json). Сборка `9d8d02f586185957` опубликована в основной игре после 664 автоматических проверок, DOM и локальных браузеров. Пройдены все **30 браузерных сценариев на основном сайте**, включая полную партию до победы. Все адреса/версии/ошибки отчётов и 73 опубликованных файла сверены. Полный MVP и контроль поведения Windows остаются открытыми.

## Исходные требования

| Возможность | Флаг TECH | Технология Atlants |
| --- | --- | --- |
| Карта мира и территории | `0x8000` | 87 «Картография» |
| Передача контакта | `0x10000` | 115 «Электричество» |

Порог определяется исходным BIQ и общей проверкой. Достаточно технологии у одного участника; последнее условие является рабочей интерпретацией и требует контрольного случая оригинала. Названия технологий обычного Conquests не подставляются вместо данных Atlants.

[Официальное руководство Complete, с. 127, 161, 164–165](https://cdn.akamai.steamstatic.com/steam/apps/3910/manuals/manual.pdf) различает карту мира, карту территории и связь с ещё неизвестной цивилизацией. Карта мира содержит изученные сведения о местности, улучшениях и городах; карта территории описывает границы. Контакты устанавливаются надолго, без необходимости встретить войска на карте. Точные различия выбранного EXE 1.21 проверяются отдельно. [Разметка исходных флагов в OpenCiv3](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/QueryCiv3/BiqSections/Tech.cs) служит дополнительной проверкой структуры, а не доказательством поведения оригинала.

## Исполнение

Обмен использует обычные `PROPOSE_TRADE` / `RESOLVE_TRADE`, две стороны, предварительную проверку и сохраняемое решение. Можно соединять карты/контакты с золотом, технологиями, ресурсами, будущими платежами и пактами. Нужны мир и существующий контакт между подписантами; посольство и торговый путь для этих разовых предметов не требуются. Последние условия ещё требуют Windows-контроля.

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

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

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

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

## Сохранения и ИИ

Схема 27 и `atlants-trade-v2` сохраняют новые предметы в существующих договорах. Настоящие опубликованные файлы схемы 26 с взаимной защитой, эмбарго, правом прохода, отчётом, очередью и дорогой мигрируют только версиями схемы/торговли. Отсутствующие старые метки наблюдения трактуются как 0, прежняя память не пересоздаётся.

ИИ принимает предложения через общую проверку, может покупать новые контакты и обмениваться картами. Оценки 30 золота за контакт, 40 за карту мира и 20 за территорию — явная собственная начальная политика, не восстановленная формула Firaxis. Повторные предложения карт одному партнёру ограничены десятью ходами. ИИ не получает координаты чужого мира из списка предметов переговоров.

## Проверка и остаток

Первоначальные 22 проверки нового обмена и 126 совместных проверок дипломатии прошли. Дополнительные случаи увеличивают отдельный набор до 28; два новых случая уточняют приоритет границы в том же ходу. Итоговые **634 JavaScript и 30 Python (664 автоматические проверки)** прошли; отдельно DOM и локальные браузеры. В первых подготовленных случаях исправлены обновление ресурса текущей видимостью отправителя и ожидание паузы для конкретного партнёра. Проверки не ослаблялись. Ошибки запуска `node --test` в ограниченном окружении отделяются от результатов самого движка.

Браузерная проверка, DOM и 30 Python пройдены; после последнего уточнения будут повторены затронутые проверки. Измерение 40 000 клеток и 1 000 запомненных городов: 290–738 мс в двух прогонах и около 30 МиБ прироста heap при ограничении CPU 35%; это тест передачи, не время полного хода. [Замер](data/knowledge-exchange-performance.json). Итоговый общий набор и публикация проверены. Контрольный ход Windows остаётся открытым. Другие предметы дипломатии, пересмотр договоров, полный шпионаж, глобальная репутация и рубежи 4–5 продолжаются отдельно.


[Случаи для Windows-оригинала](knowledge-exchange-control-cases.md) · [Переговоры](data/knowledge-trade-negotiation.png) · [Карта мира](data/knowledge-world-map.png) · [Карта территории](data/knowledge-territory-map.png).


Первый общий прогон выявил устаревшее ожидание `trade-v1` в проверке схемы 14. Оно заменено на текущую константу, при сохранении сверок карты, работы, случайности и истории. Первая браузерная попытка исправлена на порядок предметов, который формирует UI; строгое сравнение полного состояния сохранено. Ошибка приоритета границы одного хода сначала воспроизведена отдельным случаем, затем исправлена. После исправлений полный набор прошёл; журналы неудач и промежуточных прогонов сохранены в отчёте.
