Решили: GameplaySuppressed гасит события, НАЧИНАЮЩИЕ взаимодействие, и не трогает те, что его завершают. Отпускание указателя пропускается всегда — как и Escape; решение «что делать с завершением» принимает подписчик.

Почему: глушение вводилось против новых действий поверх открытой консоли или модального экрана. Но подписчики отпускания состояние не заводят, а СБРАСЫВАЮТ: снимают протяжку бойца, снимают зажатие карты. Съеденное отпускание оставляет сброс несделанным — боец висит «в руке» и встаёт на поле от следующего постороннего клика, уже без всякой протяжки. Отвергнутый вариант «оставить гейт, а залипший драг чистить на следующем нажатии» лечит симптом позже момента поломки и требует помнить о нём в каждом новом подписчике.

Грабли: пропустить отпускание мало. Если просто снять гейт, боец встанет по курсору, который игрок к тому моменту увёл в консоль. Поэтому событие доходит всегда, но при заглушённом вводе расстановка трактует его как отмену: состояние снимается, постановка не выполняется.

Владелец правды: InputService.OnPointerReleased (комментарий у гейта), DeploymentController.OnPointerReleased.