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