Решили: GameplaySuppressed гасит события, НАЧИНАЮЩИЕ взаимодействие, и не трогает те, что его
завершают. Отпускание указателя пропускается всегда — как и Escape; решение «что делать с
завершением» принимает подписчик.
Почему: глушение вводилось против новых действий поверх открытой консоли или модального экрана. Но подписчики отпускания состояние не заводят, а СБРАСЫВАЮТ: снимают протяжку бойца, снимают зажатие карты. Съеденное отпускание оставляет сброс несделанным — боец висит «в руке» и встаёт на поле от следующего постороннего клика, уже без всякой протяжки. Отвергнутый вариант «оставить гейт, а залипший драг чистить на следующем нажатии» лечит симптом позже момента поломки и требует помнить о нём в каждом новом подписчике.
Грабли: пропустить отпускание мало. Если просто снять гейт, боец встанет по курсору, который игрок к тому моменту увёл в консоль. Поэтому событие доходит всегда, но при заглушённом вводе расстановка трактует его как отмену: состояние снимается, постановка не выполняется.
Владелец правды: InputService.OnPointerReleased (комментарий у гейта),
DeploymentController.OnPointerReleased.