Files
airdef/docs/GROUND-STRIKES.md
chexit dc36d67eb7
build / mod (push) Failing after 21s
Unblock supply trucks from an impossible RM48U return (#128)
step_supply sent every free truck into the return branch whenever any
S-400 had a pending ground_return, even when that return could not
proceed (the system moving, damaged, reloading or preparing, its round
already claimed by another truck, the route marked unreachable, or no
depot with room). The branch then found no target, cleared the job and
stopped the truck, so independent typed supply requests starved.

The return now keeps its priority only while it is executable: a
carrier holding a reserved round looks for a depot with room in reach,
an empty one for a system ready to hand a round over. Otherwise the
claim stays untouched and only real RM48U demand (a requesting system
with depot stock, or ground rounds aboard for one) pulls the truck
into the typed supply branch; without such demand it holds its watch
exactly as before. Redirecting a reserved round to a waiting request
clears return_cargo once the last one leaves the truck, and a stale
return_cargo with an empty hold no longer sends the truck to a depot
handover it cannot complete.

Regressions: three sim tests (moving claimant, pickup claimed by
another truck with damaged/save-restore phases, unreachable route) and
one full-drive lib test with a mid-flight state round trip; the rounds
are conserved in every phase and the actual return completes once the
claimant is back. All three sim tests fail on the old code.

Checks: core release 200 passed/8 ignored + 8 scenarios; adapter
67 unit + 1 boundary + 5 scenarios; real WASM test-wasm 30 steps.
2026-11-06 11:11:59 +03:00

6.1 KiB

Как подготовить удар по вражеской ПУ

Номера своей техники и вражеских ПУ — разные списки. На карте M щёлкните по своей машине: заголовок карточки показывает её номер. /airdef sites выводит номера разведанных вражеских площадок.

Боеприпас

У обычного склада по умолчанию 0 RM48U. Его обычные перезарядки ПВО — другой запас. Профиль наземного удара пока есть только у С-400; другие ЗРК таким способом не заряжаются.

Пример: склад №3, С-400 №2:

/airdef ground-stock 3 4
/airdef ground-load 2

Первая команда задаёт остаток склада равным четырём RM48U, а не прибавляет четыре. Это подготовка sandbox-сценария; производства этих ракет пока нет. Вторая загружает одну ракету. Каждый повтор загружает ещё одну, пока хватает запаса и ячеек. Четыре ТПК общие: например, после первой загрузки будет 3 ракеты ПВО + 1 RM48U. Вытесненная ракета ПВО остаётся на складе либо возвращается туда грузом ТЗМ.

Рядом с исправным развёрнутым С-400 и наполненным складом (менее 60 блоков) передача прямая. Вдали тот же приказ создаёт заявку, если есть запас и живая ТЗМ. Погрузка запрещена во время движения, перезарядки, подготовки пуска или при отказе пусковой. Нулевой запас не исправляется перестановкой склада ближе. Карточка склада показывает RM48U отдельно от обычного БК.

Откуда берётся разведка

Она автоматическая. Поставьте и включите РЛС до налёта. Рабочая включённая РЛС может заметить сам пуск с наземной площадки, если он попадает в её игровой обзор и не закрыт рельефом. Это даёт оценку позиции; несколько наблюдений могут её уточнить. Обнаруженная позже летящая цель даёт лишь слабое предположение о направлении старта — оно не превращается в координаты от ожидания или от количества радаров.

Команда /airdef sites должна показать, что место ПУ определено. Если там только направление или «место неизвестно», удар не разрешён. Специальной команды, выдающей скрытые координаты, и отдельного ручного режима разведки сейчас нет. У запусков «за картой» сам пуск не наблюдается. Чтобы попробовать механику, используйте близкий наземный налёт и открытую местность; далёкая траектория сама по себе не гарантирует обнаружения площадки.

Приказ на удар

После определения места, например вражеской ПУ №7:

/airdef sites
/airdef strike 7

Или M → карточка вражеской ПУ → «Нанести удар». Кнопка появляется после определения позиции. Указывать номер своего С-400 в strike не надо: мод сам выбирает готовый совместимый носитель с RM48U в игровой дальности. Сначала проверяется разведка, поэтому её ошибка может появиться раньше сообщения о незагруженной ракете.

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

Возврат и отмена

/airdef ground-unload 2
/airdef ground-cancel 2

ground-unload у склада выгружает одну RM48U сразу; вдали резервирует её и вызывает ТЗМ для вывоза. ground-cancel отменяет ещё ожидающую доставку/вывоз. Уже забранная ракета находится в ТЗМ и продолжает путь на склад; команда не телепортирует её обратно в ПУ.

Возврат имеет приоритет, только пока он выполним: ПУ исправна и развёрнута, маршрут доступен, ракету ещё не забирает другая ТЗМ, а у склада есть место. Заявка при этом сохраняется, но невыполнимый вывоз не блокирует ТЗМ: свободная машина исполняет независимые заявки на доставку RM48U, а как только вывоз снова становится выполнимым, он встаёт в приоритет. Проверено регрессиями #128, включая консервацию боеприпасов и save-restore посреди маршрута.