Files
nethack/include/context.h
cohrs 231b2b16f8 U453 and buglist item - travel command updates
I wrote to the devteam early last week:
> Given my understanding of travel, it's supposed to be somewhat intelligent,
> and "convenient", and should, therefore avoid walking into water, lava,
> traps, or other things that distant movement would avoid, even if you're
> right next it.  Unless...  the travel destination is the "bad" location
> next to you when the travel starts.
To that end...
- add a context (iflags in 3.4.3 to maintain savefile compat) flag to
differenciate the first travel step from later steps, to allow the
detection of the final sentence, above.
- several changes to set/reset the travel1 flag as needed
- add code to findtravelpath to treat the first step specially if it's
the only step, allowing forced travel into a "bad" location
- correct the "don't travel over traps" code, which was getting confused
because hero's starting location was being avoided
- add code to avoid traveling into water and lava, duplicating
checks used for non-travel running
- fix some strange "guess" travel behavior: avoid zigzag paths when there's
a more direct path (even though the number of moves is the same)
- trunk change adds a new DISP_ALL tmp_at type, and uses it in some debug
code for travel, debug changes not added to the 3.4.3 branch
2003-10-21 02:27:43 +00:00

100 lines
2.9 KiB
C

/* SCCS Id: @(#)context.h 3.4 $Date$ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
/* If you change the context structure make sure you increment EDITLEVEL in */
/* patchlevel.h if needed. */
#ifndef CONTEXT_H
#define CONTEXT_H
#define CONTEXTVERBSZ 30
/*
* The context structure houses things that the game tracks
* or adjusts during the game, to preserve game state or context.
*
* The entire structure is saved with the game.
*
*/
struct dig_info { /* apply.c, hack.c */
int effort;
d_level level;
coord pos;
long lastdigtime;
boolean down, chew, warned, quiet;
};
struct tin_info {
struct obj *tin;
unsigned o_id; /* o_id of tin in save file */
int usedtime, reqtime;
};
struct book_info {
struct obj *book; /* last/current book being xscribed */
unsigned o_id; /* o_id of book in save file */
schar delay; /* moves left for this spell */
};
struct takeoff_info {
long mask;
long what;
int delay;
boolean cancelled_don;
char disrobing[CONTEXTVERBSZ+1];
};
struct victual_info {
struct obj *piece; /* the thing being eaten, or last thing that
* was partially eaten, unless that thing was
* a tin, which uses the tin structure above,
* in which case this should be 0 */
unsigned o_id; /* o_id of food object in save file */
/* doeat() initializes these when piece is valid */
int usedtime, /* turns spent eating */
reqtime; /* turns required to eat */
int nmod; /* coded nutrition per turn */
Bitfield(canchoke,1); /* was satiated at beginning */
/* start_eating() initializes these */
Bitfield(fullwarn,1); /* have warned about being full */
Bitfield(eating,1); /* victual currently being eaten */
Bitfield(doreset,1); /* stop eating at end of turn */
};
struct context_info {
unsigned long warntype; /* warn_of_mon monster type M2 */
unsigned ident; /* social security number for each monster */
unsigned no_of_wizards; /* 0, 1 or 2 (wizard and his shadow) */
unsigned run; /* 0: h (etc), 1: H (etc), 2: fh (etc) */
/* 3: FH, 4: ff+, 5: ff-, 6: FF+, 7: FF- */
/* 8: travel */
int warnlevel;
int djinni_count, ghost_count; /* potion effect tuning */
long stethoscope_move;
short stethoscope_movement;
boolean travel; /* find way automatically to u.tx,u.ty */
boolean travel1; /* first travel step */
boolean forcefight;
boolean nopick; /* do not pickup objects (as when running) */
boolean made_amulet;
boolean mon_moving; /* monsters' turn to move */
boolean move;
boolean mv;
boolean bypasses; /* bypass flag is set on at least one fobj */
boolean botl; /* partially redo status line */
boolean botlx; /* print an entirely new bottom line */
struct dig_info digging;
struct victual_info victual;
struct tin_info tin;
struct book_info spbook;
struct takeoff_info takeoff;
};
extern NEARDATA struct context_info context;
#endif /* CONTEXT_H */