diff --git a/data/xp_data.cpp b/data/xp_data.cpp index a1afc16..270b217 100644 --- a/data/xp_data.cpp +++ b/data/xp_data.cpp @@ -1,19 +1,17 @@ #include "xp_data.h" -int XPData::get_max_level() -{ - return _xp_required.size(); +int XPData::get_max_level() { + return _xp_required.size(); } int XPData::xp_required_for_level(int level) { - ERR_FAIL_COND_V(level < 0, 1); - ERR_FAIL_COND_V(level > _xp_required.size(), 99999999); + ERR_FAIL_INDEX_V(level, _xp_required.size(), 9999999); - return _xp_required.get(level); + return _xp_required.get(level); } bool XPData::can_level_up(int level) { - return level <= _xp_required.size(); + return level < _xp_required.size(); } PoolIntArray XPData::get_xps() { @@ -34,7 +32,6 @@ void XPData::_bind_methods() { ClassDB::bind_method(D_METHOD("xp_required_for_level", "level"), &XPData::xp_required_for_level); ClassDB::bind_method(D_METHOD("can_level_up", "level"), &XPData::can_level_up); - ClassDB::bind_method(D_METHOD("get_xps"), &XPData::get_xps); ClassDB::bind_method(D_METHOD("set_xps", "auras"), &XPData::set_xps); ADD_PROPERTY(PropertyInfo(Variant::POOL_INT_ARRAY, "xps"), "set_xps", "get_xps"); diff --git a/entities/entity.cpp b/entities/entity.cpp index 92cc167..2bfe5fe 100644 --- a/entities/entity.cpp +++ b/entities/entity.cpp @@ -1723,6 +1723,9 @@ void Entity::addc_xp(int value) { } void Entity::slevelup(int value) { + if (_s_level == EntityEnums::MAX_LEVEL) + return; + _s_level += value; son_level_up(value);