[bug] P1: реальные носители и совместимый боезапас для ударов по ПУ; убрать фантомное ПВО #118

Open
opened 2026-11-01 18:39:19 +00:00 by chexit · 9 comments
Owner

🤖 Filed by Codex, AI-агент Владимира (chexit).

Требование Владимира — P1

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

Уточнение Владимира от 1 ноября 2026: никакого перехвата условным «ПВО у ПУ» по голой вероятности. Либо удалить этот механизм до реализации, либо разместить возле вражеских площадок реальные игровые комплексы и моделировать их работу. Также нужен различимый тип ударного боеприпаса: обычный счётчик ракет ПВО не делает любую установку средством наземного удара.

Что происходит сейчас

Проверена актуальная main 1a693763fdf98916a39b394bb512340cc84bac87. Команда в lib.rs:2211 и Act::Strike в map.rs:1045 передают в sim.order_strike координаты игрока. В strike.rs:569 дальность считается от них, start = from + Y * 1.5; используются глобальный strikes.stock и модель/звук Kalibr. Подходящий собственный комплекс не выбирается, его наличие, боеготовность и физический боезапас не требуются.

Итог: игрок получает переносную условную пусковую; перемещение игрока меняет точку старта и доступность цели по дальности, а расстановка техники для ответного удара не имеет значения. В kimi-work добавлены коллизии/recording этого Flight, но исходная привязка к игроку не исправлена.

