Поскольку lua изначально не поддерживал UTF-8, то перевод между регистрами работает только для английского языка.
Чтобы поиск предметов в инвентаре работал во всех регистрах, нужно в поиске заменить вызов функции string.lower на кастомную функцию, поддерживающую русскую локаль ru_lower
function ru_lower(text) local lenght = #text local out = '' local i = 1 while i <= lenght do local sym = string.byte(string.sub(text, i, i)) if sym < 128 or i == lenght then out = out .. string.sub(text, i, i) else local symNext = string.byte(string.sub(text, i+1, i+1)) if sym ~= 208 or symNext < 144 or symNext > 175 then out = out .. string.sub(text, i, i+1) else local num = string.byte(string.sub(text, i+1, i+1)) + 32 if num > 191 then out = out .. string.char(209) .. string.char(num-64) else out = out .. string.char(208) .. string.char(num) end end i = i + 1 end i = i + 1 end return string.lower(out) end
В данной функции не учтены случаи присутствия 3-х или 4-х байтных последовательностей UTF-8, поскольку это не вредит функционалу поиска.