Wikia

Wikihack

Source:Region.h

2,032pages on
this wiki
Talk0

Below is the full text to include/region.h from NetHack 3.4.3. To link to a particular line, write [[region.h#line123]], for example.

1.    /*	SCCS Id: @(#)region.h	3.4	2002/10/15	*/
2.    /* Copyright (c) 1996 by Jean-Christophe Collet			  */
3.    /* NetHack may be freely redistributed.  See license for details. */
4.    
The NetHack General Public License applies to screenshots, source code and other content from NetHack.
5.    #ifndef REGION_H
6.    #define REGION_H
7.    
8.    /* generic callback function */
9.    
10.   typedef boolean FDECL((*callback_proc), (genericptr_t, genericptr_t));
11.   
12.   /*
13.    * Overload the old player_inside field with two values, coded in such
14.    * a way as to retain compatibility with 3.4.0 save and bones files;
15.    * this relies on the fact that nethack's `boolean' is really stored
16.    * in a `char' (or bigger type) rather than in a single bit.
17.    *
18.    * 3.4.1 save and bones files will be correct.
19.    * 3.4.0 save files restored under 3.4.1 will be correct.
20.    * 3.4.0 bones files used with 3.4.1 will continue to have the minor
21.    *	 3.4.0 bug of falsely claiming that the current game's hero is
22.    *	 responsible for the dead former hero's stinking clouds.
23.    */
24.   #define REG_HERO_INSIDE	1
25.   #define REG_NOT_HEROS	2
26.   #define hero_inside(r)	((unsigned)(r)->player_flags & REG_HERO_INSIDE)
27.   #define heros_fault(r)	(!((unsigned)(r)->player_flags & REG_NOT_HEROS))
28.   #define set_hero_inside(r)	((r)->player_flags |= REG_HERO_INSIDE)
29.   #define clear_hero_inside(r)	((r)->player_flags &= ~REG_HERO_INSIDE)
30.   #define set_heros_fault(r)	((r)->player_flags &= ~REG_NOT_HEROS)
31.   #define clear_heros_fault(r)	((r)->player_flags |= REG_NOT_HEROS)
32.   
33.   typedef struct {
34.     NhRect bounding_box;		/* Bounding box of the region */
35.     NhRect *rects;		/* Rectangles composing the region */
36.     short  nrects;		/* Number of rectangles  */
37.     boolean attach_2_u;		/* Region attached to player ? */
38.     unsigned int attach_2_m;	/* Region attached to monster ? */
39.     /*struct obj *attach_2_o;*/	/* Region attached to object ? UNUSED YET */
40.     const char* enter_msg;	/* Message when entering */
41.     const char* leave_msg;	/* Message when leaving */
42.     short  ttl;			/* Time to live. -1 is forever */
43.     short expire_f;		/* Function to call when region's ttl expire */
44.     short can_enter_f;		/* Function to call to check wether the player
45.   				   can, or can not, enter the region */
46.     short enter_f;		/* Function to call when the player enters*/
47.     short can_leave_f;		/* Function to call to check wether the player
48.   				   can, or can not, leave the region */
49.     short leave_f;		/* Function to call when the player leaves */
50.     short inside_f;		/* Function to call every turn if player's
51.   				   inside */
52.     boolean player_flags;	/* (see above) */
53.     unsigned int* monsters;	/* Monsters currently inside this region */
54.     short n_monst;		/* Number of monsters inside this region */
55.     short max_monst;		/* Maximum number of monsters that can be
56.   				   listed without having to grow the array */
57.   #define MONST_INC	5
58.   
59.     /* Should probably do the same thing about objects */
60.   
61.     boolean visible;		/* Is the region visible ? */
62.     int glyph;			/* Which glyph to use if visible */
63.     genericptr_t arg;		/* Optional user argument (Ex: strength of
64.   				   force field, damage of a fire zone, ...*/
65.   } NhRegion;
66.   
67.   #endif /* REGION_H */

Around Wikia's network

Random Wiki