Source:SLASH'EM 0.0.7E7F2/eshk.h

Below is the full text to eshk.h from the source code of SLASH'EM 0.0.7E7F2. To link to a particular line, write [[SLASH'EM 0.0.7E7F2/eshk.h#line123 ]], for example.

The latest source code for vanilla NetHack is at Source code.

1.   /*	SCCS Id: @(#)eshk.h	3.4	1997/05/01	*/ 2.   /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3.    /* NetHack may be freely redistributed. See license for details. */ 4.     5.    #ifndef ESHK_H 6.   #define ESHK_H 7.    8.    #define REPAIR_DELAY	5	/* minimum delay between shop damage & repair */ 9.    10.   #define BILLSZ	200 11.   12.   struct bill_x { 13.  	unsigned bo_id; 14.  	boolean useup; 15.  	long price;		/* price per unit */ 16.  	long bquan;		/* amount used up */ 17.  };  18.    19.   struct eshk { 20.  	long robbed;		/* amount stolen by most recent customer */ 21.  	long credit;		/* amount credited to customer */ 22.  	long debit;		/* amount of debt for using unpaid items */ 23.  	long loan;		/* shop-gold picked (part of debit) */ 24.  	int shoptype;		/* the value of rooms[shoproom].rtype */ 25.  	schar shoproom;		/* index in rooms; set by inshop */ 26.  	schar unused;		/* to force alignment for stupid compilers */ 27.  	boolean following;	/* following customer since he owes us sth */ 28.  	boolean surcharge;	/* angry shk inflates prices */ 29.  	coord shk;		/* usual position shopkeeper */ 30.  	coord shd;		/* position shop door */ 31.  	d_level shoplevel;	/* level (& dungeon) of his shop */ 32.  	int billct;		/* no. of entries of bill[] in use */ 33.  	struct bill_x bill[BILLSZ]; 34.  	struct bill_x *bill_p; 35.  	int visitct;		/* nr of visits by most recent customer */ 36.  	char customer[PL_NSIZ];	/* most recent customer */ 37.  	char shknam[PL_NSIZ]; 38.  #ifdef OTHER_SERVICES 39.  	long services;          /* Services offered */ 40.  #define SHK_ID_BASIC    01L 41.  #define SHK_ID_PREMIUM  02L 42.  #define SHK_UNCURSE     010L 43.  #define SHK_APPRAISE    0100L 44.  #define SHK_SPECIAL_A   01000L 45.  #define SHK_SPECIAL_B   02000L 46.  #define SHK_SPECIAL_C   04000L 47.  #endif 48.  };  49.    50.   #define ESHK(mon)	((struct eshk *)&(mon)->mextra[0]) 51.   52.   #define NOTANGRY(mon)	((mon)->mpeaceful) 53.  #define ANGRY(mon)	(!NOTANGRY(mon)) 54.   55.   # ifdef OTHER_SERVICES 56.  #define SHK_NOMATCH     0       /* Shk !know this class of object       */ 57.  #define SHK_MATCH       1       /* Shk is expert                        */ 58.  #define SHK_GENERAL     2       /* Shk runs a general store             */ 59.   60.   /*  61.    * FUNCTION shk_class_match 62.   *  63.    * Return TRUE if a object class matches the shop type. 64.   * I.e. shk_class_match(WEAPON_CLASS, shkp) 65.   *  66.    * Return:      SHK_MATCH, SHK_NOMATCH, SHK_GENERAL 67.   */  68.    69.   #define shk_class_match(class, shkp) \ 70.          ((shtypes[ESHK(shkp)->shoptype-SHOPBASE].symb == RANDOM_CLASS) ? \  71.                   SHK_GENERAL : \  72.            ((shtypes[ESHK(shkp)->shoptype-SHOPBASE].symb == class) ? \ 73.                   SHK_MATCH : SHK_NOMATCH)) 74.  # endif 75.   76.   #endif /* ESHK_H */