summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/monstuff.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/monstuff.cc')
-rw-r--r--crawl-ref/source/monstuff.cc24
1 files changed, 18 insertions, 6 deletions
diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc
index 7ac60d1343..161f7269a0 100644
--- a/crawl-ref/source/monstuff.cc
+++ b/crawl-ref/source/monstuff.cc
@@ -440,6 +440,7 @@ static void _give_adjusted_experience(monsters *monster, killer_type killer,
const bool no_xp = monster->has_ench(ENCH_ABJ);
const bool already_got_half_xp = testbits(monster->flags, MF_GOT_HALF_XP);
+ bool need_xp_msg = false;
if (created_friendly || was_neutral || no_xp)
; // No experience if monster was created friendly or summoned.
else if (YOU_KILL(killer))
@@ -450,19 +451,30 @@ static void _give_adjusted_experience(monsters *monster, killer_type killer,
else
gain_exp( experience, exp_gain, avail_gain );
- // Give a message for monsters dying out of sight
- if (exp_gain > 0 && !mons_near(monster)
- && you.experience_level == old_lev)
- {
- mpr("You feel a bit more experienced.");
- }
+ if (old_lev == you.experience_level)
+ need_xp_msg = true;
}
else if (pet_kill && !already_got_half_xp)
+ {
+ int old_lev = you.experience_level;
gain_exp( experience / 2 + 1, exp_gain, avail_gain );
+ if (old_lev == you.experience_level)
+ need_xp_msg = true;
+ }
+
+ // Give a message for monsters dying out of sight.
+ if (need_xp_msg && exp_gain > 0
+ && (!mons_near(monster) || !you.can_see(monster)))
+ {
+ mpr("You feel a bit more experienced.");
+ }
+
if (MON_KILL(killer) && !no_xp)
+ {
_give_monster_experience( monster, killer_index, experience,
created_friendly );
+ }
}
static bool _is_pet_kill(killer_type killer, int i)