.ds h0 "NetHack Guidebook
.ds h1
.ds h2 %
-.ds vr "NetHack 3.6
+.ds vr "NetHack 3.7
.ds f0 "\*(vr
.ds f1
- .ds f2 "November 17, 2019
+ .ds f2 "November 27, 2019
.
.\" A note on some special characters:
.\" \(lq = left double quote
#define PARANOID_REMOVE 0x0040
#define PARANOID_BREAKWAND 0x0080
#define PARANOID_WERECHANGE 0x0100
+ #define PARANOID_EATING 0x0200
int pickup_burden; /* maximum burden before prompt */
int pile_limit; /* controls feedback when walking over objects */
+ char sortloot; /* 'n'=none, 'l'=loot (pickup), 'f'=full ('l'+invent) */
char inv_order[MAXOCLASSES];
char pickup_types[MAXOCLASSES];
#define NUM_DISCLOSURE_OPTIONS 6 /* i,a,v,g,c,o (decl.c) */
*/
#include "hack.h"
-STATIC_DCL void FDECL(show_mon_or_warn, (int, int, int));
-STATIC_DCL void FDECL(display_monster,
++static void FDECL(show_mon_or_warn, (int, int, int));
+static void FDECL(display_monster,
(XCHAR_P, XCHAR_P, struct monst *, int, XCHAR_P));
-STATIC_DCL int FDECL(swallow_to_glyph, (int, int));
-STATIC_DCL void FDECL(display_warning, (struct monst *));
+static int FDECL(swallow_to_glyph, (int, int));
+static void FDECL(display_warning, (struct monst *));
-STATIC_DCL int FDECL(check_pos, (int, int, int));
-STATIC_DCL int FDECL(get_bk_glyph, (XCHAR_P, XCHAR_P));
-STATIC_DCL int FDECL(tether_glyph, (int, int));
+static int FDECL(check_pos, (int, int, int));
+static int FDECL(get_bk_glyph, (XCHAR_P, XCHAR_P));
+static int FDECL(tether_glyph, (int, int));
/*#define WA_VERBOSE*/ /* give (x,y) locations for all "bad" spots */
#ifdef WA_VERBOSE
_map_location(x, y, show);
}
-STATIC_OVL void
+ /* display something on monster layer; may need to fixup object layer */
++static void
+ show_mon_or_warn(x, y, monglyph)
+ int x, y, monglyph;
+ {
+ struct obj *o;
+
+ /* "remembered, unseen monster" is tracked by object layer so if we're
+ putting something on monster layer at same spot, stop remembering
+ that; if an object is in view there, start remembering it instead */
+ if (glyph_is_invisible(levl[x][y].glyph)) {
+ unmap_object(x, y);
+ if (cansee(x, y) && (o = vobj_at(x, y)) != 0)
+ map_object(o, FALSE);
+ }
+
+ show_glyph(x, y, monglyph);
+ }
+
#define DETECTED 2
#define PHYSICALLY_SEEN 1
#define is_worm_tail(mon) ((mon) && ((x != (mon)->mx) || (y != (mon)->my)))
/* Have lesshungry() report when you're nearly full so all eating
* warns when you're about to choke.
*/
- if (u.uhunger >= 1500) {
- if (!g.context.victual.eating
- || (g.context.victual.eating && !g.context.victual.fullwarn)) {
- pline("You're having a hard time getting all of it down.");
- g.nomovemsg = "You're finally finished.";
- if (!g.context.victual.eating) {
- g.multi = -2;
- } else {
- g.context.victual.fullwarn = TRUE;
- if (g.context.victual.canchoke
- && g.context.victual.reqtime > 1) {
- /* a one-gulp food will not survive a stop */
- if (yn_function("Continue eating?", ynchars, 'n')
- != 'y') {
- reset_eat();
- g.nomovemsg = (char *) 0;
- }
+ if (u.uhunger >= 1500
- && (!context.victual.eating
- || (context.victual.eating && !context.victual.fullwarn))) {
++ && (!g.context.victual.eating
++ || (g.context.victual.eating && !g.context.victual.fullwarn))) {
+ pline("You're having a hard time getting all of it down.");
- nomovemsg = "You're finally finished.";
- if (!context.victual.eating) {
- multi = -2;
++ g.nomovemsg = "You're finally finished.";
++ if (!g.context.victual.eating) {
++ g.multi = -2;
+ } else {
- context.victual.fullwarn = TRUE;
- if (context.victual.canchoke && context.victual.reqtime > 1) {
++ g.context.victual.fullwarn = TRUE;
++ if (g.context.victual.canchoke && g.context.victual.reqtime > 1) {
+ /* a one-gulp food will not survive a stop */
+ if (!paranoid_query(ParanoidEating, "Continue eating?")) {
+ reset_eat();
- nomovemsg = (char *) 0;
++ g.nomovemsg = (char *) 0;
}
}
}
if (iflags.num_pad) {
ret = '7';
} else {
- ret = 'y';
- ret = !Cmd.swap_yz ? 'y' : 'z';
++ ret = !g.Cmd.swap_yz ? 'y' : 'z';
}
break;
- #endif /* KEY_A1 */
#ifdef KEY_A3
case KEY_A3:
+ #endif
+ case KEY_PPAGE:
if (iflags.num_pad) {
ret = '9';
} else {