ZnTor , Если был бы правильный, то условие бы срабатывало, а так получается, что опыт больше чем нужно и по этому идет постоянное условие, от сюда зацикливается.
пример реализации. Создаешь отдельную функцию с массивом количества опыта для перехода на след уровень. Делаешь все тоже самое что и у тебя в коде но сравниваешь с текущим опытом не свой уровень+1, а необходимое количество для перехода из созданной функции. блин логика на уровне детского сада, как тут могут возникнуть проблемы, я хз.