==
и or
работают как математические операторы в том смысле, что они оцениваются по одному, а ==
вычисляется первым. Если accept
равно 'no'
, accept=="YES" or "yes"
будет оцениваться так:
(accept == "YES") or "yes"
('no' == "YES") or "yes"
false or "yes"
"yes"
В Lua все значения, кроме nil
и false
, являются правдивыми, поэтому ваш блок if
всегда будет работать вместо вашего elseif
блока.
Как сказано в комментариях, accept:upper()=="YES"
это исправит. accept:upper()
возвращает строку, в которой все буквы accept
преобразуются в верхний регистр, поэтому вам нужно сравнить только одно значение.