diff options
author | Chuck Miller <shadowmil@gmail.com> | 2009-07-03 23:51:10 -0400 |
---|---|---|
committer | Chuck Miller <shadowmil@gmail.com> | 2009-07-03 23:51:10 -0400 |
commit | 6898cb109e9d7ee4ff9c9d9648e95b79544f6405 (patch) | |
tree | 291ef704b7dc55b63abc974940b23ae9bc4bf4ab /src/game-server/character.cpp | |
parent | c8772d145ea5db993a0d9ebc78f55b977dab1973 (diff) | |
download | manaserv-6898cb109e9d7ee4ff9c9d9648e95b79544f6405.tar.gz manaserv-6898cb109e9d7ee4ff9c9d9648e95b79544f6405.tar.xz manaserv-6898cb109e9d7ee4ff9c9d9648e95b79544f6405.zip |
Helps fix one issue with skill levels
It seems players skill random get a lot of exp in random, unused skill IDs
Diffstat (limited to 'src/game-server/character.cpp')
-rw-r--r-- | src/game-server/character.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/game-server/character.cpp b/src/game-server/character.cpp index 9e30ca5..1015f43 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) |