diff options
author | Bardur Arantsson <bardur@scientician.net> | 2015-02-23 09:11:56 +0100 |
---|---|---|
committer | Bardur Arantsson <bardur@scientician.net> | 2015-02-23 09:11:56 +0100 |
commit | cd7be5b3001b8251545af526ee6a3ee15562c930 (patch) | |
tree | 88e23b156380c6f738e3e40cc49017c91ffdb1be /src/monster2.cc | |
parent | a07a80ac3cf4cd61a91f25092342142cc68894b1 (diff) |
Rework MONSTER_EXP into a function
Diffstat (limited to 'src/monster2.cc')
-rw-r--r-- | src/monster2.cc | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/monster2.cc b/src/monster2.cc index 6cb9a19a..21cb790a 100644 --- a/src/monster2.cc +++ b/src/monster2.cc @@ -13,12 +13,19 @@ #include "angband.h" #include "hooks.h" +#include <algorithm> #include <string> #define MAX_HORROR 20 #define MAX_FUNNY 22 #define MAX_COMMENT 5 +s32b monster_exp(s16b level) +{ + s32b capped_level = std::min(level, static_cast<s16b>(MONSTER_LEVEL_MAX)); + return (capped_level * capped_level * capped_level * 6); +} + /* Monster gain a few levels ? */ void monster_check_experience(int m_idx, bool_ silent) { @@ -31,7 +38,7 @@ void monster_check_experience(int m_idx, bool_ silent) /* Gain levels while possible */ while ((m_ptr->level < MONSTER_LEVEL_MAX) && - (m_ptr->exp >= (u32b)(MONSTER_EXP(m_ptr->level + 1)))) + (m_ptr->exp >= monster_exp(m_ptr->level + 1))) { /* Gain a level */ m_ptr->level++; @@ -98,7 +105,7 @@ void monster_set_level(int m_idx, int level) if (m_ptr->level < level) { - m_ptr->exp = MONSTER_EXP(level); + m_ptr->exp = monster_exp(level); monster_check_experience(m_idx, TRUE); } } @@ -2525,7 +2532,7 @@ s16b place_monster_one(int y, int x, int r_idx, int ego, bool_ slp, int status) m_ptr->ac = r_ptr->ac; m_ptr->level = r_ptr->level; m_ptr->speed = r_ptr->speed; - m_ptr->exp = MONSTER_EXP(m_ptr->level); + m_ptr->exp = monster_exp(m_ptr->level); /* Extract the monster base speed */ m_ptr->mspeed = m_ptr->speed; |