1 /* NetHack 3.6 attrib.h $NHDT-Date: 1432512779 2015/05/25 00:12:59 $ $NHDT-Branch: master $:$NHDT-Revision: 1.8 $ */ 2 /* Copyright 1988, Mike Stephenson */ 3 /* NetHack may be freely redistributed. See license for details. */ 4 5 /* attrib.h - Header file for character class processing. */ 6 7 #ifndef ATTRIB_H 8 #define ATTRIB_H 9 10 enum attrib_types { 11 A_STR = 0, 12 A_INT, 13 A_WIS, 14 A_DEX, 15 A_CON, 16 A_CHA, 17 18 A_MAX /* used in rn2() selection of attrib */ 19 }; 20 21 #define ABASE(x) (u.acurr.a[x]) 22 #define ABON(x) (u.abon.a[x]) 23 #define AEXE(x) (u.aexe.a[x]) 24 #define ACURR(x) (acurr(x)) 25 #define ACURRSTR (acurrstr()) 26 /* should be: */ 27 /* #define ACURR(x) (ABON(x) + ATEMP(x) + (Upolyd ? MBASE(x) : ABASE(x)) */ 28 #define MCURR(x) (u.macurr.a[x]) 29 #define AMAX(x) (u.amax.a[x]) 30 #define MMAX(x) (u.mamax.a[x]) 31 32 #define ATEMP(x) (u.atemp.a[x]) 33 #define ATIME(x) (u.atime.a[x]) 34 35 /* KMH -- Conveniences when dealing with strength constants */ 36 #define STR18(x) (18 + (x)) /* 18/xx */ 37 #define STR19(x) (100 + (x)) /* For 19 and above */ 38 39 struct attribs { 40 schar a[A_MAX]; 41 }; 42 43 #define ATTRMAX(x) \ 44 ((x == A_STR && Upolyd && strongmonst(youmonst.data)) \ 45 ? STR18(100) \ 46 : urace.attrmax[x]) 47 #define ATTRMIN(x) (urace.attrmin[x]) 48 49 #endif /* ATTRIB_H */ 50