# Шахты орошение и расчистка в Atlants 2

Итерация рубежа 4.5. Основной сайт получает шесть доступных заданий: дорога, шахта, орошение, вырубка леса, расчистка болот/джунглей и посадка леса. Существующая кнопка дороги остаётся; новая кнопка с исходным значком кирки открывает перечень работ с причинами запрета, прогрессом и сроком одного выбранного юнита. M — шахта, I — орошение, Shift-C — расчистка, Shift-F — посадка.

В новых партиях `reference-fixed-v4` размещены симметричные участки равнины, леса, джунглей и речные клетки около стартов. Это фиксированный демонстрационный мир, **не генератор карт**. Загрузка прежних партий сохраняет их географию.

## Данные выбранной поставки

| TFRM | Задание | Требуемая технология | Исходный объём работы |
| --- | --- | --- | --- |
| 3 | Дорога | Нет | 3 |
| 0 | Шахта | 26 Строительство | 6 |
| 1 | Орошение | 51 Севооборот | 6 |
| 6 | Вырубка леса | 30 Династии | 12 |
| 7 | Расчистка болот и джунглей | 121 Взрывчатка | 24 |
| 5 | Посадка леса | 112 Городское планирование | 16 |

Это измеренные таблицы BIQ; требования не заменяются значениями стандартной Conquests. Доступность юнита читается из PRTO.action_flags_hex, допустимость местности — из TERR. Шахта требует положительного mining_bonus, орошение — irrigation_bonus, дорога — road_bonus. TERR.worker_job выбирает посадку леса или соответствующую расчистку. Работа вне дороги запрещена в центре города; чужая территория, вода и непроходимая местность отсекаются.

**Луга Atlants нельзя покрыть шахтой**: mining_bonus = 0, и это прямо сказано в исходной Civilopedia. Равнина даёт +1 щит, холмы +2, горы +3. В исходной справке лес и джунгли перечислены среди мест для рабочего лагеря/шахты; их mining_bonus = 1. Текущая модель разрешает такой лагерь с сохранением растительности. Общие описания стандартной Civ III говорят об автоматическом удалении леса; выбранный EXE должен разрешить это различие.

В исходной справке орошение без соседней воды отнесено к «Паровому двигателю». Фактический TECH.flags, бит 1, стоит только у TECH 115 «Электричество». В движке действует флаг, текстовое расхождение сохранено. [Первичные тексты и хеши](data/terrain-work-sources.json).

## Вода и выработка

