diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game-server/character.cpp | 7 | ||||
-rw-r--r-- | src/game-server/character.hpp | 5 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/game-server/character.cpp b/src/game-server/character.cpp index 9e30ca57..1015f438 100644 --- a/src/game-server/character.cpp +++ b/src/game-server/character.cpp @@ -330,7 +330,7 @@ int Character::getAttribute(int attr) const } else { - return mExperience.find(attr)->second; + return Character::levelForExp(mExperience.find(attr)->second); } } @@ -404,6 +404,11 @@ int Character::expForLevel(int level) return int(pow(level, EXPCURVE_EXPONENT) * EXPCURVE_FACTOR); } +int Character::levelForExp(int exp) +{ + return int(pow(float(exp) / EXPCURVE_FACTOR, 1.0f / EXPCURVE_EXPONENT)); +} + void Character::receiveExperience(size_t skill, int experience) { if (skill >= CHAR_ATTR_END) diff --git a/src/game-server/character.hpp b/src/game-server/character.hpp index d90adbf3..da2af285 100644 --- a/src/game-server/character.hpp +++ b/src/game-server/character.hpp @@ -299,6 +299,11 @@ class Character : public Being static int expForLevel(int level); /** + * Returns the level for a given exp + */ + static int levelForExp(int exp); + + /** * Tries to use a character point to increase a * basic attribute */ |