Ожидаемое поведение

  1. Команда /airdef strike <ПУ> и кнопка карты сохраняют ручной приказ. РЛС предоставляет разведданные; автоматическое принятие решения об ударе не вводить этой задачей.
  2. Явно определить совместимость комплекс × тип боеприпаса × режим применения, используя исследование ниже. Различать пушечный огонь по наблюдаемой наземной цели, управляемый ракетный огонь по обнаруживаемой наземной цели и отдельный удар по удалённым координатам. Убрать ранее внесённое blanket-исключение Гепарда/Панциря: у них есть подтверждённые наземные возможности, но это не автоматически требуемый координатный режим. Бук-М2/М2Э включить в проверку наземного ракетного режима, а не ограничиваться С-400. С-400 прорабатывать по конкретному подтверждённому профилю боеприпаса; С-500 и остальные не получают такой режим по аналогии с названием/классом. Неподтверждённый режим по умолчанию недоступен, что не означает утверждения о физической невозможности. Список сочетаний, источники и степень подтверждения хранить в каталоге #91; не выдавать произвольный Kalibr ради готовой модели.
  3. Отфильтровать реальные собственные комплексы: жив, исправны необходимые узлы, развёрнут и боеготов, есть совместимый свободный боезапас, оценённая позиция цели достижима по параметрам этого комплекса/боеприпаса. Находящийся в марше/перезарядке/непригодном состоянии не может немедленно произвести пуск.
  4. Из подходящих выбрать комплекс с наибольшим текущим доступным ударным боезапасом. Учитывать уже назначенные/зарезервированные пуски, чтобы последовательные приказы не тратили одну ракету дважды. При равенстве нужен стабильный понятный выбор, например по дальности, затем ID.
  5. Ракета покидает настоящий muzzle/пусковую выбранной установки. Её положение, требуемый доворот/подготовка, анимация, звук и факел соответствуют этой установке. После приказа игрок может двигаться — это не меняет пусковую и траекторию. Для вертикального старта учитывать собственные правила данного типа.
  6. Боеприпас списывается один раз из физического запаса выбранного носителя; использовать согласованный lifecycle приказа/подготовки/пуска. Согласовать с существующими ammo/reload/supply и autosave (#113). Старый глобальный запас с автономным пополнением не должен позволять обойти отсутствие установки или её боезапаса; если остаётся общим складом, явно отделить склад от ракет, доступных к пуску на конкретной машине.
  7. Нет подходящего комплекса — объяснить причину и не запускать ракету от игрока, не списывать боезапас. В подтверждении приказа показать комплекс-носитель и цель; на карте, в recorded flight и replay сохранять связь с носителем и фактический старт (#109/#88).

Приёмка

  • Ни одного собственного комплекса / только несовместимые / все неисправны или пусты: приказ отклонён с понятной причиной.
  • Два пригодных носителя с запасами 2 и 5: выбран второй; после настоящего пуска у него 4, у первого 2. Более богатый, но неисправный или недостигающий цели комплекс не выбирается.
  • Игрок далеко от установок: ракета появляется у выбранного носителя, дальность проверяется от носителя. Перемещение игрока не меняет выбор/точку пуска при неизменном боевом состоянии.
  • При необходимости доворота пуск ждёт его завершения; разрушение/сворачивание выбранного комплекса до пуска обрабатывается явно, без «ракеты из воздуха» и двойного списания.
  • Повторные приказы, одновременные задачи ПВО, пополнение/сохранение и загрузка не дублируют боезапас.
  • Коллизия и движение сохраняют исправления #106/#117; live/replay показывают один и тот же запуск с выбранной установки.

Убрать условное ПВО противника — входит в этот же issue

Сейчас cover_of() назначает площадке класс прикрытия по seed, а land_strike() применяет TUNE.cover_p и объявляет ракету сбитой без физического перехватчика. Это обнаружено в main в sim/strike.rs::cover_of/land_strike; таблица вероятностей не является моделью работающего вражеского комплекса.

Допустимы два варианта реализации:

  • Быстрое обязательное решение: полностью отключить/удалить этот путь перехвата. Пока физических защитников нет, прикрытие не может уничтожить ракету, портить статистику/реплей или выводить игроку сообщение о несуществующем ПВО. Обычные промахи, коллизии и другие обоснованные причины потери не отменяются.
  • Полная реализация вместо отключения: реальные комплексы возле подходящих вражеских ПУ. Они используют общую симуляцию обнаружения, обзора/видимости, наведения, боеготовности, наведения установки, пуска, движения перехватчика, взрывателя, расхода и пополнения боезапаса. Перехват только по исходу настоящего боя; случайность может быть частью общей модели поражения, но не отдельным броском cover_p поверх него. Комплексы видимы/разведываемы, уничтожаемы, конечны по боезапасу и живут согласованно с охраняемой площадкой. Их активность, ракеты и исходы видны в live/replay. Исключить двойной перехват: и физической ракетой, и старой вероятностью.

Если полная механика выходит за рамки ближайшего исправления, сначала выбрать отключение. Сохранение старой вероятности как скрытого fallback не считается выполнением.

Различимый боезапас и логистика — предложенное развитие

Владимир предпочитает подготовку совместимого боекомплекта через склад и ТЗМ, а не превращение любых зенитных ракет в наземные нажатием кнопки. Типы/режимы учитывать поштучно: боеприпас может иметь воздушный, наземный либо оба подтверждённых режима. Отдельная специальная ударная ракета не является универсальным обязательным требованием для всех комплексов — она нужна там, где этого требует подтверждённый профиль. Нельзя ни объявлять любой перехватчик ударным, ни выдумывать новый strike-only тип там, где допускается соответствующий режим существующего боеприпаса. Полная поездка склад–ТЗМ–носитель — игровой план логистики, а не утверждение о точном реальном порядке снабжения.

Базовый контракт совместимости и раздельного учёта боезапаса нужен уже при исправлении P1. Полную автоматизацию логистики можно реализовать следующим этапом, явно отметив этот остаток в checklist; до неё не эмулировать отсутствующую ракету универсальным stock или произвольной моделью. Если корректного совместимого боеприпаса пока нет, этот вариант удара остаётся недоступным с объяснением.

Предлагаемый игровой сценарий:

  1. До боя игрок задаёт комплект загружаемых типов ракет и резерв для задач ПВО. Можно заранее держать совместимый ударный боезапас, а не ездить за ним заново после каждого пуска.
  2. Если приказ требует подготовки: выбрать допустимый носитель, подходящий склад и совместимую ТЗМ. Не требуется вводить отдельный вид машины только ради названия: существующая совместимая ТЗМ может перевозить нужный тип груза.
  3. Зарезервировать реальные ракеты на складе и назначить машину: погрузка → доставка → обслуживание/перезарядка выбранной установки → готовность → подтверждение/исполнение приказа согласно выбранной игроком политике. Если нужно освободить занятые ячейки, учесть возврат снятого боезапаса, не удалять и не превращать его в другой тип.
  4. Типы ракет занимают физические совместимые места/контейнеры установки и учитываются раздельно. ПВО-задачи не расходуют ударный-only груз; наземный приказ не тратит несовместимый перехватчик. Уменьшение доступного боекомплекта для воздушных задач — осознанная цена подготовки наземного удара.
  5. В интерфейсе видны носитель, нужный/заряженный тип, складской остаток, ТЗМ и этап. Игрок может отменить подготовку; потеря склада/машины/носителя, отсутствие пути, выгрузка мира и повторная загрузка не теряют/не дублируют груз, резервы и приказы.

Выбор носителя: сначала только реально боеготовые установки с уже загруженным подходящим боеприпасом, затем максимум его свободного количества (после резервов). Если таких нет — предложить/поставить в очередь подготовку с понятным состоянием, а не объявлять пустой носитель готовым или выбирать машину по общему количеству несовместимых ракет.

Проверка реальных наземных возможностей: исправление прежнего списка исключений

Проверен весь боевой каталог main 1a693763fdf98916a39b394bb512340cc84bac87: Patriot/PAC-3, Гепард, Панцирь-С1, С-400/48Н6, С-500/77Н6, IRIS-T SLM, NASAMS/AMRAAM, Бук-М2/9М317, Тор-М2/9М338 и P1-SUN (sim/units.rs, sim/mod.rs). РЛС, склад, ТЗМ, РЭБ и прожектор не являются носителями ракет в этом каталоге.

Коррекция Codex: прежнее именное исключение Гепарда и Панциря было внесено без достаточной проверки и снято. Ниже различаются подтверждённая функция, официальное публичное заявление и отсутствие найденного подтверждения. Это исследование для игровых ограничений, а не полноценная инструкция применения или воспроизведение реальных систем управления.

Тип в моде Что установлено по источникам Следствие для игровой реализации
Гепард KNDS прямо включает наземные цели. Bundeswehr отдельно описывает наземное поражение пушками с оптическим ручным наведением. Производитель, эксплуатант. Наземный пушечный режим имеет реальное основание. Не выдавать ему ракетный удар по удалённым координатам и не объявлять неспособным вообще поражать землю.
Панцирь-С1 Ростех явно описывает пушки для защиты от наземной угрозы. Дополнительно в прямом сообщении начальника пресс-службы Северного флота Интерфаксу в 2016 году заявлено поражение наземных целей также ракетным боезапасом. Ростех, прямое заявление. Наземную способность целиком не запрещать. Пушечный режим подтверждён производственной группой; для ракетного есть официальное заявление, но подробный допустимый профиль требует проверки. Эти источники сами по себе не подтверждают автономный удар за препятствием по координатам разведанной ПУ.
Бук-М2 (проверенный открытый вариант М2Э) Официальная брошюра Рособоронэкспорта прямо указывает обстрел наземных радиоконтрастных целей. Брошюра. Подтверждённый кандидат на игровой наземный ракетный режим. Ограничение по классу обнаруживаемой цели сохранить. Не приравнивать формулировку к неограниченному strike по любой точке и не переносить автоматически на все версии семейства.
С-400 Помимо прежнего интервью 2023 года, найдено официальное сообщение ГУР МО Украины от 10.09.2026, которое связывает С-400 с применением ударных РМ-48У. Это сообщение ведомства стороны конфликта, не независимая сертификация производителя. Первоисточник. Наземный удар имеет более конкретное открытое основание, чем одна наша гипотеза. Реализовывать через явно названный и помеченный по достоверности профиль. Нельзя считать показанные в моде 48Н6 автоматически эквивалентом описанного ударного варианта. Не придумывать внутреннее устройство, индексы либо параметры.
С-500 В просмотренных открытых материалах и сообщении пресс-службы разработчика подтверждаются задачи ПВО/ПРО; пригодного подтверждения наземного координатного удара не найдено. Прямое сообщение пресс-службы через Интерфакс. Статус наземного режима — «не подтверждён в исследованных источниках». Не наследовать его от С-400; не делать категорический вывод «невозможно».
Patriot с PAC-3 Производитель PAC-3 описывает перехват воздушных/ракетных угроз; подтверждения наземного координатного режима не найдено. Lockheed Martin. По найденной документации ground-strike не включать; способность иных изделий/пусковых не переносить на Patriot/PAC-3.
IRIS-T SLM Изучены материалы Diehl и Bundeswehr: наземная система ПВО. Diehl отдельно упоминает демонстрацию поражения морской цели ракетой семейства IRIS-T, но это не доказывает координатный наземный режим SLM. Diehl, Bundeswehr. Координатный наземный режим SLM не подтверждён; семейство ракеты, воздушный носитель и наземный комплекс не смешивать.
NASAMS с AMRAAM Kongsberg и Raytheon описывают комплекс ПВО и допустимую номенклатуру; подходящего подтверждения наземного удара не найдено. Kongsberg, пусковая. Не считать наличие общего пункта управления или ракеты, применяемой с самолёта, доказательством наземного режима именно NASAMS.
Тор-М2 В официальном описании Рособоронэкспорта перечислены воздушные цели; подтверждения требуемого наземного режима не найдено. Официальный канал. Статус — «не подтверждён»; автоматический допуск к strike не вводить.
P1-SUN Официальные закупочные/эксплуатационные материалы описывают перехватчик воздушных целей. UNITED24, эксплуатант. Подтверждения наземного strike не найдено. Не переносить на конкретный перехватчик любые свойства общего класса FPV-дронов.

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

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

Дополнительная приёмка после уточнений

  • У подходящего носителя много перехватчиков, но нет допустимого ударного боеприпаса: немедленный наземный пуск запрещён; объяснена потребность в подготовке.
  • Комплекс не получает несовместимую ракету или неподтверждённый режим из глобального счётчика. У Гепарда/Панциря не отключаются подтверждённые наземные режимы из-за именного blacklist; наличие пушечного/наблюдаемого наземного режима не включает координатный удар автоматически. Для Бук-М2/М2Э проверен отдельный профиль радиоконтрастной цели. С-500 не получает ground-strike только по названию.
  • Если выбран вариант удаления условного прикрытия: без защитников нет Intercepted от cover и сообщений о фантомном ПВО при любых seed/классах ПУ; прежние настройки/сейвы не включают его обратно.
  • Если выбран вариант реальных защитников: пустой, уничтоженный, не видящий цель или неготовый комплекс не может перехватить ракету посредством старой таблицы; настоящий успешный перехват воспроизводится в записи.
  • При реализации логистики: приказы, резервы, загруженный боекомплект и груз ТЗМ сохраняются без дублирования; подготовленный заранее удар использует загруженную ракету без обязательной повторной поездки на склад.

Checklist для исполнения

  • Старт от физического совместимого носителя и выбор по доступному совместимому боекомплекту.
  • Явная совместимость комплекса, ракеты и режима; раздельный учёт и отсутствие магического боезапаса.
  • Фантомное вражеское ПВО отключено либо заменено реальной симуляцией.
  • UI, коллизии, расход, сохранение и replay согласованы; регрессии покрыты.
  • Полная логистика склада/ТЗМ и подготовка боекомплекта выполнены либо явно оставлены отдельным этапом backlog, без подмены отсутствующих возможностей.

Связано: #101 (исходная механика), #106, #109, #113, #117, #91, #88. Сохранение вражеских ПУ между налётами остаётся отдельным вопросом.

🤖 Filed by Codex, AI-агент Владимира (chexit). ### Требование Владимира — P1 Игрок отдаёт приказ на ответный удар вручную. Ракета должна стартовать **с собственного боеготового комплекса с совместимым боеприпасом и допустимым режимом наземного удара**, а не из позиции игрока. По умолчанию выбирать среди пригодных комплексов тот, у которого больше всего уже заряженных и доступных для такого удара ракет. Уточнение Владимира от 1 ноября 2026: никакого перехвата условным «ПВО у ПУ» по голой вероятности. Либо удалить этот механизм до реализации, либо разместить возле вражеских площадок реальные игровые комплексы и моделировать их работу. Также нужен различимый тип ударного боеприпаса: обычный счётчик ракет ПВО не делает любую установку средством наземного удара. ### Что происходит сейчас Проверена актуальная main `1a693763fdf98916a39b394bb512340cc84bac87`. Команда в [lib.rs:2211](https://gitea.maoniao.team/chexit/airdef/src/commit/1a693763fdf98916a39b394bb512340cc84bac87/airdef-mod/src/lib.rs#L2211) и `Act::Strike` в [map.rs:1045](https://gitea.maoniao.team/chexit/airdef/src/commit/1a693763fdf98916a39b394bb512340cc84bac87/airdef-mod/src/map.rs#L1045) передают в `sim.order_strike` координаты игрока. В [strike.rs:569](https://gitea.maoniao.team/chexit/airdef/src/commit/1a693763fdf98916a39b394bb512340cc84bac87/airdef-mod/src/sim/strike.rs#L569) дальность считается от них, `start = from + Y * 1.5`; используются глобальный `strikes.stock` и модель/звук Kalibr. Подходящий собственный комплекс не выбирается, его наличие, боеготовность и физический боезапас не требуются. Итог: игрок получает переносную условную пусковую; перемещение игрока меняет точку старта и доступность цели по дальности, а расстановка техники для ответного удара не имеет значения. В kimi-work добавлены коллизии/recording этого Flight, но исходная привязка к игроку не исправлена. ### Ожидаемое поведение 1. Команда `/airdef strike <ПУ>` и кнопка карты сохраняют **ручной приказ**. РЛС предоставляет разведданные; автоматическое принятие решения об ударе не вводить этой задачей. 2. Явно определить совместимость **комплекс × тип боеприпаса × режим применения**, используя исследование ниже. Различать пушечный огонь по наблюдаемой наземной цели, управляемый ракетный огонь по обнаруживаемой наземной цели и отдельный удар по удалённым координатам. Убрать ранее внесённое blanket-исключение Гепарда/Панциря: у них есть подтверждённые наземные возможности, но это не автоматически требуемый координатный режим. Бук-М2/М2Э включить в проверку наземного ракетного режима, а не ограничиваться С-400. С-400 прорабатывать по конкретному подтверждённому профилю боеприпаса; С-500 и остальные не получают такой режим по аналогии с названием/классом. Неподтверждённый режим по умолчанию недоступен, что не означает утверждения о физической невозможности. Список сочетаний, источники и степень подтверждения хранить в каталоге #91; не выдавать произвольный Kalibr ради готовой модели. 3. Отфильтровать реальные собственные комплексы: жив, исправны необходимые узлы, развёрнут и боеготов, есть совместимый свободный боезапас, оценённая позиция цели достижима по параметрам **этого комплекса/боеприпаса**. Находящийся в марше/перезарядке/непригодном состоянии не может немедленно произвести пуск. 4. Из подходящих выбрать комплекс с **наибольшим текущим доступным ударным боезапасом**. Учитывать уже назначенные/зарезервированные пуски, чтобы последовательные приказы не тратили одну ракету дважды. При равенстве нужен стабильный понятный выбор, например по дальности, затем ID. 5. Ракета покидает настоящий muzzle/пусковую выбранной установки. Её положение, требуемый доворот/подготовка, анимация, звук и факел соответствуют этой установке. После приказа игрок может двигаться — это не меняет пусковую и траекторию. Для вертикального старта учитывать собственные правила данного типа. 6. Боеприпас списывается **один раз** из физического запаса выбранного носителя; использовать согласованный lifecycle приказа/подготовки/пуска. Согласовать с существующими ammo/reload/supply и autosave (#113). Старый глобальный запас с автономным пополнением не должен позволять обойти отсутствие установки или её боезапаса; если остаётся общим складом, явно отделить склад от ракет, доступных к пуску на конкретной машине. 7. Нет подходящего комплекса — объяснить причину и не запускать ракету от игрока, не списывать боезапас. В подтверждении приказа показать комплекс-носитель и цель; на карте, в recorded flight и replay сохранять связь с носителем и фактический старт (#109/#88). ### Приёмка - Ни одного собственного комплекса / только несовместимые / все неисправны или пусты: приказ отклонён с понятной причиной. - Два пригодных носителя с запасами 2 и 5: выбран второй; после настоящего пуска у него 4, у первого 2. Более богатый, но неисправный или недостигающий цели комплекс не выбирается. - Игрок далеко от установок: ракета появляется у выбранного носителя, дальность проверяется от носителя. Перемещение игрока не меняет выбор/точку пуска при неизменном боевом состоянии. - При необходимости доворота пуск ждёт его завершения; разрушение/сворачивание выбранного комплекса до пуска обрабатывается явно, без «ракеты из воздуха» и двойного списания. - Повторные приказы, одновременные задачи ПВО, пополнение/сохранение и загрузка не дублируют боезапас. - Коллизия и движение сохраняют исправления #106/#117; live/replay показывают один и тот же запуск с выбранной установки. ### Убрать условное ПВО противника — входит в этот же issue Сейчас `cover_of()` назначает площадке класс прикрытия по seed, а `land_strike()` применяет `TUNE.cover_p` и объявляет ракету сбитой без физического перехватчика. Это обнаружено в main в `sim/strike.rs::cover_of/land_strike`; таблица вероятностей не является моделью работающего вражеского комплекса. **Допустимы два варианта реализации:** - Быстрое обязательное решение: полностью отключить/удалить этот путь перехвата. Пока физических защитников нет, прикрытие не может уничтожить ракету, портить статистику/реплей или выводить игроку сообщение о несуществующем ПВО. Обычные промахи, коллизии и другие обоснованные причины потери не отменяются. - Полная реализация вместо отключения: реальные комплексы возле подходящих вражеских ПУ. Они используют общую симуляцию обнаружения, обзора/видимости, наведения, боеготовности, наведения установки, пуска, движения перехватчика, взрывателя, расхода и пополнения боезапаса. Перехват только по исходу настоящего боя; случайность может быть частью общей модели поражения, но не отдельным броском `cover_p` поверх него. Комплексы видимы/разведываемы, уничтожаемы, конечны по боезапасу и живут согласованно с охраняемой площадкой. Их активность, ракеты и исходы видны в live/replay. Исключить двойной перехват: и физической ракетой, и старой вероятностью. Если полная механика выходит за рамки ближайшего исправления, сначала выбрать отключение. Сохранение старой вероятности как скрытого fallback не считается выполнением. ### Различимый боезапас и логистика — предложенное развитие Владимир предпочитает подготовку совместимого боекомплекта через склад и ТЗМ, а не превращение любых зенитных ракет в наземные нажатием кнопки. Типы/режимы учитывать поштучно: боеприпас может иметь воздушный, наземный либо оба подтверждённых режима. **Отдельная специальная ударная ракета не является универсальным обязательным требованием для всех комплексов** — она нужна там, где этого требует подтверждённый профиль. Нельзя ни объявлять любой перехватчик ударным, ни выдумывать новый strike-only тип там, где допускается соответствующий режим существующего боеприпаса. Полная поездка склад–ТЗМ–носитель — игровой план логистики, а не утверждение о точном реальном порядке снабжения. Базовый контракт совместимости и раздельного учёта боезапаса нужен уже при исправлении P1. Полную автоматизацию логистики можно реализовать следующим этапом, явно отметив этот остаток в checklist; до неё не эмулировать отсутствующую ракету универсальным stock или произвольной моделью. Если корректного совместимого боеприпаса пока нет, этот вариант удара остаётся недоступным с объяснением. Предлагаемый игровой сценарий: 1. До боя игрок задаёт комплект загружаемых типов ракет и резерв для задач ПВО. Можно заранее держать совместимый ударный боезапас, а не ездить за ним заново после каждого пуска. 2. Если приказ требует подготовки: выбрать допустимый носитель, подходящий склад и совместимую ТЗМ. Не требуется вводить отдельный вид машины только ради названия: существующая совместимая ТЗМ может перевозить нужный тип груза. 3. Зарезервировать реальные ракеты на складе и назначить машину: погрузка → доставка → обслуживание/перезарядка выбранной установки → готовность → подтверждение/исполнение приказа согласно выбранной игроком политике. Если нужно освободить занятые ячейки, учесть возврат снятого боезапаса, не удалять и не превращать его в другой тип. 4. Типы ракет занимают физические совместимые места/контейнеры установки и учитываются раздельно. ПВО-задачи не расходуют ударный-only груз; наземный приказ не тратит несовместимый перехватчик. Уменьшение доступного боекомплекта для воздушных задач — осознанная цена подготовки наземного удара. 5. В интерфейсе видны носитель, нужный/заряженный тип, складской остаток, ТЗМ и этап. Игрок может отменить подготовку; потеря склада/машины/носителя, отсутствие пути, выгрузка мира и повторная загрузка не теряют/не дублируют груз, резервы и приказы. Выбор носителя: сначала только реально боеготовые установки с **уже загруженным подходящим** боеприпасом, затем максимум его свободного количества (после резервов). Если таких нет — предложить/поставить в очередь подготовку с понятным состоянием, а не объявлять пустой носитель готовым или выбирать машину по общему количеству несовместимых ракет. ### Проверка реальных наземных возможностей: исправление прежнего списка исключений Проверен весь боевой каталог main `1a693763fdf98916a39b394bb512340cc84bac87`: Patriot/PAC-3, Гепард, Панцирь-С1, С-400/48Н6, С-500/77Н6, IRIS-T SLM, NASAMS/AMRAAM, Бук-М2/9М317, Тор-М2/9М338 и P1-SUN (`sim/units.rs`, `sim/mod.rs`). РЛС, склад, ТЗМ, РЭБ и прожектор не являются носителями ракет в этом каталоге. **Коррекция Codex:** прежнее именное исключение Гепарда и Панциря было внесено без достаточной проверки и снято. Ниже различаются подтверждённая функция, официальное публичное заявление и отсутствие найденного подтверждения. Это исследование для игровых ограничений, а не полноценная инструкция применения или воспроизведение реальных систем управления. | Тип в моде | Что установлено по источникам | Следствие для игровой реализации | |---|---|---| | Гепард | KNDS прямо включает наземные цели. Bundeswehr отдельно описывает наземное поражение пушками с оптическим ручным наведением. [Производитель](https://knds.com/en/products/systems/gepard), [эксплуатант](https://www.bundeswehr.de/de/meldungen/flugabwehrkanonenpanzer-gepard-5400072). | Наземный пушечный режим имеет реальное основание. Не выдавать ему ракетный удар по удалённым координатам и не объявлять неспособным вообще поражать землю. | | Панцирь-С1 | Ростех явно описывает пушки для защиты от наземной угрозы. Дополнительно в прямом сообщении начальника пресс-службы Северного флота Интерфаксу в 2016 году заявлено поражение наземных целей также ракетным боезапасом. [Ростех](https://rostec.ru/media/news/kompleks-pantsir-nebo-na-zamke/), [прямое заявление](https://www.interfax.ru/russia/492012). | Наземную способность целиком не запрещать. Пушечный режим подтверждён производственной группой; для ракетного есть официальное заявление, но подробный допустимый профиль требует проверки. Эти источники сами по себе не подтверждают автономный удар за препятствием по координатам разведанной ПУ. | | Бук-М2 (проверенный открытый вариант М2Э) | Официальная брошюра Рособоронэкспорта прямо указывает обстрел наземных радиоконтрастных целей. [Брошюра](https://roe.ru/pdfs/pdf_6231.pdf). | Подтверждённый кандидат на игровой наземный ракетный режим. Ограничение по классу обнаруживаемой цели сохранить. Не приравнивать формулировку к неограниченному strike по любой точке и не переносить автоматически на все версии семейства. | | С-400 | Помимо прежнего интервью 2023 года, найдено официальное сообщение ГУР МО Украины от 10.09.2026, которое связывает С-400 с применением ударных РМ-48У. Это сообщение ведомства стороны конфликта, не независимая сертификация производителя. [Первоисточник](https://gur.gov.ua/content/warsanctions-hur-mo-rozkryvaie-budovu-komponentnu-bazu-ta-pidpryiemstva-kooperatsii-z-vyrobnytstva-udarnykh-raket-rm48u.html). | Наземный удар имеет более конкретное открытое основание, чем одна наша гипотеза. Реализовывать через явно названный и помеченный по достоверности профиль. Нельзя считать показанные в моде 48Н6 автоматически эквивалентом описанного ударного варианта. Не придумывать внутреннее устройство, индексы либо параметры. | | С-500 | В просмотренных открытых материалах и сообщении пресс-службы разработчика подтверждаются задачи ПВО/ПРО; пригодного подтверждения наземного координатного удара не найдено. [Прямое сообщение пресс-службы через Интерфакс](https://www.interfax-russia.ru/military/news/548893). | Статус наземного режима — «не подтверждён в исследованных источниках». Не наследовать его от С-400; не делать категорический вывод «невозможно». | | Patriot с PAC-3 | Производитель PAC-3 описывает перехват воздушных/ракетных угроз; подтверждения наземного координатного режима не найдено. [Lockheed Martin](https://news.lockheedmartin.com/11-12-2024-pac-3-equipped-with-advanced-software-excels-in-integrated-test). | По найденной документации ground-strike не включать; способность иных изделий/пусковых не переносить на Patriot/PAC-3. | | IRIS-T SLM | Изучены материалы Diehl и Bundeswehr: наземная система ПВО. Diehl отдельно упоминает демонстрацию поражения морской цели ракетой семейства IRIS-T, но это не доказывает координатный наземный режим SLM. [Diehl](https://new.diehl.com/defence/en/products/guided-missiles/iris-t-sl2), [Bundeswehr](https://www.bundeswehr.de/de/ausruestung-technik-bundeswehr/landsysteme-bundeswehr/lenkflugkoerper-iris-t-slm). | Координатный наземный режим SLM не подтверждён; семейство ракеты, воздушный носитель и наземный комплекс не смешивать. | | NASAMS с AMRAAM | Kongsberg и Raytheon описывают комплекс ПВО и допустимую номенклатуру; подходящего подтверждения наземного удара не найдено. [Kongsberg](https://www.kongsberg.com/what-we-do/defence-and-security/integrated-air-and-missile-defence/nasams-air-defence-system/), [пусковая](https://www.kongsberg.com/what-we-do/defence-and-security/integrated-air-and-missile-defence/nasams-multi-missile-launcher/). | Не считать наличие общего пункта управления или ракеты, применяемой с самолёта, доказательством наземного режима именно NASAMS. | | Тор-М2 | В официальном описании Рособоронэкспорта перечислены воздушные цели; подтверждения требуемого наземного режима не найдено. [Официальный канал](https://t.me/s/roe_russia?after=764). | Статус — «не подтверждён»; автоматический допуск к strike не вводить. | | P1-SUN | Официальные закупочные/эксплуатационные материалы описывают перехватчик воздушных целей. [UNITED24](https://u24.gov.ua/uk/news/140-p1-sun-interceptor-drones-procured-via-timothy-snyder-fundraiser), [эксплуатант](https://www.30corps.army/news/ukrainskyi-dron-p1-sun-proty-rosiiskykh/). | Подтверждения наземного strike не найдено. Не переносить на конкретный перехватчик любые свойства общего класса FPV-дронов. | Практический вывод для каталога: нужны отдельные режимы наземного пушечного огня, управляемого ракетного огня по подходящей обнаруживаемой цели и координатного удара. Связывать их с боеприпасом, конфигурацией комплекса и доступностью нужного способа целеуказания. Погрешность разведки, видимость и возможность конкретного режима — разные проверки. Величины игровых дистанций отдельно обосновать масштабом мира; воздушная дальность не становится наземной автоматически. Отсутствие найденного подтверждения не является доказательством отсутствия возможности. Но неподтверждённую способность нельзя включать под видом реализма: новый источник должен менять проверяемую таблицу capabilities, а не именной blacklist. Необязательная игровая условность может быть предложена отдельно и явно обозначена; Владимир её по умолчанию не разрешал. ### Дополнительная приёмка после уточнений - У подходящего носителя много перехватчиков, но нет допустимого ударного боеприпаса: немедленный наземный пуск запрещён; объяснена потребность в подготовке. - Комплекс не получает несовместимую ракету или неподтверждённый режим из глобального счётчика. У Гепарда/Панциря не отключаются подтверждённые наземные режимы из-за именного blacklist; наличие пушечного/наблюдаемого наземного режима не включает координатный удар автоматически. Для Бук-М2/М2Э проверен отдельный профиль радиоконтрастной цели. С-500 не получает ground-strike только по названию. - Если выбран вариант удаления условного прикрытия: без защитников нет `Intercepted` от cover и сообщений о фантомном ПВО при любых seed/классах ПУ; прежние настройки/сейвы не включают его обратно. - Если выбран вариант реальных защитников: пустой, уничтоженный, не видящий цель или неготовый комплекс не может перехватить ракету посредством старой таблицы; настоящий успешный перехват воспроизводится в записи. - При реализации логистики: приказы, резервы, загруженный боекомплект и груз ТЗМ сохраняются без дублирования; подготовленный заранее удар использует загруженную ракету без обязательной повторной поездки на склад. ### Checklist для исполнения - [ ] Старт от физического совместимого носителя и выбор по доступному совместимому боекомплекту. - [ ] Явная совместимость комплекса, ракеты и режима; раздельный учёт и отсутствие магического боезапаса. - [ ] Фантомное вражеское ПВО отключено либо заменено реальной симуляцией. - [ ] UI, коллизии, расход, сохранение и replay согласованы; регрессии покрыты. - [ ] Полная логистика склада/ТЗМ и подготовка боекомплекта выполнены либо явно оставлены отдельным этапом backlog, без подмены отсутствующих возможностей. Связано: #101 (исходная механика), #106, #109, #113, #117, #91, #88. Сохранение вражеских ПУ между налётами остаётся отдельным вопросом.
chexit added the priority:P1area:logisticstype:bugarea:simulation labels 2026-11-01 18:39:19 +00:00
chexit changed title from [bug] P1: ответные удары по ПУ должны запускаться с боеготового комплекса, а не от игрока to [bug] P1: реальные носители и совместимый боезапас для ударов по ПУ; убрать фантомное ПВО 2026-11-01 18:50:29 +00:00
Author
Owner

🤖 Agent: Codex — по уточнению Владимира обновлены заголовок и основной текст этого же P1. Добавлены: отключение фантомного cover_p либо полноценные физические защитники; явная совместимость носителя/боеприпаса/режима, без автоматического допуска Гепарда, Панциря и неподтверждённого С-500; подготовка типизированного боекомплекта через склад/ТЗМ с возможностью загрузить его до боя. Максимум боезапаса при выборе считается по уже заряженным совместимым свободным ракетам. Для наземных возможностей реальных прототипов разделены подтверждённые сведения, публичные заявления и игровой дизайн. Полная автоматизация логистики выделена следующим этапом, но отсутствие боеприпаса не разрешено подменять магическим stock.

🤖 Agent: Codex — по уточнению Владимира обновлены заголовок и основной текст этого же P1. Добавлены: отключение фантомного cover_p либо полноценные физические защитники; явная совместимость носителя/боеприпаса/режима, без автоматического допуска Гепарда, Панциря и неподтверждённого С-500; подготовка типизированного боекомплекта через склад/ТЗМ с возможностью загрузить его до боя. Максимум боезапаса при выборе считается по уже заряженным совместимым свободным ракетам. Для наземных возможностей реальных прототипов разделены подтверждённые сведения, публичные заявления и игровой дизайн. Полная автоматизация логистики выделена следующим этапом, но отсутствие боеприпаса не разрешено подменять магическим stock.
Author
Owner

🤖 Agent: Codex — исправление моего предыдущего уточнения по замечанию Владимира. Снят внесённый без достаточного исследования именной запрет Гепарда/Панциря. Проверены все 10 боевых типов текущего каталога; в основной текст добавлена таблица с первоисточниками и степенью подтверждения. Гепард имеет подтверждённый пушечный наземный режим; Панцирь — пушечный и официальное заявление пресс-службы о ракетном поражении наземных целей; Бук-М2Э прямо заявлен Рособоронэкспортом для наземных радиоконтрастных целей. Для С-400 добавлено конкретное официальное сообщение о применении ударного варианта с оговоркой достоверности источника. Для остальных не выдаётся отсутствие найденного подтверждения за доказательство невозможности. Разведены пушечный, управляемый по обнаруживаемой наземной цели и координатный режимы; отдельная strike-only ракета не навязывается всем системам как универсальное требование. Остальные требования P1 и удаление/замена фантомного прикрытия сохранены.

🤖 Agent: Codex — исправление моего предыдущего уточнения по замечанию Владимира. Снят внесённый без достаточного исследования именной запрет Гепарда/Панциря. Проверены все 10 боевых типов текущего каталога; в основной текст добавлена таблица с первоисточниками и степенью подтверждения. Гепард имеет подтверждённый пушечный наземный режим; Панцирь — пушечный и официальное заявление пресс-службы о ракетном поражении наземных целей; Бук-М2Э прямо заявлен Рособоронэкспортом для наземных радиоконтрастных целей. Для С-400 добавлено конкретное официальное сообщение о применении ударного варианта с оговоркой достоверности источника. Для остальных не выдаётся отсутствие найденного подтверждения за доказательство невозможности. Разведены пушечный, управляемый по обнаруживаемой наземной цели и координатный режимы; отдельная strike-only ракета не навязывается всем системам как универсальное требование. Остальные требования P1 и удаление/замена фантомного прикрытия сохранены.
Author
Owner

🤖 Agent: Codex — работа Владимира (chexit).

Обязательная часть: полностью удалён seed-only cover_of/cover_p interception. Никакое виртуальное ПВО площадки больше не уничтожает ракету и не создаёт Intercepted/сообщение. 30 seed regression проверены.

Production player-launch отклонён: без реализованного подтверждённого coordinate-strike loadout нет ракеты от игрока, списания generic stock или его автоматического пополнения. В map/README причина объяснена: исторический запас — только совместимость формата. Flight/collision/recording regressions сохранены через явный test-only synthetic launcher.

Честный остаток P1: физический носитель с muzzle/подготовкой, typed ammunition/reservation/reload/supply и выбор по доступному совместимому запасу ещё не реализованы. Ни S-400, ни Бук, ни прочая техника не получают наземный режим по аналогии или произвольный Kalibr. Пока корректного сочетания в каталоге нет, режим недоступен, как предусмотрено требованием.

Issue оставлен открытым согласно просьбе автора.

🤖 Agent: Codex — работа Владимира (chexit). [Обязательная часть](https://gitea.maoniao.team/chexit/airdef/commit/29b047a): полностью удалён seed-only cover_of/cover_p interception. Никакое виртуальное ПВО площадки больше не уничтожает ракету и не создаёт Intercepted/сообщение. 30 seed regression проверены. Production player-launch отклонён: без реализованного подтверждённого coordinate-strike loadout нет ракеты от игрока, списания generic stock или его автоматического пополнения. В map/README причина [объяснена](https://gitea.maoniao.team/chexit/airdef/commit/ad96018): исторический запас — только совместимость формата. Flight/collision/recording regressions сохранены через явный test-only synthetic launcher. Честный остаток P1: физический носитель с muzzle/подготовкой, typed ammunition/reservation/reload/supply и выбор по доступному совместимому запасу ещё не реализованы. Ни S-400, ни Бук, ни прочая техника не получают наземный режим по аналогии или произвольный Kalibr. Пока корректного сочетания в каталоге нет, режим недоступен, как предусмотрено требованием. Issue оставлен открытым согласно просьбе автора.
Author
Owner

🤖 Agent: Codex, при участии GPT-6.1 Terra и GPT-6 Luna. Продолжение в kimi-work: код.

Ручной /airdef strike теперь запускает отдельный игровой RM48U-профиль из физического готового С-400. Выбор: наибольший загруженный ударный боезапас → расстояние → стабильный ID. Боеприпас расходуется сразу один раз, позиция игрока не определяет старт; moving/reloading/cooldown/неисправная пусковая исключаются. Четыре ячейки делятся между ПВО и ударными ракетами. ground-stock явно задаёт sandbox-запас склада (по умолчанию 0); ground-load/ground-unload обменивают по одной ракете, сохраняя снятые ракеты ПВО на складе. Данные сохраняются, обычное снабжение не заполняет занятые RM48U ячейки.

Есть отдельный model ID, холодный выброс, задержка двигателя/дыма, carrier ID в записи и корректная относительная сетка сэмплов от точки muzzle. Неизвестное фантомное ПВО по-прежнему удалено. Проверены conservation, отказ без склада/носителя, выбор носителя, запрет повторного расхода, save/parser/dirty mark, replay ignition/smoke; настоящий WASM fixture проверяет загрузку/возврат через команды.

Это игровой профиль по ведомственному сообщению, а не независимая сертификация или реальные параметры оружия. Остались автоматическая доставка RM48U через ТЗМ, дополнительные подтверждённые профили (включая разбор Бука) и игровая визуальная приёмка самого пуска. Issue не закрываю.

🤖 Agent: Codex, при участии GPT-6.1 Terra и GPT-6 Luna. Продолжение в `kimi-work`: [код](https://gitea.maoniao.team/chexit/airdef/commit/d4adbb1e473c94241c9b38f82bb325ba5450d67e). Ручной `/airdef strike` теперь запускает отдельный игровой RM48U-профиль из физического готового С-400. Выбор: наибольший загруженный ударный боезапас → расстояние → стабильный ID. Боеприпас расходуется сразу один раз, позиция игрока не определяет старт; moving/reloading/cooldown/неисправная пусковая исключаются. Четыре ячейки делятся между ПВО и ударными ракетами. `ground-stock` явно задаёт sandbox-запас склада (по умолчанию 0); `ground-load`/`ground-unload` обменивают по одной ракете, сохраняя снятые ракеты ПВО на складе. Данные сохраняются, обычное снабжение не заполняет занятые RM48U ячейки. Есть отдельный model ID, холодный выброс, задержка двигателя/дыма, carrier ID в записи и корректная относительная сетка сэмплов от точки muzzle. Неизвестное фантомное ПВО по-прежнему удалено. Проверены conservation, отказ без склада/носителя, выбор носителя, запрет повторного расхода, save/parser/dirty mark, replay ignition/smoke; настоящий WASM fixture проверяет загрузку/возврат через команды. Это игровой профиль по ведомственному сообщению, а не независимая сертификация или реальные параметры оружия. Остались автоматическая доставка RM48U через ТЗМ, дополнительные подтверждённые профили (включая разбор Бука) и игровая визуальная приёмка самого пуска. Issue не закрываю.
Author
Owner

🤖 Agent: Codex, with GPT-6.1 Terra and GPT-6 Luna.

RM48U orders now reserve the actual S-400 carrier and a loaded cell, animate that cell lid, then spend ammunition exactly once at ejection. Invalidated preparation cancels without spending; pending orders do not resume after world reload. Physical RM48U accelerates after ejection. Transport/replenishment of strike rounds through the TZM remains outstanding.

Pushed code in 966b52f and visual verification/docs in 2689d93 on kimi-work. Core: 169 passed, 7 ignored; 4 scenarios passed. Adapter: 53 tests, 1 boundary test and 4 scenarios passed. Actual WASM contract: 21 steps passed. Implementation and checks

Issue state intentionally unchanged.

🤖 Agent: Codex, with GPT-6.1 Terra and GPT-6 Luna. RM48U orders now reserve the actual S-400 carrier and a loaded cell, animate that cell lid, then spend ammunition exactly once at ejection. Invalidated preparation cancels without spending; pending orders do not resume after world reload. Physical RM48U accelerates after ejection. Transport/replenishment of strike rounds through the TZM remains outstanding. Pushed code in 966b52f and visual verification/docs in 2689d93 on kimi-work. Core: 169 passed, 7 ignored; 4 scenarios passed. Adapter: 53 tests, 1 boundary test and 4 scenarios passed. Actual WASM contract: 21 steps passed. [Implementation and checks](https://gitea.maoniao.team/chexit/airdef/src/branch/kimi-work/docs/BATTERIES-AND-COLD-LAUNCH.md) Issue state intentionally unchanged.
Author
Owner

🤖 Agent: Codex, with three GPT-6.1 Terra agents.

Добавлена физическая доставка одной RM48U из конечного запаса склада через ТЗМ к С-400. Вытесненная ракета ПВО возвращается грузом ТЗМ на склад; generic reload не создаёт ударный боезапас. Заявка, груз и марш сохраняются; оперативное задание восстанавливается после загрузки. Проверены реальное движение Sim.step на плоском WorldSource, передача/возврат, истощение, прерывание, несовместимость, заполненные ячейки, unload, разрушение/repair и полный state_text → apply_state с завершением маршрута.

Неподтверждённые профили Бука и других носителей не добавлялись. Обратный автоматический вывоз RM48U от удалённого носителя и отдельная UI-отмена заявки пока отсутствуют; ground-unload требует склад рядом. Полная визуальная приёмка пуска и сложного маршрута остаётся.

Published on kimi-work through 6e2d661; current docs/handoff: e70d7a6. Combined checks: core release 187 passed + 4 scenarios (7 ignored); adapter 56 + 1 boundary + 4 scenarios; actual WASM 24 steps. Technical handoff, limits and reproduction. Issue state intentionally unchanged.

🤖 Agent: Codex, with three GPT-6.1 Terra agents. Добавлена физическая доставка одной RM48U из конечного запаса склада через ТЗМ к С-400. Вытесненная ракета ПВО возвращается грузом ТЗМ на склад; generic reload не создаёт ударный боезапас. Заявка, груз и марш сохраняются; оперативное задание восстанавливается после загрузки. Проверены реальное движение Sim.step на плоском WorldSource, передача/возврат, истощение, прерывание, несовместимость, заполненные ячейки, unload, разрушение/repair и полный state_text → apply_state с завершением маршрута. Неподтверждённые профили Бука и других носителей не добавлялись. Обратный автоматический вывоз RM48U от удалённого носителя и отдельная UI-отмена заявки пока отсутствуют; ground-unload требует склад рядом. Полная визуальная приёмка пуска и сложного маршрута остаётся. Published on kimi-work through 6e2d661; current docs/handoff: e70d7a6. Combined checks: core release 187 passed + 4 scenarios (7 ignored); adapter 56 + 1 boundary + 4 scenarios; actual WASM 24 steps. [Technical handoff, limits and reproduction](https://gitea.maoniao.team/chexit/airdef/src/branch/kimi-work/docs/CODEX-HANDOFF.md). Issue state intentionally unchanged.
Author
Owner

🤖 Agent: Codex, with GPT-6.1 Terra and GPT-6 Luna.

Обратный вывоз RM48U от удалённого С-400 теперь автоматизирован (bb931ab, e9fbaba, b0085cb; интеграционное исправление 910f02c). ground-unload вдали создаёт резерв одной ракеты от пуска; ТЗМ физически забирает её и возвращает на конечный склад. Ground-cancel отменяет ожидающую доставку/вывоз без телепортации уже забранного груза. Два типизированных места RM48U/48Н6 учитываются отдельно от существующих generic reload-пакетов.

Проверены полное движение Sim.step, save/restore до и после забора, резерв от запуска, отмена, ёмкость, движение/повреждения носителя и ТЗМ, уничтожение/repair. Потеря ракеты с отказавшими ячейками сбрасывает резерв и не создаёт отвергаемый loader-ом save. В формат справа добавлены поля30 ground_return и31 return_cargo, старые saves default=false.

Объединённые core release190+4 и mod60+1boundary+4 прошли. Сложный игровой рельеф и полная визуальная приёмка пуска остаются; неподтверждённые носители не добавлялись. Handoff и команды.

Issue state intentionally unchanged.

🤖 Agent: Codex, with GPT-6.1 Terra and GPT-6 Luna. Обратный вывоз RM48U от удалённого С-400 теперь автоматизирован (bb931ab, e9fbaba, b0085cb; интеграционное исправление 910f02c). ground-unload вдали создаёт резерв одной ракеты от пуска; ТЗМ физически забирает её и возвращает на конечный склад. Ground-cancel отменяет ожидающую доставку/вывоз без телепортации уже забранного груза. Два типизированных места RM48U/48Н6 учитываются отдельно от существующих generic reload-пакетов. Проверены полное движение Sim.step, save/restore до и после забора, резерв от запуска, отмена, ёмкость, движение/повреждения носителя и ТЗМ, уничтожение/repair. Потеря ракеты с отказавшими ячейками сбрасывает резерв и не создаёт отвергаемый loader-ом save. В формат справа добавлены поля30 ground_return и31 return_cargo, старые saves default=false. Объединённые core release190+4 и mod60+1boundary+4 прошли. Сложный игровой рельеф и полная визуальная приёмка пуска остаются; неподтверждённые носители не добавлялись. [Handoff и команды](https://gitea.maoniao.team/chexit/airdef/src/branch/kimi-work/docs/CODEX-HANDOFF.md). Issue state intentionally unchanged.
Author
Owner

🤖 Agent: Codex.

Published cbd6067 and ab737e7: clarified empty typed stock after a user placed a depot next to S-400 and ground-load still failed. Default depot has 0 RM48U; generic reload stock is separate. The error now identifies the nearby empty depot and gives ground-stock syntax; its map card displays typed stock. No ammunition is created by loading or moving the depot. Added core conservation/error regression and actual WASM adjacent-empty-depot feedback assertion (27-step light fixture passed).

Added ground strike guide: own unit IDs versus enemy site IDs, stock setter semantics, one missile per load, shared cells, automatic launch reconnaissance, strike selection, remote delivery/return/cancellation. Issue remains open.

🤖 Agent: Codex. Published cbd6067 and ab737e7: clarified empty typed stock after a user placed a depot next to S-400 and ground-load still failed. Default depot has 0 RM48U; generic reload stock is separate. The error now identifies the nearby empty depot and gives ground-stock syntax; its map card displays typed stock. No ammunition is created by loading or moving the depot. Added core conservation/error regression and actual WASM adjacent-empty-depot feedback assertion (27-step light fixture passed). Added [ground strike guide](https://gitea.maoniao.team/chexit/airdef/src/branch/kimi-work/docs/GROUND-STRIKES.md): own unit IDs versus enemy site IDs, stock setter semantics, one missile per load, shared cells, automatic launch reconnaissance, strike selection, remote delivery/return/cancellation. Issue remains open.
Author
Owner

🤖 Agent: Codex — повторное ревью kimi-work @ 61aaa0bf359026711ba811a7f7e9877ce253ead2.

Отдельный подтверждённый блокер ТЗМ оформлен в #128: невыполнимый возврат RM48U перехватывает свободные машины и блокирует независимые поставки. Native-проверка с контрольным сценарием приложена там.

Ещё небольшой остаток требования «по умолчанию выбирать носитель с наибольшим доступным совместимым запасом»: order_strike исключает последнюю зарезервированную под вывоз ракету при проверке пригодности, но сортирует по сырому ground_rounds, без вычета u32::from(ground_return).

Воспроизведено отдельным native-тестом: обе исправные С-400 имеют по 2 RM48U, у ближайшей 1 зарезервирована заявкой unload_ground_round, у дальней резервирования нет. Свободный запас соответственно 1 и 2. order_strike выбирает ближайшую из-за равенства raw stock. Пример: цель z=500; носители z=400 и z=200; склад далеко, свободная ТЗМ присутствует, cooldown=0. Фактический picked ID совпадает с первым носителем.

Предлагаю при выборе считать свободный запас ground_rounds.saturating_sub(u32::from(ground_return)), а затем применять существующие distance/id tie-breakers. При появлении других резервов учитывать их тем же единым расчётом. Приоритет этого остатка P3; текущий выбор не создаёт боезапас и не разрешает запуск зарезервированной последней ракеты. Новую issue-дубликат #118 не создаю.

Основная физическая цепочка «совместимый носитель → подготовка → вылет → расход typed ammunition» присутствует, в отличие от старого пуска от игрока. Новые замечания не означают, что основное исправление отсутствует.

🤖 Agent: Codex — повторное ревью `kimi-work` @ `61aaa0bf359026711ba811a7f7e9877ce253ead2`. Отдельный подтверждённый блокер ТЗМ оформлен в #128: невыполнимый возврат RM48U перехватывает свободные машины и блокирует независимые поставки. Native-проверка с контрольным сценарием приложена там. Ещё небольшой остаток требования «по умолчанию выбирать носитель с наибольшим доступным совместимым запасом»: `order_strike` исключает последнюю зарезервированную под вывоз ракету при проверке пригодности, но сортирует по сырому `ground_rounds`, без вычета `u32::from(ground_return)`. Воспроизведено отдельным native-тестом: обе исправные С-400 имеют по 2 RM48U, у ближайшей 1 зарезервирована заявкой `unload_ground_round`, у дальней резервирования нет. Свободный запас соответственно 1 и 2. `order_strike` выбирает ближайшую из-за равенства raw stock. Пример: цель z=500; носители z=400 и z=200; склад далеко, свободная ТЗМ присутствует, cooldown=0. Фактический picked ID совпадает с первым носителем. Предлагаю при выборе считать свободный запас `ground_rounds.saturating_sub(u32::from(ground_return))`, а затем применять существующие distance/id tie-breakers. При появлении других резервов учитывать их тем же единым расчётом. Приоритет этого остатка P3; текущий выбор не создаёт боезапас и не разрешает запуск зарезервированной последней ракеты. Новую issue-дубликат #118 не создаю. Основная физическая цепочка «совместимый носитель → подготовка → вылет → расход typed ammunition» присутствует, в отличие от старого пуска от игрока. Новые замечания не означают, что основное исправление отсутствует.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chexit/airdef#118