`hasFreshWater` используется и орошением, и проверкой роста города. Реки и соседние замкнутые водоёмы **до 20 клеток включительно** дают пресную воду; водоём из 21 клетки — уже нет. Исправлена прежняя граница из девяти клеток. [Уточнение порога в CivFanatics](https://forums.civfanatics.com/threads/harbor-at-a-lake-actually-it-is-a-lake.101975/).

Для нового орошения достаточно непосредственно доступной пресной воды, соседнего готового орошения или технологии с флагом Everywhere. Существующие хозяйственные улучшения не исчезают при удалении источника. Город на пригодной для орошения местности может передавать доступ соседним клеткам; точные ограничения такого проведения требуют Windows-контроля.

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

## Время работы и прерывания

Требуемый объём = `TFRM.work_required_raw × TERR.movement`. Вклад выбранного рабочего с0.13.0 = `max(1, trunc(PRTO.worker_strength × GOVT.worker_rate × промышленная черта × технология × происхождение))`; промежуточный float32 и порядок множителей проверены по EXE. [Подробная формула](worker-rate-model.md). Ранее лишний множитель 2 был удалён; это изменение не возвращает его. Например, шахта на равнине требует 6 единиц: обычный рабочий Общины вносит 1, Фашизма — 4. [Исследование исходных величин заданий](https://forums.civfanatics.com/threads/hi-how-many-turns-for-each-worker-action.80432/).

Рабочие одного игрока на одной клетке и задании складывают вклад в `tile.workProgress[playerId:jobId]`. Их собственные задания содержат тот же прогресс. Отмена и переключение сохраняют незавершённый вклад. Расчёт выполняется в существующей фазе работ перед городским урожаем. Скорость анимации и загрузка изображения на него не влияют.

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

## Растительность и щиты леса

Лес хранится отдельным overlayTerrainId поверх известной terrainId. Вырубка удаляет лес и оставляет реальную подстилающую равнину, луга или тундру. Если подстилающий слой неизвестен, команда явно отклоняется. Болото и джунгли после расчистки становятся лугами и не дают щитов. Посадка использует TERR.worker_job и удаляет шахту/орошение.

RULE.forest_shields = **20**. Первая вырубка может передать их своему ближайшему подходящему городу в рабочем радиусе. Города с чудом, малым чудом, дворцом, Богатством или без заказа пропускаются. При ничьей используется расстояние, направление от севера по часовой стрелке и ID; этот точный порядок пока предварительный. [Разбор выбора города T-hawk и Qitai](https://forums.civfanatics.com/threads/forestry-operations-in-civ3.32469/page-2).

Запас ограничивается стоимостью текущего заказа; излишек не переносится. Полученные щиты помечаются restrictedShields для существующих запретов переключения на чудо. В tile.forestHarvested сохраняется факт первой вырубки, в том числе если получателя не было. Повторная посадка и вырубка не создаёт нового дохода. [Первичное исследование выработки и переполнения](https://civfanatics.com/content/civ3/strategy/cracker/civ3_starts/forest_early.htm), [уточнение однократности](https://forums.civfanatics.com/threads/workers-what-do-i-do-with-them.276289/). Порядок исключений, выбора города и сброса истории оригинала требует контрольного случая R28.

## ИИ сохранения и графика

ИИ выбирает работы на видимых собственных клетках, сначала оценивает ресурсы, обрабатываемые клетки и нужду городов в пище. Используются общие требования и обычные START_WORK. Готовые шахта/орошение не меняются туда и обратно. Исследовательская оценка учитывает открытия этих заданий. Это собственная простая политика, не реконструкция алгоритма Firaxis.

Схема 16 и `native-terrain-work-v3`. Миграция схемы 15 меняет версию модели без изменения старой карты, PRNG, договоров, очередей и незавершённой дороги. В старом движке вырубки ещё не было; отсутствующее forestHarvested означает false. Новые сохранения проверяют флаг истории, ссылки на задания/клетки и согласованность прогресса.

Из оригинальных PCX конвертированы шахта TerrainBuildings, атласы орошения и леса/джунглей, значки Civilopedia. Из FLC подготовлены mine/irrigate/forest/jungle/plant, где разрешены исходные привязки. Кнопка использует родной NormButtons. Манифест содержит 492 графических ресурса, 136 анимационных атласов, 272 варианта NTP и 244 WAV. Отдельные текстуры тундрового/равнинного леса, болот и всех горных сочетаний ещё не подключены; схема соседств орошения и точные смещения требуют визуальной сверки. Звук новых рабочих действий пока не воспроизводится.

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

[18 проверок ядра](data/terrain-work-verification.json): исходные требования, вода 20/21, типы местности, замена улучшений, доходы, подстилающая местность, лесные щиты и их однократность, групповой дробный прогресс, прерывание, миграция, валидация и ИИ. [Chromium](data/browser-terrain-work-verification.json): меню/сроки, клавиши I/Shift-C/Shift-F, полные ходы, экспорт и загрузка в середине шахты, орошение, вырубка/посадка и финальный ход подготовленной расчистки джунглей. Все сравнения выполняются с нашим ядром.

Рубеж 4.5 остаётся открыт: железные дороги, форты и баррикады, колонии/аванпосты/радары/аэродромы, автоматизация для человека, загрязнение, болезни и природные события ещё не реализованы полностью. Контроль выбранного Windows EXE не заменяется зелёными тестами. Неопределённости перечислены в R28/U21 [реестра](reference-cases.md).

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