Каждый раз при заходе перетасовывает оружие, и если не проверить, то в бою может сыграть злую шутку
Пытался понять логику работы UI и почему мои пухи меняются местами, пришёл к выводу, что это может быть связано с перемещением предметов из инвентаря в "сумку", т.к. с точки зрения логики, даже объединённый инвентарь считает порядок сначала в инвентаре, затем в сумке; т.е. база тут это миграция предметов, т.к. в инвентаре могут лежать всякие расходки, которые кончаются, освобождая слот внутри инвентаря, затем при быстром и массовом закупе через комку или крафте сосок, забиваются все свободные слоты инвентаря, и при замене пухи через панель предыдущая пуха может найти себе пристанище в сумке, а не в инвентаре.
Хранение информации о том, ЧТО находится в ячейке, лежит на плечах UI панели. Предмет, который привязан к ячейке панели, не обязан запоминать, где его место внутри UI. В программировании (ООП) это называется инкапсуляция.
Возможно, ручное помещение предмета в ячейку на панели, записывается внутри UI как ссылка на определённую ячейку инвентаря или сумки, а не только на сам предмет. Если пуха в ячейку была установлена в момент, когда оружие ещё находилось в инвентаре, а потом при быстром переключении она окажется в сумке, то при повторной загрузке UI (например. при перезаходе) данная ссылка теряется, но в конфиге уже есть инфа о том, что ячейка занята. Тогда UI делает перерасчёт и заполняет "конфликтные" ячейки панели по заранее заготовленному алгоритму - либо меняет предметы местами согласно их порядку в инвентаре-сумке, либо в случае утери оригинала заменяет на предмет такого же типа (например, если кончилась хилка, вместо неё может оказаться банка с маной или аптека), а если заменить нечем - просто сбрасывает ячейку и она оказывается пустой, чтобы клиент игры не улетел во вьетнамскую деревню Кху-Ям, держа в руках светофор.
Всё это лишь моя теория. Как оно работает
я не знаю)))