… | |
… | |
16 | |
16 | |
17 | You should have received a copy of the GNU General Public License |
17 | You should have received a copy of the GNU General Public License |
18 | along with this program; if not, write to the Free Software |
18 | along with this program; if not, write to the Free Software |
19 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
19 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
20 | |
20 | |
21 | The authors can be reached via e-mail at crossfire-devel@real-time.com |
21 | The authors can be reached via e-mail at crossfire@schmorp.de |
22 | */ |
22 | */ |
23 | |
23 | |
24 | /* This file is best viewed with a window width of about 100 character */ |
24 | /* This file is best viewed with a window width of about 100 character */ |
25 | |
25 | |
26 | /* This file is really too large. With all the .h files |
26 | /* This file is really too large. With all the .h files |
… | |
… | |
43 | * The following should still hopefully result in an error. |
43 | * The following should still hopefully result in an error. |
44 | */ |
44 | */ |
45 | error - Your ANSI C compiler should be defining __STDC__; |
45 | error - Your ANSI C compiler should be defining __STDC__; |
46 | #endif |
46 | #endif |
47 | |
47 | |
48 | #ifndef WIN32 /* ---win32 exclude unix configuration part */ |
|
|
49 | # include <autoconf.h> |
48 | #include <autoconf.h> |
50 | #endif |
|
|
51 | |
49 | |
52 | #define FONTDIR "" |
50 | #define FONTDIR "" |
53 | #define FONTNAME "" |
51 | #define FONTNAME "" |
54 | |
52 | |
55 | /* Decstations have trouble with fabs()... */ |
53 | /* Decstations have trouble with fabs()... */ |
… | |
… | |
382 | #define PU_READABLES 0x00400000 |
380 | #define PU_READABLES 0x00400000 |
383 | #define PU_MAGIC_DEVICE 0x00800000 |
381 | #define PU_MAGIC_DEVICE 0x00800000 |
384 | |
382 | |
385 | #define PU_NOT_CURSED 0x01000000 |
383 | #define PU_NOT_CURSED 0x01000000 |
386 | #define PU_JEWELS 0x02000000 |
384 | #define PU_JEWELS 0x02000000 |
|
|
385 | #define PU_FLESH 0x04000000 |
387 | |
386 | |
388 | |
387 | |
389 | /* Instead of using arbitrary constants for indexing the |
388 | /* Instead of using arbitrary constants for indexing the |
390 | * freearr, add these values. <= SIZEOFFREE1 will get you |
389 | * freearr, add these values. <= SIZEOFFREE1 will get you |
391 | * within 1 space. <= SIZEOFFREE2 wll get you withing |
390 | * within 1 space. <= SIZEOFFREE2 wll get you withing |
… | |
… | |
426 | * flags[2] is 64 to 95 |
425 | * flags[2] is 64 to 95 |
427 | * flags[3] is 96 to 127 |
426 | * flags[3] is 96 to 127 |
428 | */ |
427 | */ |
429 | |
428 | |
430 | /* Basic routines to do above */ |
429 | /* Basic routines to do above */ |
431 | #define SET_FLAG(xyz, p) \ |
430 | #define SET_FLAG(obj, flag) (obj)->flags[flag] = 1 |
432 | ((xyz)->flags[p/32] |= (1U << (p % 32))) |
431 | #define CLEAR_FLAG(obj, flag) (obj)->flags[flag] = 0 |
433 | #define CLEAR_FLAG(xyz, p) \ |
432 | #define QUERY_FLAG(obj, flag) (obj)->flags[flag] |
434 | ((xyz)->flags[p/32] &= ~(1U << (p % 32))) |
|
|
435 | #define QUERY_FLAG(xyz, p) \ |
|
|
436 | ((xyz)->flags[p/32] & (1U << (p % 32))) |
|
|
437 | #define COMPARE_FLAGS(p,q) \ |
|
|
438 | ( \ |
|
|
439 | ((p)->flags[0] == (q)->flags[0]) && \ |
|
|
440 | ((p)->flags[1] == (q)->flags[1]) && \ |
|
|
441 | ((p)->flags[2] == (q)->flags[2]) && \ |
|
|
442 | ((p)->flags[3] == (q)->flags[3]) \ |
|
|
443 | ) |
|
|
444 | |
433 | |
445 | /* convenience macros to determine what kind of things we are dealing with */ |
434 | /* convenience macros to determine what kind of things we are dealing with */ |
446 | |
435 | |
447 | #define IS_WEAPON(op) \ |
436 | #define IS_WEAPON(op) \ |
448 | (op->type == ARROW || op->type == BOW || op->type == WEAPON) |
437 | (op->type == ARROW || op->type == BOW || op->type == WEAPON) |
… | |
… | |
1031 | * |
1020 | * |
1032 | * 0.94.2 - you probably shouldn't need to change any of the rand stuff |
1021 | * 0.94.2 - you probably shouldn't need to change any of the rand stuff |
1033 | * here. |
1022 | * here. |
1034 | */ |
1023 | */ |
1035 | |
1024 | |
1036 | #ifdef HAVE_SRANDOM |
|
|
1037 | # define RANDOM() random() |
1025 | #define RANDOM() random() |
1038 | # define SRANDOM(xyz) srandom(xyz) |
1026 | #define SRANDOM(xyz) srandom(xyz) |
1039 | #else |
|
|
1040 | # ifdef HAVE_SRAND48 |
|
|
1041 | # define RANDOM() lrand48() |
|
|
1042 | # define SRANDOM(xyz) srand48(xyz) |
|
|
1043 | # else |
|
|
1044 | # ifdef HAVE_SRAND |
|
|
1045 | # define RANDOM() rand() |
|
|
1046 | # define SRANDOM(xyz) srand(xyz) |
|
|
1047 | # else |
|
|
1048 | # error "Could not find a usable random routine" |
|
|
1049 | # endif |
|
|
1050 | # endif |
|
|
1051 | #endif |
|
|
1052 | |
1027 | |
1053 | /* Returns the weight of the given object. Note: it does not take the number of |
1028 | /* Returns the weight of the given object. Note: it does not take the number of |
1054 | * items (nrof) into account. |
1029 | * items (nrof) into account. |
1055 | */ |
1030 | */ |
1056 | #define WEIGHT(op) (op->nrof?op->weight:op->weight+op->carrying) |
1031 | #define WEIGHT(op) (op->nrof?op->weight:op->weight+op->carrying) |