(drainer==NULL) resets a level 1 character to 0 experience points
without reducing level and that isn't fatal so suppress the message
in that situation */
- if (u.ulevel > 1 || drainer)
- pline("%s level %d.", Goodbye(), u.ulevel);
+ if (u.ulevel > 1 || drainer) {
+ urgent_pline("%s level %d.", Goodbye(), u.ulevel);
+ SoundAchievement(0, sa2_xpleveldown, 0);
+ /* issue --More-- so that player acknowleges the loss in level
+ and also to give the sound effect enough time to play */
+ display_nhwindow(WIN_MESSAGE, TRUE);
+ }
if (u.ulevel > 1) {
u.ulevel -= 1;
/* remove intrinsic abilities */
adjabil(u.ulevel + 1, u.ulevel);
livelog_printf(LL_MINORAC, "lost experience level %d", u.ulevel + 1);
- SoundAchievement(0, sa2_xpleveldown, 0);
} else {
if (drainer) {
gk.killer.format = KILLED_BY;
Strcpy(gk.killer.name, drainer);
done(DIED);
}
- /* no drainer or lifesaved */
+ /* no drainer or else lifesaved */
u.uexp = 0;
livelog_printf(LL_MINORAC, "lost all experience");
}
u.uexp = newuexp(u.ulevel);
}
++u.ulevel;
- pline("Welcome %sto experience level %d.",
- (u.ulevelmax < u.ulevel) ? "" : "back ",
- u.ulevel);
+ urgent_pline("Welcome %sto experience level %d.",
+ (u.ulevelmax < u.ulevel) ? "" : "back ", u.ulevel);
+ SoundAchievement(0, sa2_xplevelup, 0);
+ /* issue --More-- so that player acknowleges the gain in level
+ and also to give the sound effect enough time to play */
+ display_nhwindow(WIN_MESSAGE, TRUE);
if (u.ulevelmax < u.ulevel)
u.ulevelmax = u.ulevel;
adjabil(u.ulevel - 1, u.ulevel); /* give new intrinsics */
- SoundAchievement(0, sa2_xplevelup, 0);
+
old_ach_cnt = count_achievements();
newrank = xlev_to_rank(u.ulevel);
if (newrank > oldrank)