status updating
I've noticed (with curses interface) that there are a lot of update_status(BL_FLUSH) calls when nothing on the status lines has changed. It happens while just wondering around, not due to deliberate botlx update. This eliminates one of the causes. Updating hero's experience points or score (via u.urexp) was requesting a bottom lines refresh even if the relevant options to see those changed values was off. The botl code would send a flush directive even though nothing visible was modified. (I have a fix for that too, but am holding back while hoping to find some of the other causes of unnecessary botl requests.)
This commit is contained in:
31
src/exper.c
31
src/exper.c
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 exper.c $NHDT-Date: 1544917599 2018/12/15 23:46:39 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.31 $ */
|
||||
/* NetHack 3.6 exper.c $NHDT-Date: 1553296396 2019/03/22 23:13:16 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.32 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/*-Copyright (c) Robert Patrick Rankin, 2007. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
@@ -161,24 +161,31 @@ void
|
||||
more_experienced(exper, rexp)
|
||||
register int exper, rexp;
|
||||
{
|
||||
long newexp = u.uexp + exper;
|
||||
long rexpincr = 4 * exper + rexp;
|
||||
long newrexp = u.urexp + rexpincr;
|
||||
long oldexp = u.uexp,
|
||||
oldrexp = u.urexp,
|
||||
newexp = oldexp + exper,
|
||||
rexpincr = 4 * exper + rexp,
|
||||
newrexp = oldrexp + rexpincr;
|
||||
|
||||
/* cap experience and score on wraparound */
|
||||
if (newexp < 0 && exper > 0)
|
||||
newexp = LONG_MAX;
|
||||
if (newrexp < 0 && rexpincr > 0)
|
||||
newrexp = LONG_MAX;
|
||||
u.uexp = newexp;
|
||||
u.urexp = newrexp;
|
||||
|
||||
if (exper
|
||||
if (newexp != oldexp) {
|
||||
u.uexp = newexp;
|
||||
if (flags.showexp)
|
||||
context.botl = TRUE;
|
||||
}
|
||||
/* newrexp will always differ from oldrexp unless they're LONG_MAX */
|
||||
if (newrexp != oldrexp) {
|
||||
u.urexp = newrexp;
|
||||
#ifdef SCORE_ON_BOTL
|
||||
|| flags.showscore
|
||||
if (flags.showscore)
|
||||
context.botl = TRUE;
|
||||
#endif
|
||||
)
|
||||
context.botl = 1;
|
||||
}
|
||||
if (u.urexp >= (Role_if(PM_WIZARD) ? 1000 : 2000))
|
||||
flags.beginner = 0;
|
||||
}
|
||||
@@ -243,7 +250,7 @@ const char *drainer; /* cause of death, if drain should be fatal */
|
||||
rehumanize();
|
||||
}
|
||||
|
||||
context.botl = 1;
|
||||
context.botl = TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -303,7 +310,7 @@ boolean incr; /* true iff via incremental experience growth */
|
||||
adjabil(u.ulevel - 1, u.ulevel); /* give new intrinsics */
|
||||
reset_rndmonst(NON_PM); /* new monster selection */
|
||||
}
|
||||
context.botl = 1;
|
||||
context.botl = TRUE;
|
||||
}
|
||||
|
||||
/* compute a random amount of experience points suitable for the hero's
|
||||
|
||||
Reference in New Issue
Block a user