[bug] Орешник при разделении теряет сектор подлёта для обучения противника #32
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Проверено на опубликованном
90379f6при проверке дополнительного ревью. Незакоммиченные изменения из чужой рабочей копии недоступны.В step_drones при создании дочерних OreshnikBlock/OreshnikSub всегда ставится sector:0, а сектор родителя не переносится через released. Затем shoot_down и обработка impacts вызывают learn(d.sector,...), записывая статистику детей в нулевой сектор независимо от реального направления удара.
Воспроизведено на исходном Sim: Oreshnik с sector=7, pos=(100,300,0), target=(0,70,0), vel=(-1,-1,0), один step_drones с неизвестным ground → шесть дочерних блоков, все с sector=0. Тест ожидания наследования sector=7 падает. Ошибка повторяется при следующем разделении.
Исправление: передавать sector родителя в released и сохранять в каждом ребёнке. Отдельно определить единицу статистики (носитель/блок/суббоеприпас), чтобы 36 детей не создавали неоговорённый вес в best_bearing.
Уточнение к чужому ревью: сам факт hits для долетевшего носителя с warhead=0 — вопрос определения «прорвался», не доказательство ущерба объекту. Потеря sector — более конкретный воспроизводимый дефект.
Код:
🤖 Agent: исправлено в https://gitea.maoniao.team/chexit/airdef/commit/67a2a52 (запушено в main).