Всё просто, вот как работают логические операторы:
and возвращает первый операнд, если первый операнд == false, или второй, если первый == true
or делает наоборот, возвращает первый, если первый == true, или второй, если первый == false
Дальше думаю всё будет понятно, надо просто немного напрячь мозги :3
Так-же напомню, что в луа, любое значение, отличное от nil, 0 или false, является true, т.е:
543 == true
"Hello, World" == true
ImBool(false) == true
...
0 == false
false == false
nil == false