При определении доступности улучшения для покупки алгоритм анализирует массив skill['levels'] и считает, что значение levels должно быть равно текущему уровню улучшения. Но это не так. См. картинку.
В levels хранятся типа этапы с ограничениями. А уже внутри этапа есть значение уровня, с которого он применяется. К примеру, для Питания - skill['levels'][0]['level'] == 5
Из-за этой ошибки Питание до пятого уровня персонажа не будет куплено, хотя оно доступно с 0-го.
При определении доступности улучшения для покупки алгоритм анализирует массив skill['levels'] и считает, что значение levels должно быть равно текущему уровню улучшения. Но это не так. См. картинку. В levels хранятся типа этапы с ограничениями. А уже внутри этапа есть значение уровня, с которого он применяется. К примеру, для Питания - skill['levels'][0]['level'] == 5 Из-за этой ошибки Питание до пятого уровня персонажа не будет куплено, хотя оно доступно с 0-го.