Make the variadic functions look more like ordinary code rather than
have the function opening brace be hidden inside the VA_DECL() macro.
That brace is still there, but VA_DECL() now needs to be followed by
a visible brace (which introduces a nested block rather than the
start of the funciton). VA_END() now provides a hidden closing brace
to end the nested block, and the existing closing brace still matches
the one in VA_DECL().
Sample usage:
void foo VA_DECL(int, arg) --macro expansion has a hidden opening brace
{ --new, explicit opening brace (actually introduces a nested block)
VA_START(bar);
...code for foo...
VA_END(); --expansion now provides a closing brace for the nested block
} --existing closing brace, still pairs with the hidden one in VA_DECL()
This should help if/when another round of reformatting ever takes place,
and also with editors or other tools that do brace/bracket/parenthesis
matching.
I had forgotten that there were variadic functions in sys/* and ended
up modifying a lot more files than intended. The majority of changes
to those just inserted a new '{' line so that revised VA_END()'s '}'
won't introduce a syntax error. A couple of them needed VA_END() moved
so that local variables wouldn't go out of scope too soon. Only the
Unix ones have been tested.
8239 lines
191 KiB
OpenEdge ABL
8239 lines
191 KiB
OpenEdge ABL
# 1 "lev_main.c"
|
|
# 1 "<built-in>"
|
|
# 1 "<command line>"
|
|
# 1 "lev_main.c"
|
|
# 14 "lev_main.c"
|
|
# 1 "../include/hack.h" 1
|
|
# 11 "../include/hack.h"
|
|
# 1 "../include/config.h" 1
|
|
# 39 "../include/config.h"
|
|
# 1 "../include/config1.h" 1
|
|
# 40 "../include/config.h" 2
|
|
# 345 "../include/config.h"
|
|
# 1 "../include/tradstdc.h" 1
|
|
# 88 "../include/tradstdc.h"
|
|
# 1 "/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h" 1 3 4
|
|
# 43 "/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h" 3 4
|
|
typedef __builtin_va_list __gnuc_va_list;
|
|
# 105 "/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h" 3 4
|
|
typedef __gnuc_va_list va_list;
|
|
# 89 "../include/tradstdc.h" 2
|
|
# 222 "../include/tradstdc.h"
|
|
typedef void * genericptr_t;
|
|
# 346 "../include/config.h" 2
|
|
# 359 "../include/config.h"
|
|
typedef signed char schar;
|
|
# 373 "../include/config.h"
|
|
typedef unsigned char uchar;
|
|
# 443 "../include/config.h"
|
|
# 1 "../include/global.h" 1
|
|
# 9 "../include/global.h"
|
|
# 1 "/usr/include/stdio.h" 1 3 4
|
|
# 64 "/usr/include/stdio.h" 3 4
|
|
# 1 "/usr/include/_types.h" 1 3 4
|
|
# 27 "/usr/include/_types.h" 3 4
|
|
# 1 "/usr/include/sys/_types.h" 1 3 4
|
|
# 32 "/usr/include/sys/_types.h" 3 4
|
|
# 1 "/usr/include/sys/cdefs.h" 1 3 4
|
|
# 33 "/usr/include/sys/_types.h" 2 3 4
|
|
# 1 "/usr/include/machine/_types.h" 1 3 4
|
|
# 34 "/usr/include/machine/_types.h" 3 4
|
|
# 1 "/usr/include/i386/_types.h" 1 3 4
|
|
# 37 "/usr/include/i386/_types.h" 3 4
|
|
typedef signed char __int8_t;
|
|
|
|
|
|
|
|
typedef unsigned char __uint8_t;
|
|
typedef short __int16_t;
|
|
typedef unsigned short __uint16_t;
|
|
typedef int __int32_t;
|
|
typedef unsigned int __uint32_t;
|
|
typedef long long __int64_t;
|
|
typedef unsigned long long __uint64_t;
|
|
|
|
typedef long __darwin_intptr_t;
|
|
typedef unsigned int __darwin_natural_t;
|
|
# 70 "/usr/include/i386/_types.h" 3 4
|
|
typedef int __darwin_ct_rune_t;
|
|
|
|
|
|
|
|
|
|
|
|
typedef union {
|
|
char __mbstate8[128];
|
|
long long _mbstateL;
|
|
} __mbstate_t;
|
|
|
|
typedef __mbstate_t __darwin_mbstate_t;
|
|
|
|
|
|
typedef int __darwin_ptrdiff_t;
|
|
|
|
|
|
|
|
|
|
|
|
typedef long unsigned int __darwin_size_t;
|
|
|
|
|
|
|
|
|
|
|
|
typedef __builtin_va_list __darwin_va_list;
|
|
|
|
|
|
|
|
|
|
|
|
typedef int __darwin_wchar_t;
|
|
|
|
|
|
|
|
|
|
typedef __darwin_wchar_t __darwin_rune_t;
|
|
|
|
|
|
typedef int __darwin_wint_t;
|
|
|
|
|
|
|
|
|
|
typedef unsigned long __darwin_clock_t;
|
|
typedef __uint32_t __darwin_socklen_t;
|
|
typedef long __darwin_ssize_t;
|
|
typedef long __darwin_time_t;
|
|
# 35 "/usr/include/machine/_types.h" 2 3 4
|
|
# 34 "/usr/include/sys/_types.h" 2 3 4
|
|
# 58 "/usr/include/sys/_types.h" 3 4
|
|
struct __darwin_pthread_handler_rec
|
|
{
|
|
void (*__routine)(void *);
|
|
void *__arg;
|
|
struct __darwin_pthread_handler_rec *__next;
|
|
};
|
|
struct _opaque_pthread_attr_t { long __sig; char __opaque[36]; };
|
|
struct _opaque_pthread_cond_t { long __sig; char __opaque[24]; };
|
|
struct _opaque_pthread_condattr_t { long __sig; char __opaque[4]; };
|
|
struct _opaque_pthread_mutex_t { long __sig; char __opaque[40]; };
|
|
struct _opaque_pthread_mutexattr_t { long __sig; char __opaque[8]; };
|
|
struct _opaque_pthread_once_t { long __sig; char __opaque[4]; };
|
|
struct _opaque_pthread_rwlock_t { long __sig; char __opaque[124]; };
|
|
struct _opaque_pthread_rwlockattr_t { long __sig; char __opaque[12]; };
|
|
struct _opaque_pthread_t { long __sig; struct __darwin_pthread_handler_rec *__cleanup_stack; char __opaque[596]; };
|
|
# 94 "/usr/include/sys/_types.h" 3 4
|
|
typedef __int64_t __darwin_blkcnt_t;
|
|
typedef __int32_t __darwin_blksize_t;
|
|
typedef __int32_t __darwin_dev_t;
|
|
typedef unsigned int __darwin_fsblkcnt_t;
|
|
typedef unsigned int __darwin_fsfilcnt_t;
|
|
typedef __uint32_t __darwin_gid_t;
|
|
typedef __uint32_t __darwin_id_t;
|
|
typedef __uint64_t __darwin_ino64_t;
|
|
|
|
|
|
|
|
typedef __uint32_t __darwin_ino_t;
|
|
|
|
typedef __darwin_natural_t __darwin_mach_port_name_t;
|
|
typedef __darwin_mach_port_name_t __darwin_mach_port_t;
|
|
typedef __uint16_t __darwin_mode_t;
|
|
typedef __int64_t __darwin_off_t;
|
|
typedef __int32_t __darwin_pid_t;
|
|
typedef struct _opaque_pthread_attr_t
|
|
__darwin_pthread_attr_t;
|
|
typedef struct _opaque_pthread_cond_t
|
|
__darwin_pthread_cond_t;
|
|
typedef struct _opaque_pthread_condattr_t
|
|
__darwin_pthread_condattr_t;
|
|
typedef unsigned long __darwin_pthread_key_t;
|
|
typedef struct _opaque_pthread_mutex_t
|
|
__darwin_pthread_mutex_t;
|
|
typedef struct _opaque_pthread_mutexattr_t
|
|
__darwin_pthread_mutexattr_t;
|
|
typedef struct _opaque_pthread_once_t
|
|
__darwin_pthread_once_t;
|
|
typedef struct _opaque_pthread_rwlock_t
|
|
__darwin_pthread_rwlock_t;
|
|
typedef struct _opaque_pthread_rwlockattr_t
|
|
__darwin_pthread_rwlockattr_t;
|
|
typedef struct _opaque_pthread_t
|
|
*__darwin_pthread_t;
|
|
typedef __uint32_t __darwin_sigset_t;
|
|
typedef __int32_t __darwin_suseconds_t;
|
|
typedef __uint32_t __darwin_uid_t;
|
|
typedef __uint32_t __darwin_useconds_t;
|
|
typedef unsigned char __darwin_uuid_t[16];
|
|
# 28 "/usr/include/_types.h" 2 3 4
|
|
|
|
typedef int __darwin_nl_item;
|
|
typedef int __darwin_wctrans_t;
|
|
|
|
|
|
|
|
typedef unsigned long __darwin_wctype_t;
|
|
# 65 "/usr/include/stdio.h" 2 3 4
|
|
# 75 "/usr/include/stdio.h" 3 4
|
|
typedef __darwin_off_t off_t;
|
|
|
|
|
|
|
|
|
|
typedef __darwin_size_t size_t;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef __darwin_off_t fpos_t;
|
|
# 98 "/usr/include/stdio.h" 3 4
|
|
struct __sbuf {
|
|
unsigned char *_base;
|
|
int _size;
|
|
};
|
|
|
|
|
|
struct __sFILEX;
|
|
# 132 "/usr/include/stdio.h" 3 4
|
|
typedef struct __sFILE {
|
|
unsigned char *_p;
|
|
int _r;
|
|
int _w;
|
|
short _flags;
|
|
short _file;
|
|
struct __sbuf _bf;
|
|
int _lbfsize;
|
|
|
|
|
|
void *_cookie;
|
|
int (*_close)(void *);
|
|
int (*_read) (void *, char *, int);
|
|
fpos_t (*_seek) (void *, fpos_t, int);
|
|
int (*_write)(void *, const char *, int);
|
|
|
|
|
|
struct __sbuf _ub;
|
|
struct __sFILEX *_extra;
|
|
int _ur;
|
|
|
|
|
|
unsigned char _ubuf[3];
|
|
unsigned char _nbuf[1];
|
|
|
|
|
|
struct __sbuf _lb;
|
|
|
|
|
|
int _blksize;
|
|
fpos_t _offset;
|
|
} FILE;
|
|
|
|
|
|
|
|
extern FILE *__stdinp;
|
|
extern FILE *__stdoutp;
|
|
extern FILE *__stderrp;
|
|
|
|
|
|
|
|
|
|
# 248 "/usr/include/stdio.h" 3 4
|
|
|
|
void clearerr(FILE *);
|
|
int fclose(FILE *);
|
|
int feof(FILE *);
|
|
int ferror(FILE *);
|
|
int fflush(FILE *);
|
|
int fgetc(FILE *);
|
|
int fgetpos(FILE * , fpos_t *);
|
|
char *fgets(char * , int, FILE *);
|
|
FILE *fopen(const char * , const char * );
|
|
int fprintf(FILE * , const char * , ...) ;
|
|
int fputc(int, FILE *);
|
|
int fputs(const char * , FILE * ) __asm("_" "fputs" "$UNIX2003");
|
|
size_t fread(void * , size_t, size_t, FILE * );
|
|
FILE *freopen(const char * , const char * ,
|
|
FILE * ) __asm("_" "freopen" "$UNIX2003");
|
|
int fscanf(FILE * , const char * , ...) ;
|
|
int fseek(FILE *, long, int);
|
|
int fsetpos(FILE *, const fpos_t *);
|
|
long ftell(FILE *);
|
|
size_t fwrite(const void * , size_t, size_t, FILE * ) __asm("_" "fwrite" "$UNIX2003");
|
|
int getc(FILE *);
|
|
int getchar(void);
|
|
char *gets(char *);
|
|
|
|
extern const int sys_nerr;
|
|
extern const char *const sys_errlist[];
|
|
|
|
void perror(const char *);
|
|
int printf(const char * , ...) ;
|
|
int putc(int, FILE *);
|
|
int putchar(int);
|
|
int puts(const char *);
|
|
int remove(const char *);
|
|
int rename (const char *, const char *);
|
|
void rewind(FILE *);
|
|
int scanf(const char * , ...) ;
|
|
void setbuf(FILE * , char * );
|
|
int setvbuf(FILE * , char * , int, size_t);
|
|
int sprintf(char * , const char * , ...) ;
|
|
int sscanf(const char * , const char * , ...) ;
|
|
FILE *tmpfile(void);
|
|
char *tmpnam(char *);
|
|
int ungetc(int, FILE *);
|
|
int vfprintf(FILE * , const char * , va_list) ;
|
|
int vprintf(const char * , va_list) ;
|
|
int vsprintf(char * , const char * , va_list) ;
|
|
|
|
int asprintf(char **, const char *, ...) ;
|
|
int vasprintf(char **, const char *, va_list) ;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
char *ctermid(char *);
|
|
|
|
char *ctermid_r(char *);
|
|
|
|
FILE *fdopen(int, const char *);
|
|
|
|
char *fgetln(FILE *, size_t *);
|
|
|
|
int fileno(FILE *);
|
|
void flockfile(FILE *);
|
|
|
|
const char
|
|
*fmtcheck(const char *, const char *);
|
|
int fpurge(FILE *);
|
|
|
|
int fseeko(FILE *, off_t, int);
|
|
off_t ftello(FILE *);
|
|
int ftrylockfile(FILE *);
|
|
void funlockfile(FILE *);
|
|
int getc_unlocked(FILE *);
|
|
int getchar_unlocked(void);
|
|
|
|
int getw(FILE *);
|
|
|
|
int pclose(FILE *);
|
|
FILE *popen(const char *, const char *);
|
|
int putc_unlocked(int, FILE *);
|
|
int putchar_unlocked(int);
|
|
|
|
int putw(int, FILE *);
|
|
void setbuffer(FILE *, char *, int);
|
|
int setlinebuf(FILE *);
|
|
|
|
int snprintf(char * , size_t, const char * , ...) ;
|
|
char *tempnam(const char *, const char *) __asm("_" "tempnam" "$UNIX2003");
|
|
int vfscanf(FILE * , const char * , va_list) ;
|
|
int vscanf(const char * , va_list) ;
|
|
int vsnprintf(char * , size_t, const char * , va_list) ;
|
|
int vsscanf(const char * , const char * , va_list) ;
|
|
|
|
FILE *zopen(const char *, const char *, int);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FILE *funopen(const void *,
|
|
int (*)(void *, char *, int),
|
|
int (*)(void *, const char *, int),
|
|
fpos_t (*)(void *, fpos_t, int),
|
|
int (*)(void *));
|
|
|
|
# 371 "/usr/include/stdio.h" 3 4
|
|
|
|
int __srget(FILE *);
|
|
int __svfscanf(FILE *, const char *, va_list) ;
|
|
int __swbuf(int, FILE *);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static __inline int __sputc(int _c, FILE *_p) {
|
|
if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
|
|
return (*_p->_p++ = _c);
|
|
else
|
|
return (__swbuf(_c, _p));
|
|
}
|
|
# 10 "../include/global.h" 2
|
|
# 61 "../include/global.h"
|
|
typedef schar xchar;
|
|
|
|
typedef xchar boolean;
|
|
# 74 "../include/global.h"
|
|
typedef uchar nhsym;
|
|
# 110 "../include/global.h"
|
|
# 1 "../include/coord.h" 1
|
|
# 9 "../include/coord.h"
|
|
typedef struct nhcoord {
|
|
xchar x,y;
|
|
} coord;
|
|
# 111 "../include/global.h" 2
|
|
# 121 "../include/global.h"
|
|
# 1 "../include/unixconf.h" 1
|
|
# 285 "../include/unixconf.h"
|
|
# 1 "/usr/include/time.h" 1 3 4
|
|
# 69 "/usr/include/time.h" 3 4
|
|
# 1 "/usr/include/_structs.h" 1 3 4
|
|
# 24 "/usr/include/_structs.h" 3 4
|
|
# 1 "/usr/include/sys/_structs.h" 1 3 4
|
|
# 88 "/usr/include/sys/_structs.h" 3 4
|
|
struct timespec
|
|
{
|
|
__darwin_time_t tv_sec;
|
|
long tv_nsec;
|
|
};
|
|
# 25 "/usr/include/_structs.h" 2 3 4
|
|
# 70 "/usr/include/time.h" 2 3 4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef __darwin_clock_t clock_t;
|
|
# 87 "/usr/include/time.h" 3 4
|
|
typedef __darwin_time_t time_t;
|
|
|
|
|
|
struct tm {
|
|
int tm_sec;
|
|
int tm_min;
|
|
int tm_hour;
|
|
int tm_mday;
|
|
int tm_mon;
|
|
int tm_year;
|
|
int tm_wday;
|
|
int tm_yday;
|
|
int tm_isdst;
|
|
long tm_gmtoff;
|
|
char *tm_zone;
|
|
};
|
|
# 113 "/usr/include/time.h" 3 4
|
|
extern char *tzname[];
|
|
|
|
|
|
extern int getdate_err;
|
|
|
|
extern long timezone __asm("_" "timezone" "$UNIX2003");
|
|
|
|
extern int daylight;
|
|
|
|
|
|
char *asctime(const struct tm *);
|
|
clock_t clock(void) __asm("_" "clock" "$UNIX2003");
|
|
char *ctime(const time_t *);
|
|
double difftime(time_t, time_t);
|
|
struct tm *getdate(const char *);
|
|
struct tm *gmtime(const time_t *);
|
|
struct tm *localtime(const time_t *);
|
|
time_t mktime(struct tm *) __asm("_" "mktime" "$UNIX2003");
|
|
size_t strftime(char * , size_t, const char * , const struct tm * ) __asm("_" "strftime" "$UNIX2003");
|
|
char *strptime(const char * , const char * , struct tm * ) __asm("_" "strptime" "$UNIX2003");
|
|
time_t time(time_t *);
|
|
|
|
|
|
void tzset(void);
|
|
|
|
|
|
|
|
char *asctime_r(const struct tm * , char * );
|
|
char *ctime_r(const time_t *, char *);
|
|
struct tm *gmtime_r(const time_t * , struct tm * );
|
|
struct tm *localtime_r(const time_t * , struct tm * );
|
|
|
|
|
|
time_t posix2time(time_t);
|
|
|
|
|
|
|
|
void tzsetwall(void);
|
|
time_t time2posix(time_t);
|
|
time_t timelocal(struct tm * const);
|
|
time_t timegm(struct tm * const);
|
|
|
|
|
|
|
|
int nanosleep(const struct timespec *, struct timespec *) __asm("_" "nanosleep" "$UNIX2003");
|
|
|
|
|
|
# 286 "../include/unixconf.h" 2
|
|
# 296 "../include/unixconf.h"
|
|
# 1 "../include/system.h" 1
|
|
# 21 "../include/system.h"
|
|
# 1 "/usr/include/sys/types.h" 1 3 4
|
|
# 72 "/usr/include/sys/types.h" 3 4
|
|
# 1 "/usr/include/sys/appleapiopts.h" 1 3 4
|
|
# 73 "/usr/include/sys/types.h" 2 3 4
|
|
|
|
|
|
|
|
|
|
|
|
# 1 "/usr/include/machine/types.h" 1 3 4
|
|
# 37 "/usr/include/machine/types.h" 3 4
|
|
# 1 "/usr/include/i386/types.h" 1 3 4
|
|
# 78 "/usr/include/i386/types.h" 3 4
|
|
typedef signed char int8_t;
|
|
|
|
typedef unsigned char u_int8_t;
|
|
|
|
|
|
typedef short int16_t;
|
|
|
|
typedef unsigned short u_int16_t;
|
|
|
|
|
|
typedef int int32_t;
|
|
|
|
typedef unsigned int u_int32_t;
|
|
|
|
|
|
typedef long long int64_t;
|
|
|
|
typedef unsigned long long u_int64_t;
|
|
|
|
|
|
|
|
|
|
typedef int32_t register_t;
|
|
|
|
|
|
|
|
|
|
typedef __darwin_intptr_t intptr_t;
|
|
|
|
|
|
|
|
typedef unsigned long int uintptr_t;
|
|
|
|
|
|
|
|
|
|
typedef u_int64_t user_addr_t;
|
|
typedef u_int64_t user_size_t;
|
|
typedef int64_t user_ssize_t;
|
|
typedef int64_t user_long_t;
|
|
typedef u_int64_t user_ulong_t;
|
|
typedef int64_t user_time_t;
|
|
|
|
|
|
|
|
|
|
|
|
typedef u_int64_t syscall_arg_t;
|
|
# 38 "/usr/include/machine/types.h" 2 3 4
|
|
# 79 "/usr/include/sys/types.h" 2 3 4
|
|
|
|
|
|
# 1 "/usr/include/machine/endian.h" 1 3 4
|
|
# 37 "/usr/include/machine/endian.h" 3 4
|
|
# 1 "/usr/include/i386/endian.h" 1 3 4
|
|
# 99 "/usr/include/i386/endian.h" 3 4
|
|
# 1 "/usr/include/sys/_endian.h" 1 3 4
|
|
# 124 "/usr/include/sys/_endian.h" 3 4
|
|
# 1 "/usr/include/libkern/_OSByteOrder.h" 1 3 4
|
|
# 66 "/usr/include/libkern/_OSByteOrder.h" 3 4
|
|
# 1 "/usr/include/libkern/i386/_OSByteOrder.h" 1 3 4
|
|
# 44 "/usr/include/libkern/i386/_OSByteOrder.h" 3 4
|
|
static __inline__
|
|
__uint16_t
|
|
_OSSwapInt16(
|
|
__uint16_t _data
|
|
)
|
|
{
|
|
return ((_data << 8) | (_data >> 8));
|
|
}
|
|
|
|
static __inline__
|
|
__uint32_t
|
|
_OSSwapInt32(
|
|
__uint32_t _data
|
|
)
|
|
{
|
|
__asm__ ("bswap %0" : "+r" (_data));
|
|
return _data;
|
|
}
|
|
|
|
|
|
static __inline__
|
|
__uint64_t
|
|
_OSSwapInt64(
|
|
__uint64_t _data
|
|
)
|
|
{
|
|
__asm__ ("bswap %%eax\n\t"
|
|
"bswap %%edx\n\t"
|
|
"xchgl %%eax, %%edx"
|
|
: "+A" (_data));
|
|
return _data;
|
|
}
|
|
# 67 "/usr/include/libkern/_OSByteOrder.h" 2 3 4
|
|
# 125 "/usr/include/sys/_endian.h" 2 3 4
|
|
# 100 "/usr/include/i386/endian.h" 2 3 4
|
|
# 38 "/usr/include/machine/endian.h" 2 3 4
|
|
# 82 "/usr/include/sys/types.h" 2 3 4
|
|
|
|
|
|
typedef unsigned char u_char;
|
|
typedef unsigned short u_short;
|
|
typedef unsigned int u_int;
|
|
|
|
typedef unsigned long u_long;
|
|
|
|
|
|
typedef unsigned short ushort;
|
|
typedef unsigned int uint;
|
|
|
|
|
|
typedef u_int64_t u_quad_t;
|
|
typedef int64_t quad_t;
|
|
typedef quad_t * qaddr_t;
|
|
|
|
typedef char * caddr_t;
|
|
typedef int32_t daddr_t;
|
|
|
|
|
|
typedef __darwin_dev_t dev_t;
|
|
|
|
|
|
|
|
typedef u_int32_t fixpt_t;
|
|
|
|
|
|
typedef __darwin_blkcnt_t blkcnt_t;
|
|
|
|
|
|
|
|
|
|
typedef __darwin_blksize_t blksize_t;
|
|
|
|
|
|
|
|
|
|
typedef __darwin_gid_t gid_t;
|
|
|
|
|
|
|
|
|
|
|
|
typedef __uint32_t in_addr_t;
|
|
|
|
|
|
|
|
|
|
typedef __uint16_t in_port_t;
|
|
|
|
|
|
|
|
typedef __darwin_ino_t ino_t;
|
|
|
|
|
|
|
|
|
|
|
|
typedef __darwin_ino64_t ino64_t;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef __int32_t key_t;
|
|
|
|
|
|
|
|
typedef __darwin_mode_t mode_t;
|
|
|
|
|
|
|
|
|
|
typedef __uint16_t nlink_t;
|
|
|
|
|
|
|
|
|
|
|
|
typedef __darwin_id_t id_t;
|
|
|
|
|
|
|
|
typedef __darwin_pid_t pid_t;
|
|
# 176 "/usr/include/sys/types.h" 3 4
|
|
typedef int32_t segsz_t;
|
|
typedef int32_t swblk_t;
|
|
|
|
|
|
typedef __darwin_uid_t uid_t;
|
|
# 235 "/usr/include/sys/types.h" 3 4
|
|
typedef __darwin_ssize_t ssize_t;
|
|
# 245 "/usr/include/sys/types.h" 3 4
|
|
typedef __darwin_useconds_t useconds_t;
|
|
|
|
|
|
|
|
|
|
typedef __darwin_suseconds_t suseconds_t;
|
|
# 260 "/usr/include/sys/types.h" 3 4
|
|
# 1 "/usr/include/sys/_structs.h" 1 3 4
|
|
# 183 "/usr/include/sys/_structs.h" 3 4
|
|
|
|
typedef struct fd_set {
|
|
__int32_t fds_bits[(((1024) + (((sizeof(__int32_t) * 8)) - 1)) / ((sizeof(__int32_t) * 8)))];
|
|
} fd_set;
|
|
|
|
|
|
|
|
static __inline int
|
|
__darwin_fd_isset(int _n, struct fd_set *_p)
|
|
{
|
|
return (_p->fds_bits[_n/(sizeof(__int32_t) * 8)] & (1<<(_n % (sizeof(__int32_t) * 8))));
|
|
}
|
|
# 261 "/usr/include/sys/types.h" 2 3 4
|
|
|
|
|
|
|
|
|
|
typedef __int32_t fd_mask;
|
|
# 318 "/usr/include/sys/types.h" 3 4
|
|
typedef __darwin_pthread_attr_t pthread_attr_t;
|
|
|
|
|
|
|
|
typedef __darwin_pthread_cond_t pthread_cond_t;
|
|
|
|
|
|
|
|
typedef __darwin_pthread_condattr_t pthread_condattr_t;
|
|
|
|
|
|
|
|
typedef __darwin_pthread_mutex_t pthread_mutex_t;
|
|
|
|
|
|
|
|
typedef __darwin_pthread_mutexattr_t pthread_mutexattr_t;
|
|
|
|
|
|
|
|
typedef __darwin_pthread_once_t pthread_once_t;
|
|
|
|
|
|
|
|
typedef __darwin_pthread_rwlock_t pthread_rwlock_t;
|
|
|
|
|
|
|
|
typedef __darwin_pthread_rwlockattr_t pthread_rwlockattr_t;
|
|
|
|
|
|
|
|
typedef __darwin_pthread_t pthread_t;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef __darwin_pthread_key_t pthread_key_t;
|
|
|
|
|
|
|
|
|
|
|
|
typedef __darwin_fsblkcnt_t fsblkcnt_t;
|
|
|
|
|
|
|
|
|
|
typedef __darwin_fsfilcnt_t fsfilcnt_t;
|
|
# 22 "../include/system.h" 2
|
|
# 92 "../include/system.h"
|
|
extern long lrand48();
|
|
extern void srand48();
|
|
|
|
|
|
|
|
|
|
|
|
extern void exit (int);
|
|
# 118 "../include/system.h"
|
|
extern void free (genericptr_t);
|
|
# 127 "../include/system.h"
|
|
extern void perror (const char *);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern void qsort (genericptr_t,size_t,size_t, int(*)(const void *,const void *));
|
|
# 301 "../include/system.h"
|
|
# 1 "/usr/include/string.h" 1 3 4
|
|
# 80 "/usr/include/string.h" 3 4
|
|
|
|
void *memchr(const void *, int, size_t);
|
|
int memcmp(const void *, const void *, size_t);
|
|
void *memcpy(void *, const void *, size_t);
|
|
void *memmove(void *, const void *, size_t);
|
|
void *memset(void *, int, size_t);
|
|
|
|
char *stpcpy(char *, const char *);
|
|
char *strcasestr(const char *, const char *);
|
|
|
|
char *strcat(char *, const char *);
|
|
char *strchr(const char *, int);
|
|
int strcmp(const char *, const char *);
|
|
int strcoll(const char *, const char *);
|
|
char *strcpy(char *, const char *);
|
|
size_t strcspn(const char *, const char *);
|
|
char *strerror(int) __asm("_" "strerror" "$UNIX2003");
|
|
int strerror_r(int, char *, size_t);
|
|
size_t strlen(const char *);
|
|
char *strncat(char *, const char *, size_t);
|
|
int strncmp(const char *, const char *, size_t);
|
|
char *strncpy(char *, const char *, size_t);
|
|
|
|
char *strnstr(const char *, const char *, size_t);
|
|
|
|
char *strpbrk(const char *, const char *);
|
|
char *strrchr(const char *, int);
|
|
size_t strspn(const char *, const char *);
|
|
char *strstr(const char *, const char *);
|
|
char *strtok(char *, const char *);
|
|
size_t strxfrm(char *, const char *, size_t);
|
|
|
|
|
|
|
|
void *memccpy(void *, const void *, int, size_t);
|
|
char *strtok_r(char *, const char *, char **);
|
|
char *strdup(const char *);
|
|
|
|
int bcmp(const void *, const void *, size_t);
|
|
void bcopy(const void *, void *, size_t);
|
|
void bzero(void *, size_t);
|
|
int ffs(int);
|
|
int ffsl(long);
|
|
int fls(int);
|
|
int flsl(long);
|
|
char *index(const char *, int);
|
|
void memset_pattern4(void *, const void *, size_t);
|
|
void memset_pattern8(void *, const void *, size_t);
|
|
void memset_pattern16(void *, const void *, size_t);
|
|
char *rindex(const char *, int);
|
|
int strcasecmp(const char *, const char *);
|
|
size_t strlcat(char *, const char *, size_t);
|
|
size_t strlcpy(char *, const char *, size_t);
|
|
void strmode(int, char *);
|
|
int strncasecmp(const char *, const char *, size_t);
|
|
char *strsep(char **, const char *);
|
|
char *strsignal(int sig);
|
|
void swab(const void * , void * , ssize_t);
|
|
|
|
|
|
|
|
# 302 "../include/system.h" 2
|
|
# 353 "../include/system.h"
|
|
extern unsigned sleep();
|
|
# 362 "../include/system.h"
|
|
extern char *getenv (const char *);
|
|
extern char *getlogin();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern pid_t getpid(void);
|
|
extern uid_t getuid(void);
|
|
extern gid_t getgid(void);
|
|
# 507 "../include/system.h"
|
|
extern int tgetent (char *,const char *);
|
|
extern void tputs (const char *,int,int (*)());
|
|
|
|
extern int tgetnum (const char *);
|
|
extern int tgetflag (const char *);
|
|
extern char *tgetstr (const char *,char **);
|
|
extern char *tgoto (const char *,int,int);
|
|
# 524 "../include/system.h"
|
|
extern struct tm *localtime (const time_t *);
|
|
|
|
|
|
|
|
|
|
extern time_t time (time_t *);
|
|
# 297 "../include/unixconf.h" 2
|
|
|
|
|
|
# 1 "/usr/include/stdlib.h" 1 3 4
|
|
# 61 "/usr/include/stdlib.h" 3 4
|
|
# 1 "/usr/include/available.h" 1 3 4
|
|
# 62 "/usr/include/stdlib.h" 2 3 4
|
|
|
|
|
|
|
|
# 1 "/usr/include/sys/wait.h" 1 3 4
|
|
# 79 "/usr/include/sys/wait.h" 3 4
|
|
typedef enum {
|
|
P_ALL,
|
|
P_PID,
|
|
P_PGID
|
|
} idtype_t;
|
|
# 116 "/usr/include/sys/wait.h" 3 4
|
|
# 1 "/usr/include/sys/signal.h" 1 3 4
|
|
# 81 "/usr/include/sys/signal.h" 3 4
|
|
# 1 "/usr/include/machine/signal.h" 1 3 4
|
|
# 34 "/usr/include/machine/signal.h" 3 4
|
|
# 1 "/usr/include/i386/signal.h" 1 3 4
|
|
# 39 "/usr/include/i386/signal.h" 3 4
|
|
typedef int sig_atomic_t;
|
|
# 55 "/usr/include/i386/signal.h" 3 4
|
|
# 1 "/usr/include/i386/_structs.h" 1 3 4
|
|
# 56 "/usr/include/i386/signal.h" 2 3 4
|
|
# 35 "/usr/include/machine/signal.h" 2 3 4
|
|
# 82 "/usr/include/sys/signal.h" 2 3 4
|
|
# 154 "/usr/include/sys/signal.h" 3 4
|
|
# 1 "/usr/include/sys/_structs.h" 1 3 4
|
|
# 57 "/usr/include/sys/_structs.h" 3 4
|
|
# 1 "/usr/include/machine/_structs.h" 1 3 4
|
|
# 31 "/usr/include/machine/_structs.h" 3 4
|
|
# 1 "/usr/include/i386/_structs.h" 1 3 4
|
|
# 38 "/usr/include/i386/_structs.h" 3 4
|
|
# 1 "/usr/include/mach/i386/_structs.h" 1 3 4
|
|
# 43 "/usr/include/mach/i386/_structs.h" 3 4
|
|
struct __darwin_i386_thread_state
|
|
{
|
|
unsigned int __eax;
|
|
unsigned int __ebx;
|
|
unsigned int __ecx;
|
|
unsigned int __edx;
|
|
unsigned int __edi;
|
|
unsigned int __esi;
|
|
unsigned int __ebp;
|
|
unsigned int __esp;
|
|
unsigned int __ss;
|
|
unsigned int __eflags;
|
|
unsigned int __eip;
|
|
unsigned int __cs;
|
|
unsigned int __ds;
|
|
unsigned int __es;
|
|
unsigned int __fs;
|
|
unsigned int __gs;
|
|
};
|
|
# 89 "/usr/include/mach/i386/_structs.h" 3 4
|
|
struct __darwin_fp_control
|
|
{
|
|
unsigned short __invalid :1,
|
|
__denorm :1,
|
|
__zdiv :1,
|
|
__ovrfl :1,
|
|
__undfl :1,
|
|
__precis :1,
|
|
:2,
|
|
__pc :2,
|
|
|
|
|
|
|
|
|
|
|
|
__rc :2,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
:1,
|
|
:3;
|
|
};
|
|
typedef struct __darwin_fp_control __darwin_fp_control_t;
|
|
# 147 "/usr/include/mach/i386/_structs.h" 3 4
|
|
struct __darwin_fp_status
|
|
{
|
|
unsigned short __invalid :1,
|
|
__denorm :1,
|
|
__zdiv :1,
|
|
__ovrfl :1,
|
|
__undfl :1,
|
|
__precis :1,
|
|
__stkflt :1,
|
|
__errsumm :1,
|
|
__c0 :1,
|
|
__c1 :1,
|
|
__c2 :1,
|
|
__tos :3,
|
|
__c3 :1,
|
|
__busy :1;
|
|
};
|
|
typedef struct __darwin_fp_status __darwin_fp_status_t;
|
|
# 191 "/usr/include/mach/i386/_structs.h" 3 4
|
|
struct __darwin_mmst_reg
|
|
{
|
|
char __mmst_reg[10];
|
|
char __mmst_rsrv[6];
|
|
};
|
|
# 210 "/usr/include/mach/i386/_structs.h" 3 4
|
|
struct __darwin_xmm_reg
|
|
{
|
|
char __xmm_reg[16];
|
|
};
|
|
# 232 "/usr/include/mach/i386/_structs.h" 3 4
|
|
struct __darwin_i386_float_state
|
|
{
|
|
int __fpu_reserved[2];
|
|
struct __darwin_fp_control __fpu_fcw;
|
|
struct __darwin_fp_status __fpu_fsw;
|
|
__uint8_t __fpu_ftw;
|
|
__uint8_t __fpu_rsrv1;
|
|
__uint16_t __fpu_fop;
|
|
__uint32_t __fpu_ip;
|
|
__uint16_t __fpu_cs;
|
|
__uint16_t __fpu_rsrv2;
|
|
__uint32_t __fpu_dp;
|
|
__uint16_t __fpu_ds;
|
|
__uint16_t __fpu_rsrv3;
|
|
__uint32_t __fpu_mxcsr;
|
|
__uint32_t __fpu_mxcsrmask;
|
|
struct __darwin_mmst_reg __fpu_stmm0;
|
|
struct __darwin_mmst_reg __fpu_stmm1;
|
|
struct __darwin_mmst_reg __fpu_stmm2;
|
|
struct __darwin_mmst_reg __fpu_stmm3;
|
|
struct __darwin_mmst_reg __fpu_stmm4;
|
|
struct __darwin_mmst_reg __fpu_stmm5;
|
|
struct __darwin_mmst_reg __fpu_stmm6;
|
|
struct __darwin_mmst_reg __fpu_stmm7;
|
|
struct __darwin_xmm_reg __fpu_xmm0;
|
|
struct __darwin_xmm_reg __fpu_xmm1;
|
|
struct __darwin_xmm_reg __fpu_xmm2;
|
|
struct __darwin_xmm_reg __fpu_xmm3;
|
|
struct __darwin_xmm_reg __fpu_xmm4;
|
|
struct __darwin_xmm_reg __fpu_xmm5;
|
|
struct __darwin_xmm_reg __fpu_xmm6;
|
|
struct __darwin_xmm_reg __fpu_xmm7;
|
|
char __fpu_rsrv4[14*16];
|
|
int __fpu_reserved1;
|
|
};
|
|
# 308 "/usr/include/mach/i386/_structs.h" 3 4
|
|
struct __darwin_i386_exception_state
|
|
{
|
|
unsigned int __trapno;
|
|
unsigned int __err;
|
|
unsigned int __faultvaddr;
|
|
};
|
|
# 326 "/usr/include/mach/i386/_structs.h" 3 4
|
|
struct __darwin_x86_debug_state32
|
|
{
|
|
unsigned int __dr0;
|
|
unsigned int __dr1;
|
|
unsigned int __dr2;
|
|
unsigned int __dr3;
|
|
unsigned int __dr4;
|
|
unsigned int __dr5;
|
|
unsigned int __dr6;
|
|
unsigned int __dr7;
|
|
};
|
|
# 358 "/usr/include/mach/i386/_structs.h" 3 4
|
|
struct __darwin_x86_thread_state64
|
|
{
|
|
__uint64_t __rax;
|
|
__uint64_t __rbx;
|
|
__uint64_t __rcx;
|
|
__uint64_t __rdx;
|
|
__uint64_t __rdi;
|
|
__uint64_t __rsi;
|
|
__uint64_t __rbp;
|
|
__uint64_t __rsp;
|
|
__uint64_t __r8;
|
|
__uint64_t __r9;
|
|
__uint64_t __r10;
|
|
__uint64_t __r11;
|
|
__uint64_t __r12;
|
|
__uint64_t __r13;
|
|
__uint64_t __r14;
|
|
__uint64_t __r15;
|
|
__uint64_t __rip;
|
|
__uint64_t __rflags;
|
|
__uint64_t __cs;
|
|
__uint64_t __fs;
|
|
__uint64_t __gs;
|
|
};
|
|
# 413 "/usr/include/mach/i386/_structs.h" 3 4
|
|
struct __darwin_x86_float_state64
|
|
{
|
|
int __fpu_reserved[2];
|
|
struct __darwin_fp_control __fpu_fcw;
|
|
struct __darwin_fp_status __fpu_fsw;
|
|
__uint8_t __fpu_ftw;
|
|
__uint8_t __fpu_rsrv1;
|
|
__uint16_t __fpu_fop;
|
|
|
|
|
|
__uint32_t __fpu_ip;
|
|
__uint16_t __fpu_cs;
|
|
|
|
__uint16_t __fpu_rsrv2;
|
|
|
|
|
|
__uint32_t __fpu_dp;
|
|
__uint16_t __fpu_ds;
|
|
|
|
__uint16_t __fpu_rsrv3;
|
|
__uint32_t __fpu_mxcsr;
|
|
__uint32_t __fpu_mxcsrmask;
|
|
struct __darwin_mmst_reg __fpu_stmm0;
|
|
struct __darwin_mmst_reg __fpu_stmm1;
|
|
struct __darwin_mmst_reg __fpu_stmm2;
|
|
struct __darwin_mmst_reg __fpu_stmm3;
|
|
struct __darwin_mmst_reg __fpu_stmm4;
|
|
struct __darwin_mmst_reg __fpu_stmm5;
|
|
struct __darwin_mmst_reg __fpu_stmm6;
|
|
struct __darwin_mmst_reg __fpu_stmm7;
|
|
struct __darwin_xmm_reg __fpu_xmm0;
|
|
struct __darwin_xmm_reg __fpu_xmm1;
|
|
struct __darwin_xmm_reg __fpu_xmm2;
|
|
struct __darwin_xmm_reg __fpu_xmm3;
|
|
struct __darwin_xmm_reg __fpu_xmm4;
|
|
struct __darwin_xmm_reg __fpu_xmm5;
|
|
struct __darwin_xmm_reg __fpu_xmm6;
|
|
struct __darwin_xmm_reg __fpu_xmm7;
|
|
struct __darwin_xmm_reg __fpu_xmm8;
|
|
struct __darwin_xmm_reg __fpu_xmm9;
|
|
struct __darwin_xmm_reg __fpu_xmm10;
|
|
struct __darwin_xmm_reg __fpu_xmm11;
|
|
struct __darwin_xmm_reg __fpu_xmm12;
|
|
struct __darwin_xmm_reg __fpu_xmm13;
|
|
struct __darwin_xmm_reg __fpu_xmm14;
|
|
struct __darwin_xmm_reg __fpu_xmm15;
|
|
char __fpu_rsrv4[6*16];
|
|
int __fpu_reserved1;
|
|
};
|
|
# 517 "/usr/include/mach/i386/_structs.h" 3 4
|
|
struct __darwin_x86_exception_state64
|
|
{
|
|
unsigned int __trapno;
|
|
unsigned int __err;
|
|
__uint64_t __faultvaddr;
|
|
};
|
|
# 535 "/usr/include/mach/i386/_structs.h" 3 4
|
|
struct __darwin_x86_debug_state64
|
|
{
|
|
__uint64_t __dr0;
|
|
__uint64_t __dr1;
|
|
__uint64_t __dr2;
|
|
__uint64_t __dr3;
|
|
__uint64_t __dr4;
|
|
__uint64_t __dr5;
|
|
__uint64_t __dr6;
|
|
__uint64_t __dr7;
|
|
};
|
|
# 39 "/usr/include/i386/_structs.h" 2 3 4
|
|
# 48 "/usr/include/i386/_structs.h" 3 4
|
|
struct __darwin_mcontext32
|
|
{
|
|
struct __darwin_i386_exception_state __es;
|
|
struct __darwin_i386_thread_state __ss;
|
|
struct __darwin_i386_float_state __fs;
|
|
};
|
|
# 68 "/usr/include/i386/_structs.h" 3 4
|
|
struct __darwin_mcontext64
|
|
{
|
|
struct __darwin_x86_exception_state64 __es;
|
|
struct __darwin_x86_thread_state64 __ss;
|
|
struct __darwin_x86_float_state64 __fs;
|
|
};
|
|
# 94 "/usr/include/i386/_structs.h" 3 4
|
|
typedef struct __darwin_mcontext32 *mcontext_t;
|
|
# 32 "/usr/include/machine/_structs.h" 2 3 4
|
|
# 58 "/usr/include/sys/_structs.h" 2 3 4
|
|
# 75 "/usr/include/sys/_structs.h" 3 4
|
|
struct __darwin_sigaltstack
|
|
{
|
|
void *ss_sp;
|
|
__darwin_size_t ss_size;
|
|
int ss_flags;
|
|
};
|
|
# 128 "/usr/include/sys/_structs.h" 3 4
|
|
struct __darwin_ucontext
|
|
{
|
|
int uc_onstack;
|
|
__darwin_sigset_t uc_sigmask;
|
|
struct __darwin_sigaltstack uc_stack;
|
|
struct __darwin_ucontext *uc_link;
|
|
__darwin_size_t uc_mcsize;
|
|
struct __darwin_mcontext32 *uc_mcontext;
|
|
|
|
|
|
|
|
};
|
|
# 218 "/usr/include/sys/_structs.h" 3 4
|
|
typedef struct __darwin_sigaltstack stack_t;
|
|
# 227 "/usr/include/sys/_structs.h" 3 4
|
|
typedef struct __darwin_ucontext ucontext_t;
|
|
# 155 "/usr/include/sys/signal.h" 2 3 4
|
|
# 168 "/usr/include/sys/signal.h" 3 4
|
|
typedef __darwin_sigset_t sigset_t;
|
|
# 181 "/usr/include/sys/signal.h" 3 4
|
|
union sigval {
|
|
|
|
int sival_int;
|
|
void *sival_ptr;
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct sigevent {
|
|
int sigev_notify;
|
|
int sigev_signo;
|
|
union sigval sigev_value;
|
|
void (*sigev_notify_function)(union sigval);
|
|
pthread_attr_t *sigev_notify_attributes;
|
|
};
|
|
|
|
|
|
typedef struct __siginfo {
|
|
int si_signo;
|
|
int si_errno;
|
|
int si_code;
|
|
pid_t si_pid;
|
|
uid_t si_uid;
|
|
int si_status;
|
|
void *si_addr;
|
|
union sigval si_value;
|
|
long si_band;
|
|
unsigned long __pad[7];
|
|
} siginfo_t;
|
|
# 292 "/usr/include/sys/signal.h" 3 4
|
|
union __sigaction_u {
|
|
void (*__sa_handler)(int);
|
|
void (*__sa_sigaction)(int, struct __siginfo *,
|
|
void *);
|
|
};
|
|
|
|
|
|
struct __sigaction {
|
|
union __sigaction_u __sigaction_u;
|
|
void (*sa_tramp)(void *, int, int, siginfo_t *, void *);
|
|
sigset_t sa_mask;
|
|
int sa_flags;
|
|
};
|
|
|
|
|
|
|
|
|
|
struct sigaction {
|
|
union __sigaction_u __sigaction_u;
|
|
sigset_t sa_mask;
|
|
int sa_flags;
|
|
};
|
|
# 354 "/usr/include/sys/signal.h" 3 4
|
|
typedef void (*sig_t)(int);
|
|
# 371 "/usr/include/sys/signal.h" 3 4
|
|
struct sigvec {
|
|
void (*sv_handler)(int);
|
|
int sv_mask;
|
|
int sv_flags;
|
|
};
|
|
# 390 "/usr/include/sys/signal.h" 3 4
|
|
struct sigstack {
|
|
char *ss_sp;
|
|
int ss_onstack;
|
|
};
|
|
# 412 "/usr/include/sys/signal.h" 3 4
|
|
|
|
void (*signal(int, void (*)(int)))(int);
|
|
|
|
# 117 "/usr/include/sys/wait.h" 2 3 4
|
|
# 1 "/usr/include/sys/resource.h" 1 3 4
|
|
# 76 "/usr/include/sys/resource.h" 3 4
|
|
# 1 "/usr/include/sys/_structs.h" 1 3 4
|
|
# 100 "/usr/include/sys/_structs.h" 3 4
|
|
struct timeval
|
|
{
|
|
__darwin_time_t tv_sec;
|
|
__darwin_suseconds_t tv_usec;
|
|
};
|
|
# 77 "/usr/include/sys/resource.h" 2 3 4
|
|
# 88 "/usr/include/sys/resource.h" 3 4
|
|
typedef __uint64_t rlim_t;
|
|
# 142 "/usr/include/sys/resource.h" 3 4
|
|
struct rusage {
|
|
struct timeval ru_utime;
|
|
struct timeval ru_stime;
|
|
# 153 "/usr/include/sys/resource.h" 3 4
|
|
long ru_maxrss;
|
|
|
|
long ru_ixrss;
|
|
long ru_idrss;
|
|
long ru_isrss;
|
|
long ru_minflt;
|
|
long ru_majflt;
|
|
long ru_nswap;
|
|
long ru_inblock;
|
|
long ru_oublock;
|
|
long ru_msgsnd;
|
|
long ru_msgrcv;
|
|
long ru_nsignals;
|
|
long ru_nvcsw;
|
|
long ru_nivcsw;
|
|
|
|
|
|
};
|
|
# 213 "/usr/include/sys/resource.h" 3 4
|
|
struct rlimit {
|
|
rlim_t rlim_cur;
|
|
rlim_t rlim_max;
|
|
};
|
|
# 235 "/usr/include/sys/resource.h" 3 4
|
|
|
|
int getpriority(int, id_t);
|
|
|
|
int getiopolicy_np(int, int);
|
|
|
|
int getrlimit(int, struct rlimit *) __asm("_" "getrlimit" "$UNIX2003");
|
|
int getrusage(int, struct rusage *);
|
|
int setpriority(int, id_t, int);
|
|
|
|
int setiopolicy_np(int, int, int);
|
|
|
|
int setrlimit(int, const struct rlimit *) __asm("_" "setrlimit" "$UNIX2003");
|
|
|
|
# 118 "/usr/include/sys/wait.h" 2 3 4
|
|
# 201 "/usr/include/sys/wait.h" 3 4
|
|
union wait {
|
|
int w_status;
|
|
|
|
|
|
|
|
struct {
|
|
|
|
unsigned int w_Termsig:7,
|
|
w_Coredump:1,
|
|
w_Retcode:8,
|
|
w_Filler:16;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} w_T;
|
|
|
|
|
|
|
|
|
|
|
|
struct {
|
|
|
|
unsigned int w_Stopval:8,
|
|
w_Stopsig:8,
|
|
w_Filler:16;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} w_S;
|
|
};
|
|
# 254 "/usr/include/sys/wait.h" 3 4
|
|
|
|
pid_t wait(int *) __asm("_" "wait" "$UNIX2003");
|
|
pid_t waitpid(pid_t, int *, int) __asm("_" "waitpid" "$UNIX2003");
|
|
|
|
int waitid(idtype_t, id_t, siginfo_t *, int) __asm("_" "waitid" "$UNIX2003");
|
|
|
|
|
|
pid_t wait3(int *, int, struct rusage *);
|
|
pid_t wait4(pid_t, int *, int, struct rusage *);
|
|
|
|
|
|
# 66 "/usr/include/stdlib.h" 2 3 4
|
|
|
|
# 1 "/usr/include/alloca.h" 1 3 4
|
|
# 35 "/usr/include/alloca.h" 3 4
|
|
|
|
void *alloca(size_t);
|
|
|
|
# 68 "/usr/include/stdlib.h" 2 3 4
|
|
# 81 "/usr/include/stdlib.h" 3 4
|
|
typedef __darwin_ct_rune_t ct_rune_t;
|
|
|
|
|
|
|
|
|
|
typedef __darwin_rune_t rune_t;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef __darwin_wchar_t wchar_t;
|
|
|
|
|
|
|
|
typedef struct {
|
|
int quot;
|
|
int rem;
|
|
} div_t;
|
|
|
|
typedef struct {
|
|
long quot;
|
|
long rem;
|
|
} ldiv_t;
|
|
|
|
|
|
typedef struct {
|
|
long long quot;
|
|
long long rem;
|
|
} lldiv_t;
|
|
# 134 "/usr/include/stdlib.h" 3 4
|
|
extern int __mb_cur_max;
|
|
# 144 "/usr/include/stdlib.h" 3 4
|
|
|
|
void abort(void) __attribute__((__noreturn__));
|
|
int abs(int) __attribute__((__const__));
|
|
int atexit(void (*)(void));
|
|
double atof(const char *);
|
|
int atoi(const char *);
|
|
long atol(const char *);
|
|
|
|
long long
|
|
atoll(const char *);
|
|
|
|
void *bsearch(const void *, const void *, size_t,
|
|
size_t, int (*)(const void *, const void *));
|
|
void *calloc(size_t, size_t);
|
|
div_t div(int, int) __attribute__((__const__));
|
|
void exit(int) __attribute__((__noreturn__));
|
|
void free(void *);
|
|
char *getenv(const char *);
|
|
long labs(long) __attribute__((__const__));
|
|
ldiv_t ldiv(long, long) __attribute__((__const__));
|
|
|
|
long long
|
|
llabs(long long);
|
|
lldiv_t lldiv(long long, long long);
|
|
|
|
void *malloc(size_t);
|
|
int mblen(const char *, size_t);
|
|
size_t mbstowcs(wchar_t * , const char * , size_t);
|
|
int mbtowc(wchar_t * , const char * , size_t);
|
|
void qsort(void *, size_t, size_t,
|
|
int (*)(const void *, const void *));
|
|
int rand(void);
|
|
void *realloc(void *, size_t);
|
|
void srand(unsigned);
|
|
double strtod(const char *, char **) __asm("_" "strtod" "$UNIX2003");
|
|
float strtof(const char *, char **) __asm("_" "strtof" "$UNIX2003");
|
|
long strtol(const char *, char **, int);
|
|
long double
|
|
strtold(const char *, char **) ;
|
|
|
|
long long
|
|
strtoll(const char *, char **, int);
|
|
|
|
unsigned long
|
|
strtoul(const char *, char **, int);
|
|
|
|
unsigned long long
|
|
strtoull(const char *, char **, int);
|
|
|
|
int system(const char *) __asm("_" "system" "$UNIX2003");
|
|
size_t wcstombs(char * , const wchar_t * , size_t);
|
|
int wctomb(char *, wchar_t);
|
|
|
|
|
|
void _Exit(int) __attribute__((__noreturn__));
|
|
long a64l(const char *);
|
|
double drand48(void);
|
|
char *ecvt(double, int, int *, int *);
|
|
double erand48(unsigned short[3]);
|
|
char *fcvt(double, int, int *, int *);
|
|
char *gcvt(double, int, char *);
|
|
int getsubopt(char **, char * const *, char **);
|
|
int grantpt(int);
|
|
|
|
char *initstate(unsigned, char *, size_t);
|
|
|
|
|
|
|
|
long jrand48(unsigned short[3]);
|
|
char *l64a(long);
|
|
void lcong48(unsigned short[7]);
|
|
long lrand48(void);
|
|
char *mktemp(char *);
|
|
int mkstemp(char *);
|
|
long mrand48(void);
|
|
long nrand48(unsigned short[3]);
|
|
int posix_openpt(int);
|
|
char *ptsname(int);
|
|
int putenv(char *) __asm("_" "putenv" "$UNIX2003");
|
|
long random(void);
|
|
int rand_r(unsigned *);
|
|
|
|
char *realpath(const char * , char * ) __asm("_" "realpath" "$DARWIN_EXTSN");
|
|
|
|
|
|
|
|
unsigned short
|
|
*seed48(unsigned short[3]);
|
|
int setenv(const char *, const char *, int) __asm("_" "setenv" "$UNIX2003");
|
|
|
|
void setkey(const char *) __asm("_" "setkey" "$UNIX2003");
|
|
|
|
|
|
|
|
char *setstate(const char *);
|
|
void srand48(long);
|
|
|
|
void srandom(unsigned);
|
|
|
|
|
|
|
|
int unlockpt(int);
|
|
|
|
int unsetenv(const char *) __asm("_" "unsetenv" "$UNIX2003");
|
|
# 266 "/usr/include/stdlib.h" 3 4
|
|
u_int32_t
|
|
arc4random(void);
|
|
void arc4random_addrandom(unsigned char *dat, int datlen);
|
|
void arc4random_stir(void);
|
|
|
|
|
|
char *cgetcap(char *, const char *, int);
|
|
int cgetclose(void);
|
|
int cgetent(char **, char **, const char *);
|
|
int cgetfirst(char **, char **);
|
|
int cgetmatch(const char *, const char *);
|
|
int cgetnext(char **, char **);
|
|
int cgetnum(char *, const char *, long *);
|
|
int cgetset(const char *);
|
|
int cgetstr(char *, const char *, char **);
|
|
int cgetustr(char *, const char *, char **);
|
|
|
|
int daemon(int, int) __asm("_" "daemon" "$1050") __attribute__((deprecated));
|
|
char *devname(dev_t, mode_t);
|
|
char *devname_r(dev_t, mode_t, char *buf, int len);
|
|
char *getbsize(int *, long *);
|
|
int getloadavg(double [], int);
|
|
const char
|
|
*getprogname(void);
|
|
|
|
int heapsort(void *, size_t, size_t,
|
|
int (*)(const void *, const void *));
|
|
int mergesort(void *, size_t, size_t,
|
|
int (*)(const void *, const void *));
|
|
void qsort_r(void *, size_t, size_t, void *,
|
|
int (*)(void *, const void *, const void *));
|
|
int radixsort(const unsigned char **, int, const unsigned char *,
|
|
unsigned);
|
|
void setprogname(const char *);
|
|
int sradixsort(const unsigned char **, int, const unsigned char *,
|
|
unsigned);
|
|
void sranddev(void);
|
|
void srandomdev(void);
|
|
void *reallocf(void *, size_t);
|
|
|
|
long long
|
|
strtoq(const char *, char **, int);
|
|
unsigned long long
|
|
strtouq(const char *, char **, int);
|
|
|
|
extern char *suboptarg;
|
|
void *valloc(size_t);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 300 "../include/unixconf.h" 2
|
|
# 1 "/usr/include/unistd.h" 1 3 4
|
|
# 72 "/usr/include/unistd.h" 3 4
|
|
# 1 "/usr/include/sys/unistd.h" 1 3 4
|
|
# 138 "/usr/include/sys/unistd.h" 3 4
|
|
struct accessx_descriptor {
|
|
unsigned int ad_name_offset;
|
|
int ad_flags;
|
|
int ad_pad[2];
|
|
};
|
|
# 73 "/usr/include/unistd.h" 2 3 4
|
|
# 133 "/usr/include/unistd.h" 3 4
|
|
typedef __darwin_uuid_t uuid_t;
|
|
# 414 "/usr/include/unistd.h" 3 4
|
|
|
|
|
|
void _exit(int) __attribute__((__noreturn__));
|
|
int access(const char *, int);
|
|
unsigned int
|
|
alarm(unsigned int);
|
|
int chdir(const char *);
|
|
int chown(const char *, uid_t, gid_t);
|
|
int close(int) __asm("_" "close" "$UNIX2003");
|
|
size_t confstr(int, char *, size_t) __asm("_" "confstr" "$UNIX2003");
|
|
char *crypt(const char *, const char *);
|
|
char *ctermid(char *);
|
|
int dup(int);
|
|
int dup2(int, int);
|
|
|
|
void encrypt(char *, int) __asm("_" "encrypt" "$UNIX2003");
|
|
|
|
|
|
|
|
int execl(const char *, const char *, ...);
|
|
int execle(const char *, const char *, ...);
|
|
int execlp(const char *, const char *, ...);
|
|
int execv(const char *, char * const *);
|
|
int execve(const char *, char * const *, char * const *);
|
|
int execvp(const char *, char * const *);
|
|
int fchown(int, uid_t, gid_t);
|
|
int fchdir(int);
|
|
pid_t fork(void);
|
|
long fpathconf(int, int);
|
|
int fsync(int) __asm("_" "fsync" "$UNIX2003");
|
|
int ftruncate(int, off_t);
|
|
char *getcwd(char *, size_t);
|
|
gid_t getegid(void);
|
|
uid_t geteuid(void);
|
|
gid_t getgid(void);
|
|
int getgroups(int, gid_t []);
|
|
long gethostid(void);
|
|
int gethostname(char *, size_t);
|
|
char *getlogin(void);
|
|
int getlogin_r(char *, size_t);
|
|
int getopt(int, char * const [], const char *) __asm("_" "getopt" "$UNIX2003");
|
|
pid_t getpgid(pid_t);
|
|
pid_t getpgrp(void);
|
|
pid_t getpid(void);
|
|
pid_t getppid(void);
|
|
pid_t getsid(pid_t);
|
|
uid_t getuid(void);
|
|
char *getwd(char *);
|
|
int isatty(int);
|
|
int lchown(const char *, uid_t, gid_t) __asm("_" "lchown" "$UNIX2003");
|
|
int link(const char *, const char *);
|
|
int lockf(int, int, off_t) __asm("_" "lockf" "$UNIX2003");
|
|
off_t lseek(int, off_t, int);
|
|
int nice(int) __asm("_" "nice" "$UNIX2003");
|
|
long pathconf(const char *, int);
|
|
int pause(void) __asm("_" "pause" "$UNIX2003");
|
|
int pipe(int [2]);
|
|
ssize_t pread(int, void *, size_t, off_t) __asm("_" "pread" "$UNIX2003");
|
|
ssize_t pwrite(int, const void *, size_t, off_t) __asm("_" "pwrite" "$UNIX2003");
|
|
ssize_t read(int, void *, size_t) __asm("_" "read" "$UNIX2003");
|
|
ssize_t readlink(const char * , char * , size_t);
|
|
int rmdir(const char *);
|
|
int setegid(gid_t);
|
|
int seteuid(uid_t);
|
|
int setgid(gid_t);
|
|
int setpgid(pid_t, pid_t);
|
|
|
|
pid_t setpgrp(void) __asm("_" "setpgrp" "$UNIX2003");
|
|
|
|
|
|
|
|
int setregid(gid_t, gid_t) __asm("_" "setregid" "$UNIX2003");
|
|
int setreuid(uid_t, uid_t) __asm("_" "setreuid" "$UNIX2003");
|
|
pid_t setsid(void);
|
|
int setuid(uid_t);
|
|
unsigned int
|
|
sleep(unsigned int) __asm("_" "sleep" "$UNIX2003");
|
|
void swab(const void * , void * , ssize_t);
|
|
int symlink(const char *, const char *);
|
|
void sync(void);
|
|
long sysconf(int);
|
|
pid_t tcgetpgrp(int);
|
|
int tcsetpgrp(int, pid_t);
|
|
int truncate(const char *, off_t);
|
|
char *ttyname(int);
|
|
|
|
int ttyname_r(int, char *, size_t) __asm("_" "ttyname_r" "$UNIX2003");
|
|
|
|
|
|
|
|
useconds_t
|
|
ualarm(useconds_t, useconds_t);
|
|
int unlink(const char *);
|
|
int usleep(useconds_t) __asm("_" "usleep" "$UNIX2003");
|
|
pid_t vfork(void);
|
|
ssize_t write(int, const void *, size_t) __asm("_" "write" "$UNIX2003");
|
|
|
|
extern char *optarg;
|
|
extern int optind, opterr, optopt;
|
|
|
|
|
|
# 1 "/usr/include/sys/select.h" 1 3 4
|
|
# 78 "/usr/include/sys/select.h" 3 4
|
|
# 1 "/usr/include/sys/_structs.h" 1 3 4
|
|
# 79 "/usr/include/sys/select.h" 2 3 4
|
|
# 134 "/usr/include/sys/select.h" 3 4
|
|
|
|
|
|
|
|
int pselect(int, fd_set * , fd_set * ,
|
|
fd_set * , const struct timespec * ,
|
|
const sigset_t * )
|
|
|
|
|
|
|
|
|
|
|
|
|
|
__asm("_" "pselect" "$UNIX2003")
|
|
|
|
|
|
;
|
|
|
|
|
|
# 1 "/usr/include/sys/_select.h" 1 3 4
|
|
# 39 "/usr/include/sys/_select.h" 3 4
|
|
int select(int, fd_set * , fd_set * ,
|
|
fd_set * , struct timeval * )
|
|
|
|
|
|
|
|
|
|
|
|
|
|
__asm("_" "select" "$UNIX2003")
|
|
|
|
|
|
;
|
|
# 153 "/usr/include/sys/select.h" 2 3 4
|
|
|
|
|
|
# 516 "/usr/include/unistd.h" 2 3 4
|
|
|
|
void _Exit(int) __attribute__((__noreturn__));
|
|
int accessx_np(const struct accessx_descriptor *, size_t, int *, uid_t);
|
|
int acct(const char *);
|
|
int add_profil(char *, size_t, unsigned long, unsigned int);
|
|
void *brk(const void *);
|
|
int chroot(const char *);
|
|
void endusershell(void);
|
|
int execvP(const char *, const char *, char * const *);
|
|
char *fflagstostr(unsigned long);
|
|
int getdtablesize(void);
|
|
int getdomainname(char *, int);
|
|
int getgrouplist(const char *, int, int *, int *);
|
|
mode_t getmode(const void *, mode_t);
|
|
int getpagesize(void) __attribute__((__const__));
|
|
char *getpass(const char *);
|
|
int getpeereid(int, uid_t *, gid_t *);
|
|
int getpgid(pid_t _pid);
|
|
int getsgroups_np(int *, uuid_t);
|
|
int getsid(pid_t _pid);
|
|
char *getusershell(void);
|
|
int getwgroups_np(int *, uuid_t);
|
|
int initgroups(const char *, int);
|
|
int iruserok(unsigned long, int, const char *, const char *);
|
|
int iruserok_sa(const void *, int, int, const char *, const char *);
|
|
int issetugid(void);
|
|
char *mkdtemp(char *);
|
|
int mknod(const char *, mode_t, dev_t);
|
|
int mkstemp(char *);
|
|
int mkstemps(char *, int);
|
|
char *mktemp(char *);
|
|
int nfssvc(int, void *);
|
|
int profil(char *, size_t, unsigned long, unsigned int);
|
|
int pthread_setugid_np(uid_t, gid_t);
|
|
int pthread_getugid_np( uid_t *, gid_t *);
|
|
int rcmd(char **, int, const char *, const char *, const char *, int *);
|
|
int rcmd_af(char **, int, const char *, const char *, const char *, int *,
|
|
int);
|
|
int reboot(int);
|
|
int revoke(const char *);
|
|
int rresvport(int *);
|
|
int rresvport_af(int *, int);
|
|
int ruserok(const char *, int, const char *, const char *);
|
|
void *sbrk(int);
|
|
int setdomainname(const char *, int);
|
|
int setgroups(int, const gid_t *);
|
|
void sethostid(long);
|
|
int sethostname(const char *, int);
|
|
|
|
void setkey(const char *) __asm("_" "setkey" "$UNIX2003");
|
|
|
|
|
|
|
|
int setlogin(const char *);
|
|
void *setmode(const char *);
|
|
int setrgid(gid_t);
|
|
int setruid(uid_t);
|
|
int setsgroups_np(int, const uuid_t);
|
|
void setusershell(void);
|
|
int setwgroups_np(int, const uuid_t);
|
|
int strtofflags(char **, unsigned long *, unsigned long *);
|
|
int swapon(const char *);
|
|
int syscall(int, ...);
|
|
int ttyslot(void);
|
|
int undelete(const char *);
|
|
int unwhiteout(const char *);
|
|
void *valloc(size_t);
|
|
|
|
extern char *suboptarg;
|
|
int getsubopt(char **, char * const *, char **);
|
|
# 597 "/usr/include/unistd.h" 3 4
|
|
int getattrlist(const char*,void*,void*,size_t,unsigned long) __asm("_" "getattrlist" "$UNIX2003");
|
|
int setattrlist(const char*,void*,void*,size_t,unsigned long) __asm("_" "setattrlist" "$UNIX2003");
|
|
int exchangedata(const char*,const char*,unsigned long);
|
|
int getdirentriesattr(int,void*,void*,size_t,unsigned long*,unsigned long*,unsigned long*,unsigned long);
|
|
int searchfs(const char*,void*,void*,unsigned long,unsigned long,void*);
|
|
|
|
int fsctl(const char *,unsigned long,void*,unsigned long);
|
|
|
|
|
|
extern int optreset;
|
|
|
|
|
|
|
|
# 301 "../include/unixconf.h" 2
|
|
# 122 "../include/global.h" 2
|
|
# 274 "../include/global.h"
|
|
extern long *alloc (unsigned int);
|
|
extern char *dupstr (const char *);
|
|
|
|
|
|
|
|
|
|
struct version_info {
|
|
unsigned long incarnation;
|
|
unsigned long feature_set;
|
|
unsigned long entity_count;
|
|
unsigned long struct_sizes1;
|
|
unsigned long struct_sizes2;
|
|
};
|
|
|
|
struct savefile_info {
|
|
unsigned long sfi1;
|
|
unsigned long sfi2;
|
|
unsigned long sfi3;
|
|
};
|
|
# 444 "../include/config.h" 2
|
|
# 12 "../include/hack.h" 2
|
|
|
|
# 1 "../include/lint.h" 1
|
|
# 14 "../include/hack.h" 2
|
|
# 120 "../include/hack.h"
|
|
# 1 "../include/align.h" 1
|
|
# 10 "../include/align.h"
|
|
typedef schar aligntyp;
|
|
|
|
typedef struct align {
|
|
aligntyp type;
|
|
int record;
|
|
} align;
|
|
# 121 "../include/hack.h" 2
|
|
# 1 "../include/dungeon.h" 1
|
|
# 9 "../include/dungeon.h"
|
|
typedef struct d_flags {
|
|
unsigned town:1;
|
|
unsigned hellish:1;
|
|
unsigned maze_like:1;
|
|
unsigned rogue_like:1;
|
|
unsigned align:3;
|
|
unsigned unused:1;
|
|
} d_flags;
|
|
|
|
typedef struct d_level {
|
|
xchar dnum;
|
|
xchar dlevel;
|
|
} d_level;
|
|
|
|
typedef struct s_level {
|
|
struct s_level *next;
|
|
d_level dlevel;
|
|
char proto[15];
|
|
char boneid;
|
|
uchar rndlevs;
|
|
d_flags flags;
|
|
} s_level;
|
|
|
|
typedef struct stairway {
|
|
xchar sx, sy;
|
|
d_level tolev;
|
|
char up;
|
|
} stairway;
|
|
# 47 "../include/dungeon.h"
|
|
typedef struct dest_area {
|
|
xchar lx, ly;
|
|
xchar hx, hy;
|
|
xchar nlx, nly;
|
|
xchar nhx, nhy;
|
|
} dest_area;
|
|
|
|
typedef struct dungeon {
|
|
char dname[24];
|
|
char proto[15];
|
|
char boneid;
|
|
d_flags flags;
|
|
xchar entry_lev;
|
|
xchar num_dunlevs;
|
|
xchar dunlev_ureached;
|
|
int ledger_start,
|
|
depth_start;
|
|
} dungeon;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct branch {
|
|
struct branch *next;
|
|
int id;
|
|
int type;
|
|
d_level end1;
|
|
d_level end2;
|
|
boolean end1_up;
|
|
} branch;
|
|
# 153 "../include/dungeon.h"
|
|
struct linfo {
|
|
unsigned char flags;
|
|
# 172 "../include/dungeon.h"
|
|
};
|
|
# 197 "../include/dungeon.h"
|
|
typedef struct mapseen {
|
|
struct mapseen *next;
|
|
branch *br;
|
|
d_level lev;
|
|
struct mapseen_feat {
|
|
|
|
unsigned nfount:2;
|
|
unsigned nsink:2;
|
|
unsigned naltar:2;
|
|
unsigned nthrone:2;
|
|
|
|
unsigned ngrave:2;
|
|
unsigned ntree:2;
|
|
unsigned water:2;
|
|
unsigned lava:2;
|
|
|
|
unsigned ice:2;
|
|
|
|
unsigned nshop:2;
|
|
unsigned ntemple:2;
|
|
|
|
|
|
unsigned msalign:2;
|
|
|
|
unsigned shoptype:5;
|
|
} feat;
|
|
struct mapseen_flags {
|
|
unsigned unreachable:1;
|
|
unsigned forgot:1;
|
|
unsigned knownbones:1;
|
|
unsigned oracle:1;
|
|
unsigned sokosolved:1;
|
|
unsigned bigroom:1;
|
|
unsigned castle:1;
|
|
unsigned castletune:1;
|
|
|
|
unsigned valley:1;
|
|
unsigned msanctum:1;
|
|
unsigned ludios:1;
|
|
unsigned roguelevel:1;
|
|
} flags;
|
|
|
|
char *custom;
|
|
unsigned custom_lth;
|
|
struct mapseen_rooms {
|
|
unsigned seen:1;
|
|
unsigned untended:1;
|
|
} msrooms[(40 +1)*2];
|
|
|
|
struct cemetery *final_resting_place;
|
|
} mapseen;
|
|
# 122 "../include/hack.h" 2
|
|
# 1 "../include/monsym.h" 1
|
|
# 123 "../include/hack.h" 2
|
|
# 1 "../include/mkroom.h" 1
|
|
# 11 "../include/mkroom.h"
|
|
struct mkroom {
|
|
schar lx,hx,ly,hy;
|
|
schar rtype;
|
|
schar orig_rtype;
|
|
schar rlit;
|
|
schar needfill;
|
|
schar needjoining;
|
|
schar doorct;
|
|
schar fdoor;
|
|
schar nsubrooms;
|
|
boolean irregular;
|
|
struct mkroom *sbrooms[24];
|
|
struct monst *resident;
|
|
};
|
|
|
|
struct shclass {
|
|
const char *name;
|
|
char symb;
|
|
int prob;
|
|
schar shdist;
|
|
|
|
|
|
|
|
struct itp {
|
|
int iprob;
|
|
int itype;
|
|
} iprobs[6];
|
|
const char * const *shknms;
|
|
};
|
|
|
|
extern struct mkroom rooms[(40 +1)*2];
|
|
extern struct mkroom* subrooms;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern struct mkroom *dnstairs_room, *upstairs_room, *sstairs_room;
|
|
|
|
extern coord doors[120];
|
|
# 124 "../include/hack.h" 2
|
|
# 1 "../include/objclass.h" 1
|
|
# 12 "../include/objclass.h"
|
|
struct objclass {
|
|
short oc_name_idx;
|
|
short oc_descr_idx;
|
|
char * oc_uname;
|
|
unsigned oc_name_known:1;
|
|
unsigned oc_merge:1;
|
|
unsigned oc_uses_known:1;
|
|
|
|
|
|
|
|
unsigned oc_pre_discovered:1;
|
|
|
|
unsigned oc_magic:1;
|
|
unsigned oc_charged:1;
|
|
unsigned oc_unique:1;
|
|
unsigned oc_nowish:1;
|
|
|
|
unsigned oc_big:1;
|
|
|
|
|
|
unsigned oc_tough:1;
|
|
|
|
unsigned oc_dir:2;
|
|
# 45 "../include/objclass.h"
|
|
unsigned oc_material:5;
|
|
# 82 "../include/objclass.h"
|
|
schar oc_subtyp;
|
|
# 93 "../include/objclass.h"
|
|
uchar oc_oprop;
|
|
char oc_class;
|
|
schar oc_delay;
|
|
uchar oc_color;
|
|
|
|
short oc_prob;
|
|
unsigned short oc_weight;
|
|
short oc_cost;
|
|
|
|
|
|
schar oc_wsdam, oc_wldam;
|
|
schar oc_oc1, oc_oc2;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
unsigned short oc_nutrition;
|
|
};
|
|
|
|
struct class_sym {
|
|
char sym;
|
|
const char *name;
|
|
const char *explain;
|
|
};
|
|
|
|
struct objdescr {
|
|
const char *oc_name;
|
|
const char *oc_descr;
|
|
};
|
|
|
|
extern struct objclass objects[];
|
|
extern struct objdescr obj_descr[];
|
|
# 184 "../include/objclass.h"
|
|
struct fruit {
|
|
char fname[32];
|
|
int fid;
|
|
struct fruit *nextf;
|
|
};
|
|
# 125 "../include/hack.h" 2
|
|
# 1 "../include/youprop.h" 1
|
|
# 9 "../include/youprop.h"
|
|
# 1 "../include/prop.h" 1
|
|
# 89 "../include/prop.h"
|
|
struct prop {
|
|
|
|
long extrinsic;
|
|
# 118 "../include/prop.h"
|
|
long blocked;
|
|
|
|
|
|
long intrinsic;
|
|
# 132 "../include/prop.h"
|
|
};
|
|
# 10 "../include/youprop.h" 2
|
|
# 1 "../include/permonst.h" 1
|
|
# 22 "../include/permonst.h"
|
|
struct attack {
|
|
uchar aatyp;
|
|
uchar adtyp, damn, damd;
|
|
};
|
|
# 40 "../include/permonst.h"
|
|
# 1 "../include/monattk.h" 1
|
|
# 41 "../include/permonst.h" 2
|
|
# 1 "../include/monflag.h" 1
|
|
# 42 "../include/permonst.h" 2
|
|
|
|
struct permonst {
|
|
const char *mname;
|
|
char mlet;
|
|
schar mlevel,
|
|
mmove,
|
|
ac,
|
|
mr;
|
|
aligntyp maligntyp;
|
|
unsigned short geno;
|
|
struct attack mattk[6];
|
|
unsigned short cwt,
|
|
cnutrit;
|
|
uchar msound;
|
|
uchar msize;
|
|
uchar mresists;
|
|
uchar mconveys;
|
|
unsigned long mflags1,
|
|
mflags2;
|
|
unsigned short mflags3;
|
|
|
|
uchar mcolor;
|
|
|
|
};
|
|
|
|
extern struct permonst
|
|
mons[];
|
|
# 11 "../include/youprop.h" 2
|
|
# 1 "../include/mondata.h" 1
|
|
# 12 "../include/youprop.h" 2
|
|
# 1 "../include/pm.h" 1
|
|
# 13 "../include/youprop.h" 2
|
|
# 126 "../include/hack.h" 2
|
|
# 1 "../include/wintype.h" 1
|
|
# 10 "../include/wintype.h"
|
|
typedef int winid;
|
|
|
|
|
|
typedef union any {
|
|
genericptr_t a_void;
|
|
struct obj *a_obj;
|
|
struct monst *a_monst;
|
|
int a_int;
|
|
char a_char;
|
|
schar a_schar;
|
|
unsigned int a_uint;
|
|
long a_long;
|
|
unsigned long a_ulong;
|
|
int *a_iptr;
|
|
long *a_lptr;
|
|
unsigned long *a_ulptr;
|
|
unsigned *a_uptr;
|
|
|
|
} anything;
|
|
# 51 "../include/wintype.h"
|
|
typedef struct mi {
|
|
anything item;
|
|
long count;
|
|
} menu_item;
|
|
# 127 "../include/hack.h" 2
|
|
# 1 "../include/context.h" 1
|
|
# 23 "../include/context.h"
|
|
struct dig_info {
|
|
int effort;
|
|
d_level level;
|
|
coord pos;
|
|
long lastdigtime;
|
|
boolean down, chew, warned, quiet;
|
|
};
|
|
|
|
struct tin_info {
|
|
struct obj *tin;
|
|
unsigned o_id;
|
|
int usedtime, reqtime;
|
|
};
|
|
|
|
struct book_info {
|
|
struct obj *book;
|
|
unsigned o_id;
|
|
schar delay;
|
|
};
|
|
|
|
struct takeoff_info {
|
|
long mask;
|
|
long what;
|
|
int delay;
|
|
boolean cancelled_don;
|
|
char disrobing[30 +1];
|
|
};
|
|
|
|
struct victual_info {
|
|
struct obj *piece;
|
|
|
|
|
|
|
|
unsigned o_id;
|
|
|
|
int usedtime,
|
|
reqtime;
|
|
int nmod;
|
|
unsigned canchoke:1;
|
|
|
|
|
|
unsigned fullwarn:1;
|
|
unsigned eating:1;
|
|
unsigned doreset:1;
|
|
};
|
|
|
|
struct warntype_info {
|
|
unsigned long obj;
|
|
unsigned long polyd;
|
|
struct permonst *species;
|
|
short speciesidx;
|
|
};
|
|
|
|
struct polearm_info {
|
|
struct monst *hitmon;
|
|
unsigned m_id;
|
|
};
|
|
|
|
struct tribute_info {
|
|
size_t tributesz;
|
|
boolean enabled;
|
|
unsigned bookstock:1;
|
|
|
|
|
|
};
|
|
|
|
struct context_info {
|
|
unsigned ident;
|
|
unsigned no_of_wizards;
|
|
unsigned run;
|
|
|
|
|
|
unsigned startingpet_mid;
|
|
int current_fruit;
|
|
int warnlevel;
|
|
int rndencode;
|
|
long next_attrib_check;
|
|
long stethoscope_move;
|
|
short stethoscope_movement;
|
|
boolean travel;
|
|
boolean travel1;
|
|
boolean forcefight;
|
|
boolean nopick;
|
|
boolean made_amulet;
|
|
boolean mon_moving;
|
|
boolean move;
|
|
boolean mv;
|
|
boolean bypasses;
|
|
boolean botl;
|
|
boolean botlx;
|
|
boolean door_opened;
|
|
struct dig_info digging;
|
|
struct victual_info victual;
|
|
struct tin_info tin;
|
|
struct book_info spbook;
|
|
struct takeoff_info takeoff;
|
|
struct warntype_info warntype;
|
|
struct polearm_info polearm;
|
|
struct tribute_info tribute;
|
|
};
|
|
|
|
extern struct context_info context;
|
|
# 128 "../include/hack.h" 2
|
|
# 1 "../include/decl.h" 1
|
|
# 11 "../include/decl.h"
|
|
extern int (*occupation)(void);
|
|
extern int (*afternmv)(void);
|
|
|
|
extern const char *hname;
|
|
extern int hackpid;
|
|
|
|
extern int locknum;
|
|
|
|
|
|
|
|
|
|
|
|
extern char SAVEF[];
|
|
|
|
|
|
|
|
|
|
extern int bases[18];
|
|
|
|
extern int multi;
|
|
extern const char *multi_reason;
|
|
extern int nroom;
|
|
extern int nsubroom;
|
|
extern int occtime;
|
|
|
|
|
|
extern nhsym warnsyms[6];
|
|
extern int warn_obj_cnt;
|
|
|
|
extern int x_maze_max, y_maze_max;
|
|
extern int otg_temp;
|
|
|
|
extern int in_doagain;
|
|
|
|
extern struct dgn_topology {
|
|
d_level d_oracle_level;
|
|
d_level d_bigroom_level;
|
|
d_level d_rogue_level;
|
|
d_level d_medusa_level;
|
|
d_level d_stronghold_level;
|
|
d_level d_valley_level;
|
|
d_level d_wiz1_level;
|
|
d_level d_wiz2_level;
|
|
d_level d_wiz3_level;
|
|
d_level d_juiblex_level;
|
|
d_level d_orcus_level;
|
|
d_level d_baalzebub_level;
|
|
d_level d_asmodeus_level;
|
|
d_level d_portal_level;
|
|
d_level d_sanctum_level;
|
|
d_level d_earth_level;
|
|
d_level d_water_level;
|
|
d_level d_fire_level;
|
|
d_level d_air_level;
|
|
d_level d_astral_level;
|
|
xchar d_tower_dnum;
|
|
xchar d_sokoban_dnum;
|
|
xchar d_mines_dnum, d_quest_dnum;
|
|
d_level d_qstart_level, d_qlocate_level, d_nemesis_level;
|
|
d_level d_knox_level;
|
|
d_level d_mineend_level;
|
|
d_level d_sokoend_level;
|
|
} dungeon_topology;
|
|
# 106 "../include/decl.h"
|
|
extern stairway dnstair, upstair;
|
|
|
|
|
|
|
|
|
|
|
|
extern stairway dnladder, upladder;
|
|
|
|
|
|
|
|
|
|
|
|
extern stairway sstairs;
|
|
|
|
extern dest_area updest, dndest;
|
|
|
|
extern coord inv_pos;
|
|
extern dungeon dungeons[];
|
|
extern s_level *sp_levchn;
|
|
|
|
|
|
# 1 "../include/quest.h" 1
|
|
# 10 "../include/quest.h"
|
|
struct q_score {
|
|
unsigned first_start:1;
|
|
unsigned met_leader:1;
|
|
unsigned not_ready:3;
|
|
unsigned pissed_off:1;
|
|
unsigned got_quest:1;
|
|
|
|
unsigned first_locate:1;
|
|
unsigned met_intermed:1;
|
|
unsigned got_final:1;
|
|
|
|
unsigned made_goal:3;
|
|
unsigned met_nemesis:1;
|
|
unsigned killed_nemesis:1;
|
|
unsigned in_battle:1;
|
|
|
|
unsigned cheater:1;
|
|
unsigned touched_artifact:1;
|
|
unsigned offered_artifact:1;
|
|
unsigned got_thanks:1;
|
|
|
|
|
|
|
|
|
|
unsigned ldrgend:2;
|
|
unsigned nemgend:2;
|
|
unsigned godgend:2;
|
|
|
|
|
|
|
|
unsigned leader_is_dead:1;
|
|
unsigned leader_m_id;
|
|
};
|
|
# 128 "../include/decl.h" 2
|
|
extern struct q_score quest_status;
|
|
|
|
extern char pl_character[32];
|
|
extern char pl_race;
|
|
|
|
extern char pl_fruit[32];
|
|
extern struct fruit *ffruit;
|
|
|
|
extern char tune[6];
|
|
|
|
|
|
extern struct linfo level_info[(16 * 32)];
|
|
|
|
extern struct sinfo {
|
|
int gameover;
|
|
int stopprint;
|
|
|
|
volatile int done_hup;
|
|
|
|
int preserve_locks;
|
|
|
|
int something_worth_saving;
|
|
int panicking;
|
|
int exiting;
|
|
int in_moveloop;
|
|
int in_impossible;
|
|
|
|
int in_paniclog;
|
|
|
|
int wizkit_wishing;
|
|
} program_state;
|
|
|
|
extern boolean restoring;
|
|
|
|
extern const char quitchars[];
|
|
extern const char vowels[];
|
|
extern const char ynchars[];
|
|
extern const char ynqchars[];
|
|
extern const char ynaqchars[];
|
|
extern const char ynNaqchars[];
|
|
extern long yn_number;
|
|
|
|
extern const char disclosure_options[];
|
|
|
|
extern int smeq[];
|
|
extern int doorindex;
|
|
extern char *save_cm;
|
|
|
|
extern struct kinfo {
|
|
struct kinfo *next;
|
|
int id;
|
|
int format;
|
|
|
|
|
|
|
|
char name[256];
|
|
} killer;
|
|
|
|
extern long done_money;
|
|
extern const char *configfile;
|
|
extern char lastconfigfile[256];
|
|
extern char plname[32];
|
|
extern char dogname[];
|
|
extern char catname[];
|
|
extern char horsename[];
|
|
extern char preferred_pet;
|
|
extern const char *occtxt;
|
|
extern const char *nomovemsg;
|
|
extern char lock[];
|
|
|
|
extern const schar xdir[], ydir[], zdir[];
|
|
|
|
extern schar tbx, tby;
|
|
|
|
extern struct multishot { int n, i; short o; boolean s; } m_shot;
|
|
|
|
extern long moves, monstermoves;
|
|
extern long wailmsg;
|
|
|
|
extern boolean in_mklev;
|
|
extern boolean stoned;
|
|
extern boolean unweapon;
|
|
extern boolean mrg_to_wielded;
|
|
extern boolean defer_see_monsters;
|
|
|
|
extern boolean in_steed_dismounting;
|
|
|
|
extern const int shield_static[];
|
|
|
|
# 1 "../include/spell.h" 1
|
|
# 15 "../include/spell.h"
|
|
struct spell {
|
|
short sp_id;
|
|
xchar sp_lev;
|
|
int sp_know;
|
|
};
|
|
# 218 "../include/decl.h" 2
|
|
extern struct spell spl_book[];
|
|
|
|
# 1 "../include/color.h" 1
|
|
# 54 "../include/color.h"
|
|
struct menucoloring {
|
|
struct nhregex *match;
|
|
char *origstr;
|
|
int color, attr;
|
|
struct menucoloring *next;
|
|
};
|
|
# 221 "../include/decl.h" 2
|
|
|
|
extern const int zapcolors[];
|
|
|
|
|
|
extern const struct class_sym def_oc_syms[18];
|
|
extern uchar oc_syms[18];
|
|
extern const struct class_sym def_monsyms[61];
|
|
extern uchar monsyms[61];
|
|
|
|
# 1 "../include/obj.h" 1
|
|
# 12 "../include/obj.h"
|
|
union vptrs {
|
|
struct obj *v_nexthere;
|
|
struct obj *v_ocontainer;
|
|
struct monst *v_ocarry;
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct oextra {
|
|
char *oname;
|
|
struct monst *omonst;
|
|
unsigned *omid;
|
|
long *olong;
|
|
char *omailcmd;
|
|
};
|
|
|
|
struct obj {
|
|
struct obj *nobj;
|
|
union vptrs v;
|
|
|
|
|
|
|
|
|
|
struct obj *cobj;
|
|
unsigned o_id;
|
|
xchar ox,oy;
|
|
short otyp;
|
|
unsigned owt;
|
|
long quan;
|
|
|
|
schar spe;
|
|
# 54 "../include/obj.h"
|
|
char oclass;
|
|
char invlet;
|
|
char oartifact;
|
|
|
|
xchar where;
|
|
# 68 "../include/obj.h"
|
|
xchar timed;
|
|
|
|
unsigned cursed:1;
|
|
unsigned blessed:1;
|
|
unsigned unpaid:1;
|
|
unsigned no_charge:1;
|
|
unsigned known:1;
|
|
unsigned dknown:1;
|
|
unsigned bknown:1;
|
|
unsigned rknown:1;
|
|
|
|
unsigned oeroded:2;
|
|
unsigned oeroded2:2;
|
|
|
|
|
|
|
|
|
|
|
|
unsigned oerodeproof:1;
|
|
unsigned olocked:1;
|
|
unsigned obroken:1;
|
|
|
|
unsigned otrapped:1;
|
|
|
|
|
|
|
|
unsigned recharged:3;
|
|
|
|
unsigned lamplit:1;
|
|
unsigned globby:1;
|
|
unsigned greased:1;
|
|
unsigned nomerge:1;
|
|
unsigned was_thrown:1;
|
|
|
|
unsigned in_use:1;
|
|
unsigned bypass:1;
|
|
unsigned cknown:1;
|
|
unsigned lknown:1;
|
|
|
|
|
|
int corpsenm;
|
|
|
|
|
|
|
|
|
|
int usecount;
|
|
|
|
unsigned oeaten;
|
|
long age;
|
|
long owornmask;
|
|
struct oextra *oextra;
|
|
};
|
|
# 231 "../include/decl.h" 2
|
|
extern struct obj *invent,
|
|
*uarm, *uarmc, *uarmh, *uarms, *uarmg, *uarmf,
|
|
*uarmu,
|
|
*uskin, *uamul, *uleft, *uright, *ublindf,
|
|
*uwep, *uswapwep, *uquiver;
|
|
|
|
extern struct obj *uchain;
|
|
extern struct obj *uball;
|
|
extern struct obj *migrating_objs;
|
|
extern struct obj *billobjs;
|
|
extern struct obj *current_wand, *thrownobj, *kickedobj;
|
|
|
|
extern struct obj zeroobj;
|
|
extern anything zeroany;
|
|
|
|
# 1 "../include/you.h" 1
|
|
# 9 "../include/you.h"
|
|
# 1 "../include/attrib.h" 1
|
|
# 39 "../include/attrib.h"
|
|
struct attribs {
|
|
schar a[6];
|
|
};
|
|
# 10 "../include/you.h" 2
|
|
# 1 "../include/monst.h" 1
|
|
# 39 "../include/monst.h"
|
|
# 1 "../include/mextra.h" 1
|
|
# 66 "../include/mextra.h"
|
|
struct fakecorridor {
|
|
xchar fx, fy, ftyp;
|
|
};
|
|
|
|
struct egd {
|
|
int fcbeg, fcend;
|
|
int vroom;
|
|
xchar gdx, gdy;
|
|
xchar ogx, ogy;
|
|
d_level gdlevel;
|
|
xchar warncnt;
|
|
unsigned gddone:1;
|
|
unsigned witness:2;
|
|
unsigned unused:5;
|
|
struct fakecorridor fakecorr[(21 +80)];
|
|
};
|
|
|
|
|
|
|
|
|
|
struct epri {
|
|
aligntyp shralign;
|
|
schar shroom;
|
|
coord shrpos;
|
|
d_level shrlevel;
|
|
long intone_time,
|
|
enter_time,
|
|
hostile_time,
|
|
peaceful_time;
|
|
};
|
|
# 105 "../include/mextra.h"
|
|
struct bill_x {
|
|
unsigned bo_id;
|
|
boolean useup;
|
|
long price;
|
|
long bquan;
|
|
};
|
|
|
|
struct eshk {
|
|
long robbed;
|
|
long credit;
|
|
long debit;
|
|
long loan;
|
|
int shoptype;
|
|
schar shoproom;
|
|
schar unused;
|
|
boolean following;
|
|
boolean surcharge;
|
|
boolean dismiss_kops;
|
|
coord shk;
|
|
coord shd;
|
|
d_level shoplevel;
|
|
int billct;
|
|
struct bill_x bill[200];
|
|
struct bill_x *bill_p;
|
|
int visitct;
|
|
char customer[32];
|
|
char shknam[32];
|
|
};
|
|
|
|
|
|
|
|
|
|
struct emin {
|
|
aligntyp min_align;
|
|
boolean renegade;
|
|
};
|
|
# 155 "../include/mextra.h"
|
|
struct edog {
|
|
long droptime;
|
|
unsigned dropdist;
|
|
int apport;
|
|
long whistletime;
|
|
long hungrytime;
|
|
coord ogoal;
|
|
int abuse;
|
|
int revivals;
|
|
int mhpmax_penalty;
|
|
unsigned killed_by_u:1;
|
|
};
|
|
|
|
|
|
|
|
|
|
struct mextra {
|
|
char *mname;
|
|
struct egd *egd;
|
|
struct epri *epri;
|
|
struct eshk *eshk;
|
|
struct emin *emin;
|
|
struct edog *edog;
|
|
int mcorpsenm;
|
|
};
|
|
# 40 "../include/monst.h" 2
|
|
|
|
|
|
struct monst {
|
|
struct monst *nmon;
|
|
struct permonst *data;
|
|
unsigned m_id;
|
|
short mnum;
|
|
short cham;
|
|
short movement;
|
|
uchar m_lev;
|
|
aligntyp malign;
|
|
|
|
xchar mx, my;
|
|
xchar mux, muy;
|
|
|
|
coord mtrack[4];
|
|
int mhp, mhpmax;
|
|
unsigned mappearance;
|
|
uchar m_ap_type;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
schar mtame;
|
|
unsigned short mintrinsics;
|
|
int mspec_used;
|
|
|
|
unsigned female:1;
|
|
unsigned minvis:1;
|
|
unsigned invis_blkd:1;
|
|
unsigned perminvis:1;
|
|
unsigned mcan:1;
|
|
unsigned mburied:1;
|
|
unsigned mundetected:1;
|
|
|
|
|
|
|
|
|
|
unsigned mcansee:1;
|
|
|
|
unsigned mspeed:2;
|
|
unsigned permspeed:2;
|
|
unsigned mrevived:1;
|
|
unsigned mcloned:1;
|
|
unsigned mavenge:1;
|
|
unsigned mflee:1;
|
|
|
|
unsigned mfleetim:7;
|
|
unsigned msleeping:1;
|
|
|
|
unsigned mblinded:7;
|
|
unsigned mstun:1;
|
|
|
|
unsigned mfrozen:7;
|
|
unsigned mcanmove:1;
|
|
|
|
unsigned mconf:1;
|
|
unsigned mpeaceful:1;
|
|
unsigned mtrapped:1;
|
|
unsigned mleashed:1;
|
|
unsigned isshk:1;
|
|
unsigned isminion:1;
|
|
unsigned isgd:1;
|
|
unsigned ispriest:1;
|
|
|
|
unsigned iswiz:1;
|
|
unsigned wormno:5;
|
|
|
|
|
|
|
|
|
|
unsigned long mstrategy;
|
|
# 135 "../include/monst.h"
|
|
long mtrapseen;
|
|
long mlstmv;
|
|
long mspare1;
|
|
struct obj *minvent;
|
|
|
|
struct obj *mw;
|
|
long misc_worn_check;
|
|
xchar weapon_check;
|
|
|
|
int meating;
|
|
struct mextra *mextra;
|
|
};
|
|
# 11 "../include/you.h" 2
|
|
|
|
|
|
|
|
# 1 "../include/skills.h" 1
|
|
# 99 "../include/skills.h"
|
|
struct skills {
|
|
xchar skill;
|
|
xchar max_skill;
|
|
unsigned short advance;
|
|
};
|
|
# 113 "../include/skills.h"
|
|
struct def_skill {
|
|
xchar skill;
|
|
xchar skmax;
|
|
};
|
|
# 15 "../include/you.h" 2
|
|
|
|
|
|
|
|
struct RoleName {
|
|
const char *m;
|
|
const char *f;
|
|
};
|
|
|
|
struct RoleAdvance {
|
|
|
|
xchar infix, inrnd;
|
|
xchar lofix, lornd;
|
|
xchar hifix, hirnd;
|
|
};
|
|
|
|
struct u_have {
|
|
unsigned amulet:1;
|
|
unsigned bell:1;
|
|
unsigned book:1;
|
|
unsigned menorah:1;
|
|
unsigned questart:1;
|
|
unsigned unused:3;
|
|
};
|
|
|
|
struct u_event {
|
|
unsigned minor_oracle:1;
|
|
unsigned major_oracle:1;
|
|
unsigned read_tribute:1;
|
|
unsigned qcalled:1;
|
|
unsigned qexpelled:1;
|
|
unsigned qcompleted:1;
|
|
unsigned uheard_tune:2;
|
|
|
|
unsigned uopened_dbridge:1;
|
|
unsigned invoked:1;
|
|
unsigned gehennom_entered:1;
|
|
unsigned uhand_of_elbereth:2;
|
|
unsigned udemigod:1;
|
|
unsigned uvibrated:1;
|
|
unsigned ascended:1;
|
|
};
|
|
|
|
struct u_achieve {
|
|
unsigned amulet:1;
|
|
unsigned bell:1;
|
|
unsigned book:1;
|
|
unsigned menorah:1;
|
|
unsigned enter_gehennom:1;
|
|
unsigned ascended:1;
|
|
unsigned mines_luckstone:1;
|
|
unsigned finish_sokoban:1;
|
|
|
|
unsigned killed_medusa:1;
|
|
};
|
|
|
|
struct u_realtime {
|
|
long realtime;
|
|
time_t restored;
|
|
time_t endtime;
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct u_conduct {
|
|
long unvegetarian;
|
|
long unvegan;
|
|
long food;
|
|
long gnostic;
|
|
long weaphit;
|
|
long killer;
|
|
long literate;
|
|
long polypiles;
|
|
long polyselfs;
|
|
long wishes;
|
|
long wisharti;
|
|
|
|
};
|
|
|
|
struct u_roleplay {
|
|
boolean blind;
|
|
boolean nudist;
|
|
long numbones;
|
|
};
|
|
|
|
|
|
struct Role {
|
|
|
|
struct RoleName name;
|
|
struct RoleName rank[9];
|
|
const char *lgod, *ngod, *cgod;
|
|
const char *filecode;
|
|
const char *homebase;
|
|
const char *intermed;
|
|
|
|
|
|
short malenum,
|
|
femalenum,
|
|
petnum,
|
|
ldrnum,
|
|
guardnum,
|
|
neminum,
|
|
enemy1num,
|
|
enemy2num;
|
|
char enemy1sym,
|
|
enemy2sym;
|
|
short questarti;
|
|
|
|
|
|
short allow;
|
|
# 138 "../include/you.h"
|
|
xchar attrbase[6];
|
|
xchar attrdist[6];
|
|
struct RoleAdvance hpadv;
|
|
struct RoleAdvance enadv;
|
|
xchar xlev;
|
|
xchar initrecord;
|
|
|
|
|
|
int spelbase;
|
|
int spelheal;
|
|
int spelshld;
|
|
int spelarmr;
|
|
int spelstat;
|
|
int spelspec;
|
|
int spelsbon;
|
|
# 165 "../include/you.h"
|
|
};
|
|
|
|
extern const struct Role roles[];
|
|
extern struct Role urole;
|
|
# 179 "../include/you.h"
|
|
struct Race {
|
|
|
|
const char *noun;
|
|
const char *adj;
|
|
const char *coll;
|
|
const char *filecode;
|
|
struct RoleName individual;
|
|
|
|
|
|
short malenum,
|
|
femalenum,
|
|
mummynum,
|
|
zombienum;
|
|
|
|
|
|
short allow;
|
|
short selfmask,
|
|
lovemask,
|
|
hatemask;
|
|
|
|
|
|
xchar attrmin[6];
|
|
xchar attrmax[6];
|
|
struct RoleAdvance hpadv;
|
|
struct RoleAdvance enadv;
|
|
# 217 "../include/you.h"
|
|
};
|
|
|
|
extern const struct Race races[];
|
|
extern struct Race urace;
|
|
|
|
|
|
|
|
|
|
struct Gender {
|
|
const char *adj;
|
|
const char *he;
|
|
const char *him;
|
|
const char *his;
|
|
const char *filecode;
|
|
short allow;
|
|
};
|
|
|
|
|
|
|
|
extern const struct Gender genders[];
|
|
# 246 "../include/you.h"
|
|
struct Align {
|
|
const char *noun;
|
|
const char *adj;
|
|
const char *filecode;
|
|
short allow;
|
|
aligntyp value;
|
|
};
|
|
|
|
|
|
extern const struct Align aligns[];
|
|
|
|
|
|
|
|
struct you {
|
|
xchar ux, uy;
|
|
schar dx, dy, dz;
|
|
schar di;
|
|
xchar tx, ty;
|
|
xchar ux0, uy0;
|
|
d_level uz, uz0;
|
|
d_level utolev;
|
|
uchar utotype;
|
|
boolean umoved;
|
|
int last_str_turn;
|
|
|
|
int ulevel;
|
|
int ulevelmax;
|
|
unsigned utrap;
|
|
unsigned utraptype;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
char urooms[5];
|
|
char urooms0[5];
|
|
char uentered[5];
|
|
char ushops[5];
|
|
char ushops0[5];
|
|
char ushops_entered[5];
|
|
char ushops_left[5];
|
|
|
|
int uhunger;
|
|
unsigned uhs;
|
|
|
|
struct prop uprops[(67)+1];
|
|
|
|
unsigned umconf;
|
|
unsigned usick_type:2;
|
|
|
|
|
|
|
|
|
|
|
|
int nv_range;
|
|
int xray_range;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int bglyph;
|
|
int cglyph;
|
|
int bc_order;
|
|
int bc_felt;
|
|
|
|
int umonster;
|
|
int umonnum;
|
|
|
|
int mh, mhmax, mtimedone;
|
|
struct attribs macurr,
|
|
mamax;
|
|
int ulycn;
|
|
|
|
unsigned ucreamed;
|
|
unsigned uswldtim;
|
|
|
|
unsigned uswallow:1;
|
|
unsigned uinwater:1;
|
|
|
|
unsigned uundetected:1;
|
|
unsigned mfemale:1;
|
|
unsigned uinvulnerable:1;
|
|
unsigned uburied:1;
|
|
unsigned uedibility:1;
|
|
|
|
|
|
unsigned udg_cnt;
|
|
struct u_achieve uachieve;
|
|
struct u_event uevent;
|
|
struct u_have uhave;
|
|
struct u_conduct uconduct;
|
|
struct u_roleplay uroleplay;
|
|
struct attribs acurr,
|
|
aexe,
|
|
abon,
|
|
amax,
|
|
atemp,
|
|
atime;
|
|
align ualign;
|
|
|
|
|
|
|
|
aligntyp ualignbase[2];
|
|
schar uluck, moreluck;
|
|
|
|
|
|
|
|
|
|
schar uhitinc;
|
|
schar udaminc;
|
|
schar uac;
|
|
uchar uspellprot;
|
|
uchar usptime;
|
|
uchar uspmtime;
|
|
int uhp,uhpmax;
|
|
int uen, uenmax;
|
|
xchar uhpinc[30], ueninc[30];
|
|
int ugangr;
|
|
int ugifts;
|
|
int ublessed, ublesscnt;
|
|
long umoney0;
|
|
long uspare1;
|
|
long uexp, urexp;
|
|
long ucleansed;
|
|
long usleep;
|
|
int uinvault;
|
|
struct monst *ustuck;
|
|
struct monst *usteed;
|
|
long ugallop;
|
|
int urideturns;
|
|
int umortality;
|
|
int ugrave_arise;
|
|
int weapon_slots;
|
|
int skills_advanced;
|
|
xchar skill_record[60];
|
|
struct skills weapon_skills[(38 +1)];
|
|
boolean twoweap;
|
|
|
|
};
|
|
# 247 "../include/decl.h" 2
|
|
extern struct you u;
|
|
extern time_t ubirthday;
|
|
extern struct u_realtime urealtime;
|
|
|
|
# 1 "../include/onames.h" 1
|
|
# 252 "../include/decl.h" 2
|
|
|
|
|
|
|
|
|
|
extern struct monst youmonst;
|
|
extern struct monst *mydogs, *migrating_mons;
|
|
|
|
extern struct mvitals {
|
|
uchar born;
|
|
uchar died;
|
|
uchar mvflags;
|
|
} mvitals[381];
|
|
|
|
extern struct c_color_names {
|
|
const char *const c_black, *const c_amber, *const c_golden,
|
|
*const c_light_blue,*const c_red, *const c_green,
|
|
*const c_silver, *const c_blue, *const c_purple,
|
|
*const c_white, *const c_orange;
|
|
} c_color_names;
|
|
# 284 "../include/decl.h"
|
|
extern const char *c_obj_colors[];
|
|
|
|
extern struct c_common_strings {
|
|
const char *const c_nothing_happens, *const c_thats_enough_tries,
|
|
*const c_silly_thing_to, *const c_shudder_for_moment,
|
|
*const c_something, *const c_Something,
|
|
*const c_You_can_move_again,
|
|
*const c_Never_mind, *c_vision_clears,
|
|
*const c_the_your[2];
|
|
} c_common_strings;
|
|
# 306 "../include/decl.h"
|
|
extern const char *materialnm[];
|
|
# 322 "../include/decl.h"
|
|
extern boolean vision_full_recalc;
|
|
extern char **viz_array;
|
|
|
|
|
|
extern winid WIN_MESSAGE;
|
|
|
|
|
|
|
|
extern winid WIN_MAP, WIN_INVEN;
|
|
# 341 "../include/decl.h"
|
|
extern char toplines[];
|
|
|
|
extern struct tc_gbl_data {
|
|
char *tc_AS, *tc_AE;
|
|
int tc_LI, tc_CO;
|
|
} tc_gbl_data;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern const char * const monexplain[], invisexplain[], * const oclass_names[];
|
|
# 384 "../include/decl.h"
|
|
extern char *fqn_prefix[10];
|
|
|
|
|
|
|
|
|
|
extern struct savefile_info sfcap, sfrestinfo, sfsaveinfo;
|
|
|
|
struct autopickup_exception {
|
|
char *pattern;
|
|
boolean grab;
|
|
struct autopickup_exception *next;
|
|
};
|
|
|
|
|
|
extern char *ARGV0;
|
|
# 129 "../include/hack.h" 2
|
|
# 1 "../include/timeout.h" 1
|
|
# 11 "../include/timeout.h"
|
|
typedef void (*timeout_proc) (union any *, long);
|
|
# 37 "../include/timeout.h"
|
|
typedef struct fe {
|
|
struct fe *next;
|
|
long timeout;
|
|
unsigned long tid;
|
|
short kind;
|
|
short func_index;
|
|
anything arg;
|
|
unsigned needs_fixup:1;
|
|
} timer_element;
|
|
# 130 "../include/hack.h" 2
|
|
|
|
extern coord bhitpos;
|
|
# 155 "../include/hack.h"
|
|
# 1 "../include/trap.h" 1
|
|
# 12 "../include/trap.h"
|
|
union vlaunchinfo {
|
|
short v_launch_otyp;
|
|
coord v_launch2;
|
|
uchar v_conjoined;
|
|
short v_tnote;
|
|
};
|
|
|
|
struct trap {
|
|
struct trap *ntrap;
|
|
xchar tx,ty;
|
|
d_level dst;
|
|
coord launch;
|
|
unsigned ttyp:5;
|
|
unsigned tseen:1;
|
|
unsigned once:1;
|
|
unsigned madeby_u:1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
union vlaunchinfo vl;
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
extern struct trap *ftrap;
|
|
# 156 "../include/hack.h" 2
|
|
# 1 "../include/flag.h" 1
|
|
# 18 "../include/flag.h"
|
|
struct flag {
|
|
boolean acoustics;
|
|
boolean autodig;
|
|
boolean autoquiver;
|
|
boolean autoopen;
|
|
boolean beginner;
|
|
boolean biff;
|
|
boolean bones;
|
|
boolean confirm;
|
|
boolean dark_room;
|
|
boolean debug;
|
|
|
|
boolean end_own;
|
|
boolean explore;
|
|
|
|
boolean female;
|
|
boolean friday13;
|
|
boolean help;
|
|
boolean ignintr;
|
|
boolean ins_chkpt;
|
|
boolean invlet_constant;
|
|
boolean legacy;
|
|
boolean lit_corridor;
|
|
boolean nap;
|
|
boolean null;
|
|
boolean perm_invent;
|
|
boolean pickup;
|
|
boolean pickup_thrown;
|
|
boolean pushweapon;
|
|
boolean rest_on_space;
|
|
boolean safe_dog;
|
|
boolean showexp;
|
|
boolean showscore;
|
|
boolean silent;
|
|
boolean sortloot;
|
|
boolean sortpack;
|
|
boolean sparkle;
|
|
boolean standout;
|
|
boolean time;
|
|
boolean tombstone;
|
|
boolean verbose;
|
|
int end_top, end_around;
|
|
unsigned moonphase;
|
|
unsigned long suppress_alert;
|
|
|
|
|
|
int paranoia_bits;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int pickup_burden;
|
|
int pile_limit;
|
|
char inv_order[18];
|
|
char pickup_types[18];
|
|
|
|
|
|
|
|
|
|
|
|
char end_disclose[6 + 1];
|
|
|
|
char menu_style;
|
|
boolean made_fruit;
|
|
# 112 "../include/flag.h"
|
|
int initrole;
|
|
int initrace;
|
|
int initgend;
|
|
int initalign;
|
|
int randomall;
|
|
int pantheon;
|
|
|
|
boolean lootabc;
|
|
boolean showrace;
|
|
boolean travelcmd;
|
|
int runmode;
|
|
};
|
|
# 167 "../include/flag.h"
|
|
struct instance_flags {
|
|
|
|
|
|
|
|
|
|
|
|
int in_lava_effects;
|
|
int last_msg;
|
|
int purge_monsters;
|
|
int override_ID;
|
|
int suppress_price;
|
|
coord travelcc;
|
|
boolean window_inited;
|
|
boolean vision_inited;
|
|
boolean sanity_check;
|
|
boolean mon_polycontrol;
|
|
|
|
unsigned msg_history;
|
|
int menu_headings;
|
|
int *opt_booldup;
|
|
int *opt_compdup;
|
|
|
|
boolean altmeta;
|
|
|
|
boolean cbreak;
|
|
boolean deferred_X;
|
|
boolean num_pad;
|
|
boolean news;
|
|
boolean mention_walls;
|
|
boolean menu_tab_sep;
|
|
boolean menu_head_objsym;
|
|
boolean menu_requested;
|
|
|
|
boolean renameallowed;
|
|
boolean renameinprogress;
|
|
boolean toptenwin;
|
|
boolean zerocomp;
|
|
boolean rlecomp;
|
|
uchar num_pad_mode;
|
|
boolean echo;
|
|
boolean use_menu_color;
|
|
# 216 "../include/flag.h"
|
|
uchar bouldersym;
|
|
|
|
char prevmsg_window;
|
|
boolean extmenu;
|
|
# 257 "../include/flag.h"
|
|
boolean wc_color;
|
|
boolean wc_hilite_pet;
|
|
boolean wc_ascii_map;
|
|
boolean wc_tiled_map;
|
|
boolean wc_preload_tiles;
|
|
int wc_tile_width;
|
|
int wc_tile_height;
|
|
char *wc_tile_file;
|
|
boolean wc_inverse;
|
|
int wc_align_status;
|
|
int wc_align_message;
|
|
int wc_vary_msgcount;
|
|
char *wc_foregrnd_menu;
|
|
char *wc_backgrnd_menu;
|
|
char *wc_foregrnd_message;
|
|
char *wc_backgrnd_message;
|
|
char *wc_foregrnd_status;
|
|
char *wc_backgrnd_status;
|
|
char *wc_foregrnd_text;
|
|
char *wc_backgrnd_text;
|
|
char *wc_font_map;
|
|
char *wc_font_message;
|
|
char *wc_font_status;
|
|
char *wc_font_menu;
|
|
char *wc_font_text;
|
|
int wc_fontsiz_map;
|
|
int wc_fontsiz_message;
|
|
int wc_fontsiz_status;
|
|
int wc_fontsiz_menu;
|
|
int wc_fontsiz_text;
|
|
int wc_scroll_amount;
|
|
int wc_scroll_margin;
|
|
|
|
int wc_map_mode;
|
|
|
|
int wc_player_selection;
|
|
boolean wc_splash_screen;
|
|
boolean wc_popup_dialog;
|
|
|
|
boolean wc_eight_bit_input;
|
|
boolean wc_mouse_support;
|
|
boolean wc2_fullscreen;
|
|
boolean wc2_softkeyboard;
|
|
boolean wc2_wraptext;
|
|
boolean wc2_selectsaved;
|
|
boolean wc2_darkgray;
|
|
boolean cmdassist;
|
|
boolean clicklook;
|
|
boolean obsolete;
|
|
struct autopickup_exception *autopickup_exceptions[2];
|
|
# 316 "../include/flag.h"
|
|
unsigned save_uinwater:1;
|
|
unsigned save_uburied:1;
|
|
};
|
|
# 339 "../include/flag.h"
|
|
extern struct flag flags;
|
|
|
|
|
|
|
|
extern struct instance_flags iflags;
|
|
# 381 "../include/flag.h"
|
|
struct func_tab;
|
|
# 391 "../include/flag.h"
|
|
struct cmd {
|
|
unsigned serialno;
|
|
boolean num_pad;
|
|
boolean pcHack_compat;
|
|
boolean phone_layout;
|
|
boolean swap_yz;
|
|
char move_W, move_NW, move_N, move_NE,
|
|
move_E, move_SE, move_S, move_SW;
|
|
const char *dirchars;
|
|
const char *alphadirchars;
|
|
const struct func_tab *commands[256];
|
|
};
|
|
|
|
extern struct cmd Cmd;
|
|
# 157 "../include/hack.h" 2
|
|
# 1 "../include/rm.h" 1
|
|
# 227 "../include/rm.h"
|
|
struct symdef {
|
|
uchar sym;
|
|
const char *explanation;
|
|
|
|
uchar color;
|
|
|
|
};
|
|
|
|
struct symparse {
|
|
unsigned range;
|
|
|
|
|
|
|
|
|
|
|
|
int idx;
|
|
const char *name;
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct symsetentry {
|
|
struct symsetentry *next;
|
|
char *name;
|
|
char *desc;
|
|
int idx;
|
|
int handling;
|
|
unsigned nocolor:1;
|
|
unsigned primary:1;
|
|
unsigned rogue:1;
|
|
|
|
};
|
|
# 281 "../include/rm.h"
|
|
extern const struct symdef defsyms[95];
|
|
extern const struct symdef def_warnsyms[6];
|
|
extern int currentgraphics;
|
|
extern nhsym showsyms[];
|
|
|
|
extern struct symsetentry symset[2];
|
|
# 388 "../include/rm.h"
|
|
struct rm {
|
|
int glyph;
|
|
schar typ;
|
|
uchar seenv;
|
|
unsigned flags:5;
|
|
unsigned horizontal:1;
|
|
unsigned lit:1;
|
|
unsigned waslit:1;
|
|
|
|
unsigned roomno:6;
|
|
unsigned edge:1;
|
|
unsigned candig:1;
|
|
};
|
|
# 507 "../include/rm.h"
|
|
struct damage {
|
|
struct damage *next;
|
|
long when, cost;
|
|
coord place;
|
|
schar typ;
|
|
};
|
|
|
|
|
|
|
|
struct cemetery {
|
|
struct cemetery *next;
|
|
|
|
char who[32 + 4*(1+3) + 1];
|
|
|
|
char how[100 + 1];
|
|
|
|
char when[4+2+2 + 2+2+2 + 1];
|
|
|
|
schar frpx, frpy;
|
|
boolean bonesknown;
|
|
};
|
|
|
|
struct levelflags {
|
|
uchar nfountains;
|
|
uchar nsinks;
|
|
|
|
unsigned has_shop:1;
|
|
unsigned has_vault:1;
|
|
unsigned has_zoo:1;
|
|
unsigned has_court:1;
|
|
unsigned has_morgue:1;
|
|
unsigned has_beehive:1;
|
|
unsigned has_barracks:1;
|
|
unsigned has_temple:1;
|
|
|
|
unsigned has_swamp:1;
|
|
unsigned noteleport:1;
|
|
unsigned hardfloor:1;
|
|
unsigned nommap:1;
|
|
unsigned hero_memory:1;
|
|
unsigned shortsighted:1;
|
|
unsigned graveyard:1;
|
|
unsigned sokoban_rules:1;
|
|
|
|
unsigned is_maze_lev:1;
|
|
unsigned is_cavernous_lev:1;
|
|
unsigned arboreal:1;
|
|
unsigned wizard_bones:1;
|
|
|
|
|
|
unsigned corrmaze:1;
|
|
|
|
};
|
|
|
|
typedef struct
|
|
{
|
|
struct rm locations[80][21];
|
|
|
|
struct obj *objects[80][21];
|
|
struct monst *monsters[80][21];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct obj *objlist;
|
|
struct obj *buriedobjlist;
|
|
struct monst *monlist;
|
|
struct damage *damagelist;
|
|
struct cemetery *bonesinfo;
|
|
struct levelflags flags;
|
|
}
|
|
dlevel_t;
|
|
|
|
extern schar lastseentyp[80][21];
|
|
|
|
extern dlevel_t level;
|
|
# 158 "../include/hack.h" 2
|
|
# 1 "../include/vision.h" 1
|
|
# 159 "../include/hack.h" 2
|
|
# 1 "../include/display.h" 1
|
|
# 160 "../include/hack.h" 2
|
|
# 1 "../include/engrave.h" 1
|
|
# 10 "../include/engrave.h"
|
|
struct engr {
|
|
struct engr *nxt_engr;
|
|
char *engr_txt;
|
|
xchar engr_x, engr_y;
|
|
unsigned engr_lth;
|
|
long engr_time;
|
|
xchar engr_type;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
# 161 "../include/hack.h" 2
|
|
# 1 "../include/rect.h" 1
|
|
# 10 "../include/rect.h"
|
|
typedef struct nhrect {
|
|
xchar lx, ly;
|
|
xchar hx, hy;
|
|
} NhRect;
|
|
# 162 "../include/hack.h" 2
|
|
# 1 "../include/region.h" 1
|
|
# 12 "../include/region.h"
|
|
typedef boolean (*callback_proc) (genericptr_t, genericptr_t);
|
|
# 34 "../include/region.h"
|
|
typedef struct {
|
|
NhRect bounding_box;
|
|
NhRect *rects;
|
|
short nrects;
|
|
boolean attach_2_u;
|
|
unsigned int attach_2_m;
|
|
|
|
const char* enter_msg;
|
|
const char* leave_msg;
|
|
long ttl;
|
|
short expire_f;
|
|
short can_enter_f;
|
|
|
|
short enter_f;
|
|
short can_leave_f;
|
|
|
|
short leave_f;
|
|
short inside_f;
|
|
|
|
unsigned int player_flags;
|
|
unsigned int* monsters;
|
|
short n_monst;
|
|
short max_monst;
|
|
|
|
|
|
|
|
|
|
|
|
boolean visible;
|
|
int glyph;
|
|
anything arg;
|
|
|
|
} NhRegion;
|
|
# 163 "../include/hack.h" 2
|
|
# 177 "../include/hack.h"
|
|
# 1 "../include/extern.h" 1
|
|
# 15 "../include/extern.h"
|
|
extern char *fmt_ptr (const void *);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern void moveloop (int);
|
|
extern void stop_occupation(void);
|
|
extern void display_gamewindows(void);
|
|
extern void newgame(void);
|
|
extern void welcome (int);
|
|
extern time_t get_realtime(void);
|
|
|
|
|
|
|
|
extern int doapply(void);
|
|
extern int dorub(void);
|
|
extern int dojump(void);
|
|
extern int jump (int);
|
|
extern int number_leashed(void);
|
|
extern void o_unleash (struct obj *);
|
|
extern void m_unleash (struct monst *,int);
|
|
extern void unleash_all(void);
|
|
extern boolean next_to_u(void);
|
|
extern struct obj *get_mleash (struct monst *);
|
|
extern const char *beautiful(void);
|
|
extern void check_leash (int,int);
|
|
extern boolean um_dist (int,int,int);
|
|
extern boolean snuff_candle (struct obj *);
|
|
extern boolean snuff_lit (struct obj *);
|
|
extern boolean catch_lit (struct obj *);
|
|
extern void use_unicorn_horn (struct obj *);
|
|
extern boolean tinnable (struct obj *);
|
|
extern void reset_trapset(void);
|
|
extern void fig_transform (union any *, long);
|
|
extern int unfixable_trouble_count (int);
|
|
|
|
|
|
|
|
extern void init_artifacts(void);
|
|
extern void save_artifacts (int);
|
|
extern void restore_artifacts (int);
|
|
extern const char *artiname (int);
|
|
extern struct obj *mk_artifact (struct obj *,int);
|
|
extern const char *artifact_name (const char *,short *);
|
|
extern boolean exist_artifact (int,const char *);
|
|
extern void artifact_exists (struct obj *,const char *,int);
|
|
extern int nartifact_exist(void);
|
|
extern boolean arti_immune (struct obj *,int);
|
|
extern boolean spec_ability (struct obj *,unsigned long);
|
|
extern boolean confers_luck (struct obj *);
|
|
extern boolean arti_reflects (struct obj *);
|
|
extern boolean shade_glare (struct obj *);
|
|
extern boolean restrict_name (struct obj *,const char *);
|
|
extern boolean defends (int,struct obj *);
|
|
extern boolean defends_when_carried (int,struct obj *);
|
|
extern boolean protects (struct obj *,int);
|
|
extern void set_artifact_intrinsic (struct obj *,int,long);
|
|
extern int touch_artifact (struct obj *,struct monst *);
|
|
extern int spec_abon (struct obj *,struct monst *);
|
|
extern int spec_dbon (struct obj *,struct monst *,int);
|
|
extern void discover_artifact (int);
|
|
extern boolean undiscovered_artifact (int);
|
|
extern int disp_artifact_discoveries (winid);
|
|
extern boolean artifact_hit (struct monst *,struct monst *, struct obj *,int *,int);
|
|
|
|
extern int doinvoke(void);
|
|
extern boolean finesse_ahriman (struct obj *);
|
|
extern void arti_speak (struct obj *);
|
|
extern boolean artifact_light (struct obj *);
|
|
extern long spec_m2 (struct obj *);
|
|
extern boolean artifact_has_invprop (struct obj *,int);
|
|
extern long arti_cost (struct obj *);
|
|
extern struct obj *what_gives (long *);
|
|
extern void Sting_effects (int);
|
|
extern int retouch_object (struct obj **,int);
|
|
extern void retouch_equipment (int);
|
|
|
|
|
|
|
|
extern boolean adjattrib (int,int,int);
|
|
extern void gainstr (struct obj *,int,int);
|
|
extern void losestr (int);
|
|
extern void poisontell (int,int);
|
|
extern void poisoned (const char *,int,const char *,int,int);
|
|
extern void change_luck (int);
|
|
extern int stone_luck (int);
|
|
extern void set_moreluck(void);
|
|
extern void restore_attrib(void);
|
|
extern void exercise (int,int);
|
|
extern void exerchk(void);
|
|
extern void init_attr (int);
|
|
extern void redist_attr(void);
|
|
extern void adjabil (int,int);
|
|
extern int newhp(void);
|
|
extern schar acurr (int);
|
|
extern schar acurrstr(void);
|
|
extern boolean extremeattr (int);
|
|
extern void adjalign (int);
|
|
extern int is_innate (int);
|
|
extern char *from_what (int);
|
|
extern void uchangealign (int,int);
|
|
|
|
|
|
|
|
extern void ballrelease (int);
|
|
extern void ballfall(void);
|
|
extern void placebc(void);
|
|
extern void unplacebc(void);
|
|
extern void set_bc (int);
|
|
extern void move_bc (int,int,int,int,int,int);
|
|
extern boolean drag_ball (int,int, int *,xchar *,xchar *,xchar *,xchar *, boolean *,int);
|
|
|
|
extern void drop_ball (int,int);
|
|
extern void drag_down(void);
|
|
|
|
|
|
|
|
extern void sanitize_name (char *);
|
|
extern void drop_upon_death (struct monst *,struct obj *,int,int);
|
|
extern boolean can_make_bones(void);
|
|
extern void savebones (int,time_t,struct obj *);
|
|
extern int getbones(void);
|
|
|
|
|
|
|
|
extern int xlev_to_rank (int);
|
|
extern int title_to_mon (const char *,int *,int *);
|
|
extern void max_rank_sz(void);
|
|
|
|
|
|
|
|
extern int describe_level (char *);
|
|
extern const char *rank_of (int,int,int);
|
|
extern void bot(void);
|
|
|
|
extern void status_initialize (int);
|
|
extern void status_finish(void);
|
|
extern void genl_status_init(void);
|
|
extern void genl_status_finish(void);
|
|
extern void genl_status_update (int, genericptr_t, int, int);
|
|
extern void genl_status_enablefield (int, const char *, const char *,int);
|
|
|
|
extern void genl_status_threshold (int,int,anything,int,int,int);
|
|
extern boolean set_status_hilites (char *op);
|
|
extern void clear_status_hilites(void);
|
|
extern char *get_status_hilites (char *, int);
|
|
extern boolean status_hilite_menu(void);
|
|
|
|
|
|
|
|
|
|
|
|
extern boolean redraw_cmd (int);
|
|
# 185 "../include/extern.h"
|
|
extern void reset_occupations(void);
|
|
extern void set_occupation (int (*)(void),const char *,int);
|
|
extern char pgetchar(void);
|
|
extern void pushch (int);
|
|
extern void savech (int);
|
|
extern void add_debug_extended_commands(void);
|
|
extern void reset_commands (int);
|
|
extern void rhack (char *);
|
|
extern int doextlist(void);
|
|
extern int extcmd_via_menu(void);
|
|
extern int enter_explore_mode(void);
|
|
extern void enlightenment (int,int);
|
|
extern void youhiding (int,int);
|
|
extern void show_conduct (int);
|
|
extern int xytod (int,int);
|
|
extern void dtoxy (coord *,int);
|
|
extern int movecmd (int);
|
|
extern int dxdy_moveok(void);
|
|
extern int getdir (const char *);
|
|
extern void confdir(void);
|
|
extern const char *directionname (int);
|
|
extern int isok (int,int);
|
|
extern int get_adjacent_loc (const char *, const char *, int, int, coord *);
|
|
extern const char *click_to_cmd (int,int,int);
|
|
|
|
extern void hangup (int);
|
|
extern void end_of_input(void);
|
|
|
|
extern char readchar(void);
|
|
extern void sanity_check(void);
|
|
extern char yn_function (const char *, const char *, int);
|
|
extern boolean paranoid_query (int,const char *);
|
|
|
|
|
|
|
|
extern boolean is_pool (int,int);
|
|
extern boolean is_lava (int,int);
|
|
extern boolean is_pool_or_lava (int,int);
|
|
extern boolean is_ice (int,int);
|
|
extern boolean is_moat (int,int);
|
|
extern schar db_under_typ (int);
|
|
extern int is_drawbridge_wall (int,int);
|
|
extern boolean is_db_wall (int,int);
|
|
extern boolean find_drawbridge (int *,int*);
|
|
extern boolean create_drawbridge (int,int,int,int);
|
|
extern void open_drawbridge (int,int);
|
|
extern void close_drawbridge (int,int);
|
|
extern void destroy_drawbridge (int,int);
|
|
|
|
|
|
|
|
extern void decl_init(void);
|
|
|
|
|
|
|
|
extern struct obj *o_in (struct obj*,int);
|
|
extern struct obj *o_material (struct obj*,unsigned);
|
|
extern int gold_detect (struct obj *);
|
|
extern int food_detect (struct obj *);
|
|
extern int object_detect (struct obj *,int);
|
|
extern int monster_detect (struct obj *,int);
|
|
extern int trap_detect (struct obj *);
|
|
extern const char *level_distance (d_level *);
|
|
extern void use_crystal_ball (struct obj *);
|
|
extern void do_mapping(void);
|
|
extern void do_vicinity_map(void);
|
|
extern void cvt_sdoor_to_door (struct rm *);
|
|
|
|
|
|
|
|
|
|
extern int findit(void);
|
|
extern int openit(void);
|
|
extern boolean detecting (void (*)(int,int,void *));
|
|
extern void find_trap (struct trap *);
|
|
extern int dosearch0 (int);
|
|
extern int dosearch(void);
|
|
extern void sokoban_detect(void);
|
|
extern void reveal_terrain (int);
|
|
|
|
|
|
|
|
extern int dig_typ (struct obj *,int,int);
|
|
extern boolean is_digging(void);
|
|
|
|
|
|
|
|
extern int holetime(void);
|
|
extern boolean dig_check (struct monst *, int, int, int);
|
|
extern void digactualhole (int,int,struct monst *,int);
|
|
extern boolean dighole (int,int,coord *);
|
|
extern int use_pick_axe (struct obj *);
|
|
extern int use_pick_axe2 (struct obj *);
|
|
extern boolean mdig_tunnel (struct monst *);
|
|
extern void watch_dig (struct monst *,int,int,int);
|
|
extern void zap_dig(void);
|
|
extern struct obj *bury_an_obj (struct obj *, boolean *);
|
|
extern void bury_objs (int,int);
|
|
extern void unearth_objs (int,int);
|
|
extern void rot_organic (union any *, long);
|
|
extern void rot_corpse (union any *, long);
|
|
extern struct obj *buried_ball (coord *);
|
|
extern void buried_ball_to_punishment(void);
|
|
extern void buried_ball_to_freedom(void);
|
|
extern schar fillholetyp (int,int,int);
|
|
extern void liquid_flow (int,int,int,struct trap *, const char *);
|
|
extern boolean conjoined_pits (struct trap *,struct trap *,int);
|
|
# 302 "../include/extern.h"
|
|
extern void magic_map_background (int,int,int);
|
|
extern void map_background (int,int,int);
|
|
extern void map_trap (struct trap *,int);
|
|
extern void map_object (struct obj *,int);
|
|
extern void map_invisible (int,int);
|
|
extern void unmap_object (int,int);
|
|
extern void map_location (int,int,int);
|
|
extern void feel_location (int,int);
|
|
extern void newsym (int,int);
|
|
extern void shieldeff (int,int);
|
|
extern void tmp_at (int,int);
|
|
extern void swallowed (int);
|
|
extern void under_ground (int);
|
|
extern void under_water (int);
|
|
extern void see_monsters(void);
|
|
extern void set_mimic_blocking(void);
|
|
extern void see_objects(void);
|
|
extern void see_traps(void);
|
|
extern void curs_on_u(void);
|
|
extern int doredraw(void);
|
|
extern void docrt(void);
|
|
extern void show_glyph (int,int,int);
|
|
extern void clear_glyph_buffer(void);
|
|
extern void row_refresh (int,int,int);
|
|
extern void cls(void);
|
|
extern void flush_screen (int);
|
|
extern int back_to_glyph (int,int);
|
|
extern int zapdir_to_glyph (int,int,int);
|
|
extern int glyph_at (int,int);
|
|
extern void set_wall_state(void);
|
|
extern void unset_seenv (struct rm *,int,int,int,int);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern int dodrop(void);
|
|
extern boolean boulder_hits_pool (struct obj *,int,int,int);
|
|
extern boolean flooreffects (struct obj *,int,int,const char *);
|
|
extern void doaltarobj (struct obj *);
|
|
extern boolean canletgo (struct obj *,const char *);
|
|
extern void dropx (struct obj *);
|
|
extern void dropy (struct obj *);
|
|
extern void dropz (struct obj *,int);
|
|
extern void obj_no_longer_held (struct obj *);
|
|
extern int doddrop(void);
|
|
extern int dodown(void);
|
|
extern int doup(void);
|
|
|
|
extern void save_currentstate(void);
|
|
|
|
extern void goto_level (d_level *,int,int,int);
|
|
extern void schedule_goto (d_level *,int,int,int, const char *,const char *);
|
|
|
|
extern void deferred_goto(void);
|
|
extern boolean revive_corpse (struct obj *);
|
|
extern void revive_mon (union any *, long);
|
|
extern int donull(void);
|
|
extern int dowipe(void);
|
|
extern void set_wounded_legs (long,int);
|
|
extern void heal_legs(void);
|
|
|
|
|
|
|
|
extern int getpos (coord *,int,const char *);
|
|
extern void getpos_sethilite (void (*f)(int) );
|
|
extern void new_mname (struct monst *,int);
|
|
extern void free_mname (struct monst *);
|
|
extern void new_oname (struct obj *,int);
|
|
extern void free_oname (struct obj *);
|
|
extern const char *safe_oname (struct obj *);
|
|
extern struct monst *christen_monst (struct monst *,const char *);
|
|
extern struct obj *oname (struct obj *,const char *);
|
|
extern boolean objtyp_is_callable (int);
|
|
extern int docallcmd(void);
|
|
extern void docall (struct obj *);
|
|
extern const char *rndghostname(void);
|
|
extern char *x_monnam (struct monst *,int,const char *,int,int);
|
|
extern char *l_monnam (struct monst *);
|
|
extern char *mon_nam (struct monst *);
|
|
extern char *noit_mon_nam (struct monst *);
|
|
extern char *Monnam (struct monst *);
|
|
extern char *noit_Monnam (struct monst *);
|
|
extern char *m_monnam (struct monst *);
|
|
extern char *y_monnam (struct monst *);
|
|
extern char *Adjmonnam (struct monst *,const char *);
|
|
extern char *Amonnam (struct monst *);
|
|
extern char *a_monnam (struct monst *);
|
|
extern char *distant_monnam (struct monst *,int,char *);
|
|
extern char *rndmonnam (char *);
|
|
extern const char *hcolor (const char *);
|
|
extern const char *rndcolor(void);
|
|
extern const char *roguename(void);
|
|
extern struct obj *realloc_obj (struct obj *, int, genericptr_t, int, const char *);
|
|
|
|
extern char *coyotename (struct monst *,char *);
|
|
extern const char *noveltitle (int *);
|
|
extern const char *lookup_novel (const char *, int *);
|
|
# 413 "../include/extern.h"
|
|
extern void off_msg (struct obj *);
|
|
extern void set_wear (struct obj *);
|
|
extern boolean donning (struct obj *);
|
|
extern boolean doffing (struct obj *);
|
|
extern void cancel_don(void);
|
|
extern int stop_donning (struct obj *);
|
|
extern int Armor_off(void);
|
|
extern int Armor_gone(void);
|
|
extern int Helmet_off(void);
|
|
extern int Gloves_off(void);
|
|
extern int Boots_off(void);
|
|
extern int Cloak_off(void);
|
|
extern int Shield_off(void);
|
|
extern int Shirt_off(void);
|
|
extern void Amulet_off(void);
|
|
extern void Ring_on (struct obj *);
|
|
extern void Ring_off (struct obj *);
|
|
extern void Ring_gone (struct obj *);
|
|
extern void Blindf_on (struct obj *);
|
|
extern void Blindf_off (struct obj *);
|
|
extern int dotakeoff(void);
|
|
extern int doremring(void);
|
|
extern int cursed (struct obj *);
|
|
extern int armoroff (struct obj *);
|
|
extern int canwearobj (struct obj *, long *, int);
|
|
extern int dowear(void);
|
|
extern int doputon(void);
|
|
extern void find_ac(void);
|
|
extern void glibr(void);
|
|
extern struct obj *some_armor (struct monst *);
|
|
extern struct obj *stuck_ring (struct obj *,int);
|
|
extern struct obj *unchanger(void);
|
|
extern void reset_remarm(void);
|
|
extern int doddoremarm(void);
|
|
extern int destroy_arm (struct obj *);
|
|
extern void adj_abon (struct obj *,int);
|
|
extern boolean inaccessible_equipment (struct obj *,const char *,int);
|
|
|
|
|
|
|
|
extern void newedog (struct monst *);
|
|
extern void free_edog (struct monst *);
|
|
extern void initedog (struct monst *);
|
|
extern struct monst *make_familiar (struct obj *,int,int,int);
|
|
extern struct monst *makedog(void);
|
|
extern void update_mlstmv(void);
|
|
extern void losedogs(void);
|
|
extern void mon_arrive (struct monst *,int);
|
|
extern void mon_catchup_elapsed_time (struct monst *,long);
|
|
extern void keepdogs (int);
|
|
extern void migrate_to_level (struct monst *,int,int,coord *);
|
|
extern int dogfood (struct monst *,struct obj *);
|
|
extern boolean tamedog (struct monst *,struct obj *);
|
|
extern void abuse_dog (struct monst *);
|
|
extern void wary_dog (struct monst *, int);
|
|
|
|
|
|
|
|
extern struct obj *droppables (struct monst *);
|
|
extern int dog_nutrition (struct monst *,struct obj *);
|
|
extern int dog_eat (struct monst *,struct obj *,int,int,int);
|
|
extern int dog_move (struct monst *,int);
|
|
|
|
|
|
|
|
extern void finish_meating (struct monst *);
|
|
|
|
|
|
|
|
extern boolean ghitm (struct monst *,struct obj *);
|
|
extern void container_impact_dmg (struct obj *,int,int);
|
|
extern int dokick(void);
|
|
extern boolean ship_object (struct obj *,int,int,int);
|
|
extern void obj_delivery (int);
|
|
extern schar down_gate (int,int);
|
|
extern void impact_drop (struct obj *,int,int,int);
|
|
|
|
|
|
|
|
extern int dothrow(void);
|
|
extern int dofire(void);
|
|
extern void endmultishot (int);
|
|
extern void hitfloor (struct obj *);
|
|
extern void hurtle (int,int,int,int);
|
|
extern void mhurtle (struct monst *,int,int,int);
|
|
extern void throwit (struct obj *,long,int);
|
|
extern int omon_adj (struct monst *,struct obj *,int);
|
|
extern int thitmonst (struct monst *,struct obj *);
|
|
extern int hero_breaks (struct obj *,int,int,int);
|
|
extern int breaks (struct obj *,int,int);
|
|
extern void release_camera_demon (struct obj *, int,int);
|
|
extern void breakobj (struct obj *,int,int,int,int);
|
|
extern boolean breaktest (struct obj *);
|
|
extern boolean walk_path (coord *, coord *, boolean (*)(genericptr_t,int,int), genericptr_t);
|
|
extern boolean hurtle_step (genericptr_t, int, int);
|
|
|
|
|
|
|
|
extern int def_char_to_objclass (int);
|
|
extern int def_char_to_monclass (int);
|
|
|
|
extern void switch_symbols (int);
|
|
extern void assign_graphics (int);
|
|
extern void init_r_symbols(void);
|
|
extern void init_symbols(void);
|
|
extern void update_bouldersym(void);
|
|
extern void init_showsyms(void);
|
|
extern void init_l_symbols(void);
|
|
extern void clear_symsetentry (int,int);
|
|
extern void update_l_symset (struct symparse *,int);
|
|
extern void update_r_symset (struct symparse *,int);
|
|
extern boolean cursed_object_at (int, int);
|
|
|
|
|
|
|
|
extern void save_dungeon (int,int,int);
|
|
extern void restore_dungeon (int);
|
|
extern void insert_branch (branch *,int);
|
|
extern void init_dungeons(void);
|
|
extern s_level *find_level (const char *);
|
|
extern s_level *Is_special (d_level *);
|
|
extern branch *Is_branchlev (d_level *);
|
|
extern xchar ledger_no (d_level *);
|
|
extern xchar maxledgerno(void);
|
|
extern schar depth (d_level *);
|
|
extern xchar dunlev (d_level *);
|
|
extern xchar dunlevs_in_dungeon (d_level *);
|
|
extern xchar ledger_to_dnum (int);
|
|
extern xchar ledger_to_dlev (int);
|
|
extern xchar deepest_lev_reached (int);
|
|
extern boolean on_level (d_level *,d_level *);
|
|
extern void next_level (int);
|
|
extern void prev_level (int);
|
|
extern void u_on_newpos (int,int);
|
|
extern void u_on_rndspot (int);
|
|
extern void u_on_sstairs (int);
|
|
extern void u_on_upstairs(void);
|
|
extern void u_on_dnstairs(void);
|
|
extern boolean On_stairs (int,int);
|
|
extern void get_level (d_level *,int);
|
|
extern boolean Is_botlevel (d_level *);
|
|
extern boolean Can_fall_thru (d_level *);
|
|
extern boolean Can_dig_down (d_level *);
|
|
extern boolean Can_rise_up (int,int,d_level *);
|
|
extern boolean has_ceiling (d_level *);
|
|
extern boolean In_quest (d_level *);
|
|
extern boolean In_mines (d_level *);
|
|
extern branch *dungeon_branch (const char *);
|
|
extern boolean at_dgn_entrance (const char *);
|
|
extern boolean In_hell (d_level *);
|
|
extern boolean In_V_tower (d_level *);
|
|
extern boolean On_W_tower_level (d_level *);
|
|
extern boolean In_W_tower (int,int,d_level *);
|
|
extern void find_hell (d_level *);
|
|
extern void goto_hell (int,int);
|
|
extern void assign_level (d_level *,d_level *);
|
|
extern void assign_rnd_level (d_level *,d_level *,int);
|
|
extern int induced_align (int);
|
|
extern boolean Invocation_lev (d_level *);
|
|
extern xchar level_difficulty(void);
|
|
extern schar lev_by_name (const char *);
|
|
extern schar print_dungeon (int,schar *,xchar *);
|
|
extern char *get_annotation (d_level *);
|
|
extern int donamelevel(void);
|
|
extern int dooverview(void);
|
|
extern void show_overview (int,int);
|
|
extern void forget_mapseen (int);
|
|
extern void init_mapseen (d_level *);
|
|
extern void recalc_mapseen(void);
|
|
extern void mapseen_temple (struct monst *);
|
|
extern void room_discovered (int);
|
|
extern void recbranch_mapseen (d_level *, d_level *);
|
|
extern void remdun_mapseen (int);
|
|
# 595 "../include/extern.h"
|
|
extern void eatmupdate(void);
|
|
extern boolean is_edible (struct obj *);
|
|
extern void init_uhunger(void);
|
|
extern int Hear_again(void);
|
|
extern void reset_eat(void);
|
|
extern int doeat(void);
|
|
extern void gethungry(void);
|
|
extern void morehungry (int);
|
|
extern void lesshungry (int);
|
|
extern boolean is_fainted(void);
|
|
extern void reset_faint(void);
|
|
extern void violated_vegetarian(void);
|
|
extern void newuhs (int);
|
|
extern struct obj *floorfood (const char *,int);
|
|
extern void vomit(void);
|
|
extern int eaten_stat (int,struct obj *);
|
|
extern void food_disappears (struct obj *);
|
|
extern void food_substitution (struct obj *,struct obj *);
|
|
extern void eating_conducts (struct permonst *);
|
|
extern int eat_brains (struct monst *,struct monst *,int,int *);
|
|
extern void fix_petrification(void);
|
|
extern void consume_oeaten (struct obj *,int);
|
|
extern boolean maybe_finished_meal (int);
|
|
extern void set_tin_variety (struct obj *,int);
|
|
extern int tin_variety_txt (char *,int *);
|
|
extern void tin_details (struct obj *,int,char *);
|
|
extern boolean Popeye (int);
|
|
|
|
|
|
|
|
extern void done1 (int);
|
|
extern int done2(void);
|
|
|
|
|
|
|
|
extern void done_in_by (struct monst *,int);
|
|
|
|
extern void panic (const char *,...) __attribute__ ((format (printf, 1, 2)));
|
|
|
|
extern void done (int);
|
|
extern void container_contents (struct obj *,int,int,int);
|
|
extern void terminate (int);
|
|
extern int dovanquished(void);
|
|
extern int num_genocides(void);
|
|
extern void delayed_killer (int, int, const char*);
|
|
extern struct kinfo *find_delayed_killer (int);
|
|
extern void dealloc_killer (struct kinfo*);
|
|
extern void save_killers (int,int);
|
|
extern void restore_killers (int);
|
|
extern char *build_english_list (char *);
|
|
|
|
extern void panictrace_setsignals (int);
|
|
|
|
|
|
|
|
|
|
extern char *random_engraving (char *);
|
|
extern void wipeout_text (char *,int,unsigned);
|
|
extern boolean can_reach_floor (int);
|
|
extern void cant_reach_floor (int,int,int,int);
|
|
extern const char *surface (int,int);
|
|
extern const char *ceiling (int,int);
|
|
extern struct engr *engr_at (int,int);
|
|
extern int sengr_at (const char *,int,int,int);
|
|
extern void u_wipe_engr (int);
|
|
extern void wipe_engr_at (int,int,int,int);
|
|
extern void read_engr_at (int,int);
|
|
extern void make_engr_at (int,int,const char *,long,int);
|
|
extern void del_engr_at (int,int);
|
|
extern int freehand(void);
|
|
extern int doengrave(void);
|
|
extern void sanitize_engravings(void);
|
|
extern void save_engravings (int,int);
|
|
extern void rest_engravings (int);
|
|
extern void del_engr (struct engr *);
|
|
extern void rloc_engr (struct engr *);
|
|
extern void make_grave (int,int,const char *);
|
|
|
|
|
|
|
|
extern int newpw(void);
|
|
extern int experience (struct monst *,int);
|
|
extern void more_experienced (int,int);
|
|
extern void losexp (const char *);
|
|
extern void newexplevel(void);
|
|
extern void pluslvl (int);
|
|
extern long rndexp (int);
|
|
|
|
|
|
|
|
extern void explode (int,int,int,int,int,int);
|
|
extern long scatter (int, int, int, unsigned int, struct obj *);
|
|
extern void splatter_burning_oil (int, int);
|
|
extern void explode_oil (struct obj *,int,int);
|
|
|
|
|
|
|
|
extern void makeroguerooms(void);
|
|
extern void corr (int,int);
|
|
extern void makerogueghost(void);
|
|
|
|
|
|
|
|
extern char *fname_encode (const char *, int, char *, char *, int);
|
|
extern char *fname_decode (int, char *, char *, int);
|
|
extern const char *fqname (const char *, int, int);
|
|
extern FILE *fopen_datafile (const char *,const char *,int);
|
|
|
|
|
|
|
|
extern void set_levelfile_name (char *,int);
|
|
extern int create_levelfile (int,char *);
|
|
extern int open_levelfile (int,char *);
|
|
extern void delete_levelfile (int);
|
|
extern void clearlocks(void);
|
|
extern int create_bonesfile (d_level*,char **, char *);
|
|
|
|
|
|
|
|
extern void commit_bonesfile (d_level *);
|
|
extern int open_bonesfile (d_level*,char **);
|
|
extern int delete_bonesfile (d_level*);
|
|
extern void compress_bonesfile(void);
|
|
extern void set_savefile_name (int);
|
|
|
|
extern void save_savefile_name (int);
|
|
|
|
|
|
extern void set_error_savefile(void);
|
|
|
|
extern int create_savefile(void);
|
|
extern int open_savefile(void);
|
|
extern int delete_savefile(void);
|
|
extern int restore_saved_game(void);
|
|
extern void nh_compress (const char *);
|
|
extern void nh_uncompress (const char *);
|
|
extern boolean lock_file (const char *,int,int);
|
|
extern void unlock_file (const char *);
|
|
|
|
|
|
|
|
extern boolean read_config_file (const char *, int);
|
|
extern void check_recordfile (const char *);
|
|
extern void read_wizkit(void);
|
|
extern int read_sym_file (int);
|
|
extern int parse_sym_line (char *,int);
|
|
extern void paniclog (const char *, const char *);
|
|
extern int validate_prefix_locations (char *);
|
|
|
|
|
|
|
|
extern char** get_saved_games(void);
|
|
extern void free_saved_games (char**);
|
|
|
|
|
|
|
|
|
|
extern void assure_syscf_file(void);
|
|
|
|
extern int nhclose (int);
|
|
|
|
|
|
|
|
|
|
extern boolean debugcore (const char *, int);
|
|
|
|
extern boolean read_tribute (const char *,const char *,int);
|
|
|
|
|
|
|
|
extern void floating_above (const char *);
|
|
extern void dogushforth (int);
|
|
|
|
|
|
|
|
extern void dryup (int,int, int);
|
|
extern void drinkfountain(void);
|
|
extern void dipfountain (struct obj *);
|
|
extern void breaksink (int,int);
|
|
extern void drinksink(void);
|
|
|
|
|
|
|
|
extern anything *uint_to_any (unsigned);
|
|
extern anything *long_to_any (long);
|
|
extern anything *monst_to_any (struct monst *);
|
|
extern anything *obj_to_any (struct obj *);
|
|
extern boolean revive_nasty (int,int,const char*);
|
|
extern void movobj (struct obj *,int,int);
|
|
extern boolean may_dig (int,int);
|
|
extern boolean may_passwall (int,int);
|
|
extern boolean bad_rock (struct permonst *,int,int);
|
|
extern int cant_squeeze_thru (struct monst *);
|
|
extern boolean invocation_pos (int,int);
|
|
extern boolean test_move (int, int, int, int, int);
|
|
extern boolean u_rooted(void);
|
|
extern void domove(void);
|
|
extern boolean overexertion(void);
|
|
extern void invocation_message(void);
|
|
extern boolean pooleffects (int);
|
|
extern void spoteffects (int);
|
|
extern char *in_rooms (int,int,int);
|
|
extern boolean in_town (int,int);
|
|
extern void check_special_room (int);
|
|
extern int dopickup(void);
|
|
extern void lookaround(void);
|
|
extern boolean crawl_destination (int,int);
|
|
extern int monster_nearby(void);
|
|
extern void nomul (int);
|
|
extern void unmul (const char *);
|
|
extern void losehp (int,const char *,int);
|
|
extern int weight_cap(void);
|
|
extern int inv_weight(void);
|
|
extern int near_capacity(void);
|
|
extern int calc_capacity (int);
|
|
extern int max_capacity(void);
|
|
extern boolean check_capacity (const char *);
|
|
extern int inv_cnt (int);
|
|
extern long money_cnt (struct obj *);
|
|
|
|
|
|
|
|
extern boolean digit (int);
|
|
extern boolean letter (int);
|
|
extern char highc (int);
|
|
extern char lowc (int);
|
|
extern char *lcase (char *);
|
|
extern char *ucase (char *);
|
|
extern char *upstart (char *);
|
|
extern char *mungspaces (char *);
|
|
extern char *eos (char *);
|
|
extern char *strkitten (char *,int);
|
|
extern void copynchars (char *,const char *,int);
|
|
extern char chrcasecpy (int,int);
|
|
extern char *strcasecpy (char *,const char *);
|
|
extern char *s_suffix (const char *);
|
|
extern char *ing_suffix (const char *);
|
|
extern char *xcrypt (const char *,char *);
|
|
extern boolean onlyspace (const char *);
|
|
extern char *tabexpand (char *);
|
|
extern char *visctrl (int);
|
|
extern char *strsubst (char *,const char *,const char *);
|
|
extern const char *ordin (int);
|
|
extern char *sitoa (int);
|
|
extern int sgn (int);
|
|
extern int rounddiv (long,int);
|
|
extern int dist2 (int,int,int,int);
|
|
extern int isqrt (int);
|
|
extern int distmin (int,int,int,int);
|
|
extern boolean online2 (int,int,int,int);
|
|
extern boolean pmatch (const char *,const char *);
|
|
extern boolean pmatchi (const char *,const char *);
|
|
extern boolean pmatchz (const char *,const char *);
|
|
|
|
extern int strncmpi (const char *,const char *,int);
|
|
|
|
|
|
extern char *strstri (const char *,const char *);
|
|
|
|
extern boolean fuzzymatch (const char *,const char *,const char *,int);
|
|
extern void setrandom(void);
|
|
extern time_t getnow(void);
|
|
extern int getyear(void);
|
|
|
|
|
|
|
|
extern long yyyymmdd (time_t);
|
|
extern long hhmmss (time_t);
|
|
extern char *yyyymmddhhmmss (time_t);
|
|
extern time_t time_from_yyyymmddhhmmss (char *);
|
|
extern int phase_of_the_moon(void);
|
|
extern boolean friday_13th(void);
|
|
extern int night(void);
|
|
extern int midnight(void);
|
|
|
|
|
|
|
|
extern struct obj **objarr_init (int);
|
|
extern void objarr_set (struct obj *, int, struct obj **, int);
|
|
extern void assigninvlet (struct obj *);
|
|
extern struct obj *merge_choice (struct obj *,struct obj *);
|
|
extern int merged (struct obj **,struct obj **);
|
|
|
|
|
|
|
|
extern void addinv_core1 (struct obj *);
|
|
extern void addinv_core2 (struct obj *);
|
|
extern struct obj *addinv (struct obj *);
|
|
extern struct obj *hold_another_object (struct obj *,const char *,const char *,const char *);
|
|
|
|
extern void useupall (struct obj *);
|
|
extern void useup (struct obj *);
|
|
extern void consume_obj_charge (struct obj *,int);
|
|
extern void freeinv_core (struct obj *);
|
|
extern void freeinv (struct obj *);
|
|
extern void delallobj (int,int);
|
|
extern void delobj (struct obj *);
|
|
extern struct obj *sobj_at (int,int,int);
|
|
extern struct obj *nxtobj (struct obj *,int,int);
|
|
extern struct obj *carrying (int);
|
|
extern boolean have_lizard(void);
|
|
extern struct obj *o_on (unsigned int,struct obj *);
|
|
extern boolean obj_here (struct obj *,int,int);
|
|
extern boolean wearing_armor(void);
|
|
extern boolean is_worn (struct obj *);
|
|
extern struct obj *g_at (int,int);
|
|
extern struct obj *getobj (const char *,const char *);
|
|
extern int ggetobj (const char *,int (*)(struct obj *),int,int,unsigned *);
|
|
extern int askchain (struct obj **,const char *,int,int (*)(struct obj *), int (*)(struct obj *),int,const char *);
|
|
|
|
extern void fully_identify_obj (struct obj *);
|
|
extern int identify (struct obj *);
|
|
extern void identify_pack (int,int);
|
|
extern void learn_unseen_invent(void);
|
|
extern void prinv (const char *,struct obj *,long);
|
|
extern char *xprname (struct obj *,const char *,int,int,long,long);
|
|
extern int ddoinv(void);
|
|
extern char display_inventory (const char *,int);
|
|
extern int display_binventory (int,int,int);
|
|
extern struct obj *display_cinventory (struct obj *);
|
|
extern struct obj *display_minventory (struct monst *,int,char *);
|
|
extern int dotypeinv(void);
|
|
extern const char *dfeature_at (int,int,char *);
|
|
extern int look_here (int,int);
|
|
extern int dolook(void);
|
|
extern boolean will_feel_cockatrice (struct obj *,int);
|
|
extern void feel_cockatrice (struct obj *,int);
|
|
extern void stackobj (struct obj *);
|
|
extern int doprgold(void);
|
|
extern int doprwep(void);
|
|
extern int doprarm(void);
|
|
extern int doprring(void);
|
|
extern int dopramulet(void);
|
|
extern int doprtool(void);
|
|
extern int doprinuse(void);
|
|
extern void useupf (struct obj *,long);
|
|
extern char *let_to_name (int,int,int);
|
|
extern void free_invbuf(void);
|
|
extern void reassign(void);
|
|
extern int doorganize(void);
|
|
extern int count_unpaid (struct obj *);
|
|
extern int count_buc (struct obj *,int);
|
|
extern long count_contents (struct obj *,int,int,int);
|
|
extern void carry_obj_effects (struct obj *);
|
|
extern const char *currency (long);
|
|
extern void silly_thing (const char *,struct obj *);
|
|
|
|
|
|
|
|
|
|
extern void getwindowsz(void);
|
|
extern void getioctls(void);
|
|
extern void setioctls(void);
|
|
|
|
extern int dosuspend(void);
|
|
|
|
|
|
|
|
|
|
|
|
extern void new_light_source (int, int, int, int, union any *);
|
|
extern void del_light_source (int, union any *);
|
|
extern void do_light_sources (char **);
|
|
extern struct monst *find_mid (unsigned, unsigned);
|
|
extern void save_light_sources (int, int, int);
|
|
extern void restore_light_sources (int);
|
|
extern void relink_light_sources (int);
|
|
extern void obj_move_light_source (struct obj *, struct obj *);
|
|
extern boolean any_light_source(void);
|
|
extern void snuff_light_source (int, int);
|
|
extern boolean obj_sheds_light (struct obj *);
|
|
extern boolean obj_is_burning (struct obj *);
|
|
extern void obj_split_light_source (struct obj *, struct obj *);
|
|
extern void obj_merge_light_sources (struct obj *,struct obj *);
|
|
extern void obj_adjust_light_radius (struct obj *,int);
|
|
extern int candle_light_range (struct obj *);
|
|
extern int arti_light_radius (struct obj *);
|
|
extern const char *arti_light_description (struct obj *);
|
|
extern int wiz_light_sources(void);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern boolean picking_lock (int *,int *);
|
|
extern boolean picking_at (int,int);
|
|
extern void breakchestlock (struct obj *,int);
|
|
extern void reset_pick(void);
|
|
extern int pick_lock (struct obj *);
|
|
extern int doforce(void);
|
|
extern boolean boxlock (struct obj *,struct obj *);
|
|
extern boolean doorlock (struct obj *,int,int);
|
|
extern int doopen(void);
|
|
extern boolean stumble_on_door_mimic (int,int);
|
|
extern int doopen_indir (int,int);
|
|
extern int doclose(void);
|
|
# 1042 "../include/extern.h"
|
|
extern void getmailstatus(void);
|
|
|
|
extern void ckmailstatus(void);
|
|
extern void readmail (struct obj *);
|
|
|
|
|
|
|
|
|
|
extern void dealloc_monst (struct monst *);
|
|
extern boolean is_home_elemental (struct permonst *);
|
|
extern struct monst *clone_mon (struct monst *,int,int);
|
|
extern int monhp_per_lvl (struct monst *);
|
|
extern void newmonhp (struct monst *,int);
|
|
extern struct mextra *newmextra(void);
|
|
extern void copy_mextra (struct monst *,struct monst *);
|
|
extern struct monst *makemon (struct permonst *,int,int,int);
|
|
extern boolean create_critters (int,struct permonst *,int);
|
|
extern struct permonst *rndmonst(void);
|
|
extern void reset_rndmonst (int);
|
|
extern struct permonst *mkclass (int,int);
|
|
extern int mkclass_poly (int);
|
|
extern int adj_lev (struct permonst *);
|
|
extern struct permonst *grow_up (struct monst *,struct monst *);
|
|
extern int mongets (struct monst *,int);
|
|
extern int golemhp (int);
|
|
extern boolean peace_minded (struct permonst *);
|
|
extern void set_malign (struct monst *);
|
|
extern void newmcorpsenm (struct monst *);
|
|
extern void freemcorpsenm (struct monst *);
|
|
extern void set_mimic_sym (struct monst *);
|
|
extern int mbirth_limit (int);
|
|
extern void mimic_hit_msg (struct monst *, int);
|
|
extern void mkmonmoney (struct monst *, long);
|
|
extern int bagotricks (struct obj *,int,int *);
|
|
extern boolean propagate (int, int,int);
|
|
extern boolean usmellmon (struct permonst *);
|
|
|
|
|
|
|
|
extern int mapglyph (int, int *, int *, unsigned *, int, int);
|
|
extern char *encglyph (int);
|
|
extern void genl_putmixed (winid, int, const char *);
|
|
|
|
|
|
|
|
extern int castmu (struct monst *,struct attack *,int,int);
|
|
extern int buzzmu (struct monst *,struct attack *);
|
|
|
|
|
|
|
|
extern int fightm (struct monst *);
|
|
extern int mattackm (struct monst *,struct monst *);
|
|
extern boolean engulf_target (struct monst *,struct monst *);
|
|
extern int mdisplacem (struct monst *,struct monst *,int);
|
|
extern void paralyze_monst (struct monst *,int);
|
|
extern int sleep_monst (struct monst *,int,int);
|
|
extern void slept_monst (struct monst *);
|
|
extern void xdrainenergym (struct monst *,int);
|
|
extern long attk_protection (int);
|
|
extern void rustm (struct monst *,struct obj *);
|
|
|
|
|
|
|
|
extern const char *mpoisons_subj (struct monst *,struct attack *);
|
|
extern void u_slow_down(void);
|
|
extern struct monst *cloneu(void);
|
|
extern void expels (struct monst *,struct permonst *,int);
|
|
extern struct attack *getmattk (struct permonst *,int,int *,struct attack *);
|
|
extern int mattacku (struct monst *);
|
|
extern int magic_negation (struct monst *);
|
|
extern boolean gulp_blnd_check(void);
|
|
extern int gazemu (struct monst *,struct attack *);
|
|
extern void mdamageu (struct monst *,int);
|
|
extern int could_seduce (struct monst *,struct monst *,struct attack *);
|
|
extern int doseduce (struct monst *);
|
|
|
|
|
|
|
|
extern void newemin (struct monst *);
|
|
extern void free_emin (struct monst *);
|
|
extern int monster_census (int);
|
|
extern int msummon (struct monst *);
|
|
extern void summon_minion (int,int);
|
|
extern int demon_talk (struct monst *);
|
|
extern long bribe (struct monst *);
|
|
extern int dprince (int);
|
|
extern int dlord (int);
|
|
extern int llord(void);
|
|
extern int ndemon (int);
|
|
extern int lminion(void);
|
|
extern void lose_guardian_angel (struct monst *);
|
|
extern void gain_guardian_angel(void);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern void sort_rooms(void);
|
|
extern void add_room (int,int,int,int,int,int,int);
|
|
extern void add_subroom (struct mkroom *,int,int,int,int, int,int,int);
|
|
|
|
extern void makecorridors(void);
|
|
extern void add_door (int,int,struct mkroom *);
|
|
extern void mklev(void);
|
|
|
|
|
|
|
|
extern void topologize (struct mkroom *);
|
|
|
|
extern void place_branch (branch *,int,int);
|
|
extern boolean occupied (int,int);
|
|
extern int okdoor (int,int);
|
|
extern void dodoor (int,int,struct mkroom *);
|
|
extern void mktrap (int,int,struct mkroom *,coord*);
|
|
extern void mkstairs (int,int,int,struct mkroom *);
|
|
extern void mkinvokearea(void);
|
|
extern void mineralize (int, int, int, int, int);
|
|
|
|
|
|
|
|
void flood_fill_rm (int,int,int,int,int);
|
|
void remove_rooms (int,int,int,int);
|
|
|
|
|
|
|
|
extern void wallification (int,int,int,int);
|
|
extern void walkfrom (int,int,int);
|
|
extern void makemaz (const char *);
|
|
extern void mazexy (coord *);
|
|
extern void bound_digging(void);
|
|
extern void mkportal (int,int,int,int);
|
|
extern boolean bad_location (int,int,int,int,int,int);
|
|
extern void place_lregion (int,int,int,int, int,int,int,int, int,d_level *);
|
|
|
|
|
|
extern void fumaroles(void);
|
|
extern void movebubbles(void);
|
|
extern void water_friction(void);
|
|
extern void save_waterlevel (int,int);
|
|
extern void restore_waterlevel (int);
|
|
extern const char *waterbody_name (int,int);
|
|
|
|
|
|
|
|
extern struct oextra *newoextra(void);
|
|
extern void copy_oextra (struct obj *,struct obj *);
|
|
extern void dealloc_oextra (struct oextra *);
|
|
extern void newomonst (struct obj *);
|
|
extern void free_omonst (struct obj *);
|
|
extern void newomid (struct obj *);
|
|
extern void free_omid (struct obj *);
|
|
extern void newolong (struct obj *);
|
|
extern void free_olong (struct obj *);
|
|
extern void new_omailcmd (struct obj *,const char *);
|
|
extern void free_omailcmd (struct obj *);
|
|
extern struct obj *mkobj_at (int,int,int,int);
|
|
extern struct obj *mksobj_at (int,int,int,int,int);
|
|
extern struct obj *mkobj (int,int);
|
|
extern int rndmonnum(void);
|
|
extern boolean bogon_is_pname (int);
|
|
extern struct obj *splitobj (struct obj *,long);
|
|
extern void replace_object (struct obj *,struct obj *);
|
|
extern void bill_dummy_object (struct obj *);
|
|
extern void costly_alteration (struct obj *,int);
|
|
extern struct obj *mksobj (int,int,int);
|
|
extern int bcsign (struct obj *);
|
|
extern int weight (struct obj *);
|
|
extern struct obj *mkgold (long,int,int);
|
|
extern struct obj *mkcorpstat (int,struct monst *,struct permonst *,int,int,unsigned);
|
|
|
|
extern int corpse_revive_type (struct obj *);
|
|
extern struct obj *obj_attach_mid (struct obj *, unsigned);
|
|
extern struct monst *get_mtraits (struct obj *, int);
|
|
extern struct obj *mk_tt_object (int,int,int);
|
|
extern struct obj *mk_named_object (int,struct permonst *,int,int,const char *);
|
|
|
|
extern struct obj *rnd_treefruit_at (int, int);
|
|
extern void set_corpsenm (struct obj *, int);
|
|
extern void start_corpse_timeout (struct obj *);
|
|
extern void bless (struct obj *);
|
|
extern void unbless (struct obj *);
|
|
extern void curse (struct obj *);
|
|
extern void uncurse (struct obj *);
|
|
extern void blessorcurse (struct obj *,int);
|
|
extern boolean is_flammable (struct obj *);
|
|
extern boolean is_rottable (struct obj *);
|
|
extern void place_object (struct obj *,int,int);
|
|
extern void remove_object (struct obj *);
|
|
extern void discard_minvent (struct monst *);
|
|
extern void obj_extract_self (struct obj *);
|
|
extern void extract_nobj (struct obj *, struct obj **);
|
|
extern void extract_nexthere (struct obj *, struct obj **);
|
|
extern int add_to_minv (struct monst *, struct obj *);
|
|
extern struct obj *add_to_container (struct obj *, struct obj *);
|
|
extern void add_to_migration (struct obj *);
|
|
extern void add_to_buried (struct obj *);
|
|
extern void dealloc_obj (struct obj *);
|
|
extern void obj_ice_effects (int, int, int);
|
|
extern long peek_at_iced_corpse_age (struct obj *);
|
|
extern int hornoplenty (struct obj *,int);
|
|
extern void obj_sanity_check(void);
|
|
extern struct obj* obj_nexto (struct obj*);
|
|
extern struct obj* obj_nexto_xy (int, int, int, unsigned);
|
|
extern struct obj* obj_absorb (struct obj**, struct obj**);
|
|
extern struct obj* obj_meld (struct obj**, struct obj**);
|
|
|
|
|
|
|
|
extern void mkroom (int);
|
|
extern void fill_zoo (struct mkroom *);
|
|
extern struct permonst *antholemon(void);
|
|
extern boolean nexttodoor (int,int);
|
|
extern boolean has_dnstairs (struct mkroom *);
|
|
extern boolean has_upstairs (struct mkroom *);
|
|
extern int somex (struct mkroom *);
|
|
extern int somey (struct mkroom *);
|
|
extern boolean inside_room (struct mkroom *,int,int);
|
|
extern boolean somexy (struct mkroom *,coord *);
|
|
extern void mkundead (coord *,int,int);
|
|
extern struct permonst *courtmon(void);
|
|
extern void save_rooms (int);
|
|
extern void rest_rooms (int);
|
|
extern struct mkroom *search_special (int);
|
|
extern int cmap_to_type (int);
|
|
|
|
|
|
|
|
extern int undead_to_corpse (int);
|
|
extern int genus (int,int);
|
|
extern int pm_to_cham (int);
|
|
extern int minliquid (struct monst *);
|
|
extern int movemon(void);
|
|
extern int meatmetal (struct monst *);
|
|
extern int meatobj (struct monst *);
|
|
extern void mpickgold (struct monst *);
|
|
extern boolean mpickstuff (struct monst *,const char *);
|
|
extern int curr_mon_load (struct monst *);
|
|
extern int max_mon_load (struct monst *);
|
|
extern boolean can_carry (struct monst *,struct obj *);
|
|
extern int mfndpos (struct monst *,coord *,long *,long);
|
|
extern boolean monnear (struct monst *,int,int);
|
|
extern void dmonsfree(void);
|
|
extern int mcalcmove (struct monst*);
|
|
extern void mcalcdistress(void);
|
|
extern void replmon (struct monst *,struct monst *);
|
|
extern void relmon (struct monst *,struct monst **);
|
|
extern struct obj *mlifesaver (struct monst *);
|
|
extern boolean corpse_chance (struct monst *,struct monst *,int);
|
|
extern void mondead (struct monst *);
|
|
extern void mondied (struct monst *);
|
|
extern void mongone (struct monst *);
|
|
extern void monstone (struct monst *);
|
|
extern void monkilled (struct monst *,const char *,int);
|
|
extern void unstuck (struct monst *);
|
|
extern void killed (struct monst *);
|
|
extern void xkilled (struct monst *,int);
|
|
extern void mon_to_stone (struct monst*);
|
|
extern void mnexto (struct monst *);
|
|
extern void maybe_mnexto (struct monst *);
|
|
extern boolean mnearto (struct monst *,int,int,int);
|
|
extern void m_respond (struct monst *);
|
|
extern void setmangry (struct monst *);
|
|
extern void wakeup (struct monst *);
|
|
extern void wake_nearby(void);
|
|
extern void wake_nearto (int,int,int);
|
|
extern void seemimic (struct monst *);
|
|
extern void rescham(void);
|
|
extern void restartcham(void);
|
|
extern void restore_cham (struct monst *);
|
|
extern boolean hideunder (struct monst*);
|
|
extern void hide_monst (struct monst *);
|
|
extern void mon_animal_list (int);
|
|
extern int select_newcham_form (struct monst *);
|
|
extern void mgender_from_permonst (struct monst *, struct permonst *);
|
|
extern int newcham (struct monst *,struct permonst *,int,int);
|
|
extern int can_be_hatched (int);
|
|
extern int egg_type_from_parent (int,int);
|
|
extern boolean dead_species (int,int);
|
|
extern void kill_genocided_monsters(void);
|
|
extern void golemeffects (struct monst *,int,int);
|
|
extern boolean angry_guards (int);
|
|
extern void pacify_guards(void);
|
|
extern void decide_to_shapeshift (struct monst *,int);
|
|
|
|
|
|
|
|
extern void set_mon_data (struct monst *,struct permonst *,int);
|
|
extern struct attack *attacktype_fordmg (struct permonst *,int,int);
|
|
extern boolean attacktype (struct permonst *,int);
|
|
extern boolean noattacks (struct permonst *);
|
|
extern boolean poly_when_stoned (struct permonst *);
|
|
extern boolean resists_drli (struct monst *);
|
|
extern boolean resists_magm (struct monst *);
|
|
extern boolean resists_blnd (struct monst *);
|
|
extern boolean can_blnd (struct monst *,struct monst *,int,struct obj *);
|
|
extern boolean ranged_attk (struct permonst *);
|
|
extern boolean hates_silver (struct permonst *);
|
|
extern boolean mon_hates_silver (struct monst *);
|
|
extern boolean passes_bars (struct permonst *);
|
|
extern boolean can_blow (struct monst *);
|
|
extern boolean can_be_strangled (struct monst *);
|
|
extern boolean can_track (struct permonst *);
|
|
extern boolean breakarm (struct permonst *);
|
|
extern boolean sliparm (struct permonst *);
|
|
extern boolean sticks (struct permonst *);
|
|
extern boolean cantvomit (struct permonst *);
|
|
extern int num_horns (struct permonst *);
|
|
|
|
extern struct attack *dmgtype_fromattack (struct permonst *,int,int);
|
|
extern boolean dmgtype (struct permonst *,int);
|
|
extern int max_passive_dmg (struct monst *,struct monst *);
|
|
extern boolean same_race (struct permonst *,struct permonst *);
|
|
extern int monsndx (struct permonst *);
|
|
extern int name_to_mon (const char *);
|
|
extern int name_to_monclass (const char *,int *);
|
|
extern int gender (struct monst *);
|
|
extern int pronoun_gender (struct monst *);
|
|
extern boolean levl_follower (struct monst *);
|
|
extern int little_to_big (int);
|
|
extern int big_to_little (int);
|
|
extern const char *locomotion (const struct permonst *,const char *);
|
|
extern const char *stagger (const struct permonst *,const char *);
|
|
extern const char *on_fire (struct permonst *,struct attack *);
|
|
extern const struct permonst *raceptr (struct monst *);
|
|
extern boolean olfaction (struct permonst *);
|
|
|
|
|
|
|
|
extern boolean itsstuck (struct monst *);
|
|
extern boolean mb_trapped (struct monst *);
|
|
extern boolean monhaskey (struct monst *,int);
|
|
extern void mon_regen (struct monst *,int);
|
|
extern int dochugw (struct monst *);
|
|
extern boolean onscary (int,int,struct monst *);
|
|
extern void monflee (struct monst *, int, int, int);
|
|
extern void mon_yells (struct monst *, const char *);
|
|
extern int dochug (struct monst *);
|
|
extern int m_move (struct monst *,int);
|
|
extern void dissolve_bars (int,int);
|
|
extern boolean closed_door (int,int);
|
|
extern boolean accessible (int,int);
|
|
extern void set_apparxy (struct monst *);
|
|
extern boolean can_ooze (struct monst *);
|
|
extern boolean can_fog (struct monst *);
|
|
extern boolean should_displace (struct monst *,coord *,long *,int, int,int);
|
|
|
|
extern boolean undesirable_disp (struct monst *,int,int);
|
|
|
|
|
|
|
|
extern void monst_init(void);
|
|
|
|
|
|
|
|
extern void monstr_init(void);
|
|
|
|
|
|
|
|
extern struct monst *mk_mplayer (struct permonst *,int, int,int);
|
|
|
|
extern void create_mplayers (int,int);
|
|
extern void mplayer_talk (struct monst *);
|
|
# 1459 "../include/extern.h"
|
|
extern int thitu (int,int,struct obj *,const char *);
|
|
extern int ohitmon (struct monst *,struct obj *,int,int);
|
|
extern void thrwmu (struct monst *);
|
|
extern int spitmu (struct monst *,struct attack *);
|
|
extern int breamu (struct monst *,struct attack *);
|
|
extern boolean linedup (int,int,int,int,int);
|
|
extern boolean lined_up (struct monst *);
|
|
extern struct obj *m_carrying (struct monst *,int);
|
|
extern void m_useupall (struct monst *,struct obj *);
|
|
extern void m_useup (struct monst *,struct obj *);
|
|
extern void m_throw (struct monst *,int,int,int,int,int,struct obj *);
|
|
extern boolean hits_bars (struct obj **,int,int,int,int);
|
|
|
|
|
|
|
|
extern boolean find_defensive (struct monst *);
|
|
extern int use_defensive (struct monst *);
|
|
extern int rnd_defensive_item (struct monst *);
|
|
extern boolean find_offensive (struct monst *);
|
|
|
|
|
|
|
|
extern int use_offensive (struct monst *);
|
|
extern int rnd_offensive_item (struct monst *);
|
|
extern boolean find_misc (struct monst *);
|
|
extern int use_misc (struct monst *);
|
|
extern int rnd_misc_item (struct monst *);
|
|
extern boolean searches_for_item (struct monst *,struct obj *);
|
|
extern boolean mon_reflects (struct monst *,const char *);
|
|
extern boolean ureflects (const char *,const char *);
|
|
extern boolean munstone (struct monst *,int);
|
|
extern boolean munslime (struct monst *,int);
|
|
|
|
|
|
|
|
extern void awaken_soldiers (struct monst *);
|
|
extern int do_play_instrument (struct obj *);
|
|
# 1504 "../include/extern.h"
|
|
extern struct nhregex * regex_init(void);
|
|
extern boolean regex_compile (const char *, struct nhregex *);
|
|
extern const char *regex_error_desc (struct nhregex *);
|
|
extern boolean regex_match (const char *, struct nhregex*);
|
|
extern void regex_free (struct nhregex *);
|
|
# 1525 "../include/extern.h"
|
|
extern void init_objects(void);
|
|
extern void obj_shuffle_range (int,int *,int *);
|
|
extern int find_skates(void);
|
|
extern void oinit(void);
|
|
extern void savenames (int,int);
|
|
extern void restnames (int);
|
|
extern void discover_object (int,int,int);
|
|
extern void undiscover_object (int);
|
|
extern int dodiscovered(void);
|
|
extern int doclassdisco(void);
|
|
extern void rename_disco(void);
|
|
|
|
|
|
|
|
extern void objects_init(void);
|
|
|
|
|
|
|
|
extern char *obj_typename (int);
|
|
extern char *simple_typename (int);
|
|
extern boolean obj_is_pname (struct obj *);
|
|
extern char *distant_name (struct obj *,char *(*)(struct obj *));
|
|
extern char *fruitname (int);
|
|
extern char *xname (struct obj *);
|
|
extern char *mshot_xname (struct obj *);
|
|
extern boolean the_unique_obj (struct obj *);
|
|
extern boolean the_unique_pm (struct permonst *);
|
|
extern char *doname (struct obj *);
|
|
extern boolean not_fully_identified (struct obj *);
|
|
extern char *corpse_xname (struct obj *,const char *,unsigned);
|
|
extern char *cxname (struct obj *);
|
|
extern char *cxname_singular (struct obj *);
|
|
extern char *killer_xname (struct obj *);
|
|
extern char *short_oname (struct obj *,char *(*)(struct obj *),char *(*)(struct obj *), unsigned);
|
|
|
|
extern const char *singular (struct obj *,char *(*)(struct obj *));
|
|
extern char *an (const char *);
|
|
extern char *An (const char *);
|
|
extern char *The (const char *);
|
|
extern char *the (const char *);
|
|
extern char *aobjnam (struct obj *,const char *);
|
|
extern char *yobjnam (struct obj *,const char *);
|
|
extern char *Yobjnam2 (struct obj *,const char *);
|
|
extern char *Tobjnam (struct obj *,const char *);
|
|
extern char *otense (struct obj *,const char *);
|
|
extern char *vtense (const char *,const char *);
|
|
extern char *Doname2 (struct obj *);
|
|
extern char *yname (struct obj *);
|
|
extern char *Yname2 (struct obj *);
|
|
extern char *ysimple_name (struct obj *);
|
|
extern char *Ysimple_name2 (struct obj *);
|
|
extern char *simpleonames (struct obj *);
|
|
extern char *ansimpleoname (struct obj *);
|
|
extern char *thesimpleoname (struct obj *);
|
|
extern char *bare_artifactname (struct obj *);
|
|
extern char *makeplural (const char *);
|
|
extern char *makesingular (const char *);
|
|
extern struct obj *readobjnam (char *,struct obj *);
|
|
extern int rnd_class (int,int);
|
|
extern const char *suit_simple_name (struct obj *);
|
|
extern const char *cloak_simple_name (struct obj *);
|
|
extern const char *helm_simple_name (struct obj *);
|
|
extern const char *mimic_obj_name (struct monst *);
|
|
extern char *safe_qbuf (char *,const char *,const char *,struct obj *, char *(*)(struct obj *),char *(*)(struct obj *),const char *);
|
|
|
|
|
|
|
|
|
|
extern boolean match_optname (const char *,const char *,int,int);
|
|
extern void initoptions(void);
|
|
extern void initoptions_init(void);
|
|
extern void initoptions_finish(void);
|
|
extern void parseoptions (char *,int,int);
|
|
extern int doset(void);
|
|
extern int dotogglepickup(void);
|
|
extern void option_help(void);
|
|
extern void next_opt (winid,const char *);
|
|
extern int fruitadd (char *,struct fruit *);
|
|
extern int choose_classes_menu (const char *,int,int,char *,char *);
|
|
extern void add_menu_cmd_alias (int, int);
|
|
extern char map_menu_cmd (int);
|
|
extern void assign_warnings (uchar *);
|
|
extern char *nh_getenv (const char *);
|
|
extern void set_duplicate_opt_detection (int);
|
|
extern void set_wc_option_mod_status (unsigned long, int);
|
|
extern void set_wc2_option_mod_status (unsigned long, int);
|
|
extern void set_option_mod_status (const char *,int);
|
|
extern int add_autopickup_exception (const char *);
|
|
extern void free_autopickup_exceptions(void);
|
|
extern int load_symset (const char *,int);
|
|
extern void parsesymbols (char *);
|
|
extern struct symparse *match_sym (char *);
|
|
extern void set_playmode(void);
|
|
extern int sym_val (char *);
|
|
extern boolean add_menu_coloring (char *);
|
|
extern boolean get_menu_coloring (char *, int *, int *);
|
|
extern void free_menu_coloring(void);
|
|
|
|
|
|
|
|
extern char *self_lookat (char *);
|
|
extern int dowhatis(void);
|
|
extern int doquickwhatis(void);
|
|
extern int doidtrap(void);
|
|
extern int dowhatdoes(void);
|
|
extern char *dowhatdoes_core (int, char *);
|
|
extern int dohelp(void);
|
|
extern int dohistory(void);
|
|
extern int do_screen_description (coord, int, int, char *, const char **);
|
|
extern int do_look (int, coord *);
|
|
# 1688 "../include/extern.h"
|
|
extern int collect_obj_classes (char *,struct obj *,int,boolean (*) (struct obj *), int *);
|
|
|
|
extern boolean rider_corpse_revival (struct obj *,int);
|
|
extern void add_valid_menu_class (int);
|
|
extern boolean allow_all (struct obj *);
|
|
extern boolean allow_category (struct obj *);
|
|
extern boolean is_worn_by_type (struct obj *);
|
|
extern int ck_bag (struct obj *);
|
|
|
|
|
|
|
|
|
|
extern int pickup (int);
|
|
extern int pickup_object (struct obj *, long, int);
|
|
extern int query_category (const char *, struct obj *, int, menu_item **, int);
|
|
|
|
extern int query_objlist (const char *, struct obj *, int, menu_item **, int, boolean (*)(struct obj *));
|
|
|
|
extern struct obj *pick_obj (struct obj *);
|
|
extern int encumber_msg(void);
|
|
extern int doloot(void);
|
|
extern boolean container_gone (int (*)(struct obj *));
|
|
extern boolean u_handsy(void);
|
|
extern int use_container (struct obj **,int);
|
|
extern int loot_mon (struct monst *,int *,boolean *);
|
|
extern int dotip(void);
|
|
extern boolean is_autopickup_exception (struct obj *, int);
|
|
|
|
|
|
|
|
extern void pline (const char *,...) __attribute__ ((format (printf, 1, 2)));
|
|
extern void Norep (const char *,...) __attribute__ ((format (printf, 1, 2)));
|
|
extern void free_youbuf(void);
|
|
extern void You (const char *,...) __attribute__ ((format (printf, 1, 2)));
|
|
extern void Your (const char *,...) __attribute__ ((format (printf, 1, 2)));
|
|
extern void You_feel (const char *,...) __attribute__ ((format (printf, 1, 2)));
|
|
extern void You_cant (const char *,...) __attribute__ ((format (printf, 1, 2)));
|
|
extern void You_hear (const char *,...) __attribute__ ((format (printf, 1, 2)));
|
|
extern void You_see (const char *,...) __attribute__ ((format (printf, 1, 2)));
|
|
extern void pline_The (const char *,...) __attribute__ ((format (printf, 1, 2)));
|
|
extern void There (const char *,...) __attribute__ ((format (printf, 1, 2)));
|
|
extern void verbalize (const char *,...) __attribute__ ((format (printf, 1, 2)));
|
|
extern void raw_printf (const char *,...) __attribute__ ((format (printf, 1, 2)));
|
|
extern void impossible (const char *,...) __attribute__ ((format (printf, 1, 2)));
|
|
extern const char *align_str (int);
|
|
extern void mstatusline (struct monst *);
|
|
extern void ustatusline(void);
|
|
extern void self_invis_message(void);
|
|
extern void pudding_merge_message (struct obj*, struct obj*);
|
|
|
|
|
|
|
|
extern void set_uasmon(void);
|
|
extern void float_vs_flight(void);
|
|
extern void change_sex(void);
|
|
extern void polyself (int);
|
|
extern int polymon (int);
|
|
extern void rehumanize(void);
|
|
extern int dobreathe(void);
|
|
extern int dospit(void);
|
|
extern int doremove(void);
|
|
extern int dospinweb(void);
|
|
extern int dosummon(void);
|
|
extern int dogaze(void);
|
|
extern int dohide(void);
|
|
extern int dopoly(void);
|
|
extern int domindblast(void);
|
|
extern void skinback (int);
|
|
extern const char *mbodypart (struct monst *,int);
|
|
extern const char *body_part (int);
|
|
extern int poly_gender(void);
|
|
extern void ugolemeffects (int,int);
|
|
|
|
|
|
|
|
extern void set_itimeout (long *,long);
|
|
extern void incr_itimeout (long *,int);
|
|
extern void make_confused (long,int);
|
|
extern void make_stunned (long,int);
|
|
extern void make_blinded (long,int);
|
|
extern void make_sick (long, const char *, int,int);
|
|
extern void make_slimed (long,const char *);
|
|
extern void make_stoned (long,const char *,int,const char *);
|
|
extern void make_vomiting (long,int);
|
|
extern boolean make_hallucinated (long,int,long);
|
|
extern int dodrink(void);
|
|
extern int dopotion (struct obj *);
|
|
extern int peffects (struct obj *);
|
|
extern void healup (int,int,int,int);
|
|
extern void strange_feeling (struct obj *,const char *);
|
|
extern void potionhit (struct monst *,struct obj *,int);
|
|
extern void potionbreathe (struct obj *);
|
|
extern int dodip(void);
|
|
extern void mongrantswish (struct monst **);
|
|
extern void djinni_from_bottle (struct obj *);
|
|
extern struct monst *split_mon (struct monst *,struct monst *);
|
|
extern const char *bottlename(void);
|
|
|
|
|
|
|
|
extern boolean critically_low_hp (int);
|
|
|
|
|
|
|
|
extern int dosacrifice(void);
|
|
extern boolean can_pray (int);
|
|
extern int dopray(void);
|
|
extern const char *u_gname(void);
|
|
extern int doturn(void);
|
|
extern const char *a_gname(void);
|
|
extern const char *a_gname_at (int x,int y);
|
|
extern const char *align_gname (int);
|
|
extern const char *halu_gname (int);
|
|
extern const char *align_gtitle (int);
|
|
extern void altar_wrath (int,int);
|
|
|
|
|
|
|
|
|
|
extern int move_special (struct monst *,int,int,int,int, int,int,int,int);
|
|
|
|
extern char temple_occupied (char *);
|
|
extern boolean inhistemple (struct monst *);
|
|
extern int pri_move (struct monst *);
|
|
extern void priestini (d_level *,struct mkroom *,int,int,int);
|
|
extern aligntyp mon_aligntyp (struct monst *);
|
|
extern char *priestname (struct monst *,char *);
|
|
extern boolean p_coaligned (struct monst *);
|
|
extern struct monst *findpriest (int);
|
|
extern void intemple (int);
|
|
extern void forget_temple_entry (struct monst *);
|
|
extern void priest_talk (struct monst *);
|
|
extern struct monst *mk_roamer (struct permonst *,int, int,int,int);
|
|
|
|
extern void reset_hostility (struct monst *);
|
|
extern boolean in_your_sanctuary (struct monst *,int,int);
|
|
extern void ghod_hitsu (struct monst *);
|
|
extern void angry_priest(void);
|
|
extern void clearpriests(void);
|
|
extern void restpriest (struct monst *,int);
|
|
extern void newepri (struct monst *);
|
|
extern void free_epri (struct monst *);
|
|
|
|
|
|
|
|
extern void onquest(void);
|
|
extern void nemdead(void);
|
|
extern void artitouch (struct obj *);
|
|
extern boolean ok_to_quest(void);
|
|
extern void leader_speaks (struct monst *);
|
|
extern void nemesis_speaks(void);
|
|
extern void quest_chat (struct monst *);
|
|
extern void quest_talk (struct monst *);
|
|
extern void quest_stat_check (struct monst *);
|
|
extern void finish_quest (struct obj *);
|
|
|
|
|
|
|
|
extern void load_qtlist(void);
|
|
extern void unload_qtlist(void);
|
|
extern short quest_info (int);
|
|
extern const char *ldrname(void);
|
|
extern boolean is_quest_artifact (struct obj*);
|
|
extern void com_pager (int);
|
|
extern void qt_pager (int);
|
|
extern struct permonst *qt_montype(void);
|
|
extern void deliver_splev_message(void);
|
|
# 1867 "../include/extern.h"
|
|
extern void learnscroll (struct obj *);
|
|
extern char *tshirt_text (struct obj *, char *);
|
|
extern int doread(void);
|
|
extern boolean is_chargeable (struct obj *);
|
|
extern void recharge (struct obj *,int);
|
|
extern void forget_objects (int);
|
|
extern void forget_levels (int);
|
|
extern void forget_traps(void);
|
|
extern void forget_map (int);
|
|
extern int seffects (struct obj *);
|
|
extern void drop_boulder_on_player (int, int, int, int);
|
|
extern boolean drop_boulder_on_monster (int, int, int, int);
|
|
extern void wand_explode (struct obj *,int);
|
|
|
|
|
|
|
|
extern void litroom (int,struct obj *);
|
|
extern void do_genocide (int);
|
|
extern void punish (struct obj *);
|
|
extern void unpunish(void);
|
|
extern boolean cant_revive (int *,int,struct obj *);
|
|
extern boolean create_particular(void);
|
|
|
|
|
|
|
|
extern void init_rect(void);
|
|
extern NhRect *get_rect (NhRect *);
|
|
extern NhRect *rnd_rect(void);
|
|
extern void remove_rect (NhRect *);
|
|
extern void add_rect (NhRect *);
|
|
extern void split_rects (NhRect *,NhRect *);
|
|
|
|
|
|
extern void clear_regions(void);
|
|
extern void run_regions(void);
|
|
extern boolean in_out_region (int,int);
|
|
extern boolean m_in_out_region (struct monst *,int,int);
|
|
extern void update_player_regions(void);
|
|
extern void update_monster_region (struct monst *);
|
|
extern NhRegion *visible_region_at (int,int);
|
|
extern void show_region (NhRegion*, int, int);
|
|
extern void save_regions (int,int);
|
|
extern void rest_regions (int,int);
|
|
extern NhRegion* create_gas_cloud (int, int, int, int);
|
|
extern boolean region_danger(void);
|
|
extern void region_safety(void);
|
|
|
|
|
|
|
|
extern void inven_inuse (int);
|
|
extern int dorecover (int);
|
|
extern void restcemetery (int,struct cemetery **);
|
|
extern void trickery (char *);
|
|
extern void getlev (int,int,int,int);
|
|
extern void get_plname_from_file (int, char *);
|
|
|
|
|
|
|
|
extern void minit(void);
|
|
extern boolean lookup_id_mapping (unsigned, unsigned *);
|
|
extern void mread (int,genericptr_t,unsigned int);
|
|
extern int validate (int,const char *);
|
|
extern void reset_restpref(void);
|
|
extern void set_restpref (const char *);
|
|
extern void set_savepref (const char *);
|
|
|
|
|
|
|
|
extern void genl_outrip (winid,int,time_t);
|
|
|
|
|
|
|
|
extern int rn2 (int);
|
|
extern int rnl (int);
|
|
extern int rnd (int);
|
|
extern int d (int,int);
|
|
extern int rne (int);
|
|
extern int rnz (int);
|
|
|
|
|
|
|
|
extern boolean validrole (int);
|
|
extern boolean validrace (int, int);
|
|
extern boolean validgend (int, int, int);
|
|
extern boolean validalign (int, int, int);
|
|
extern int randrole(void);
|
|
extern int randrace (int);
|
|
extern int randgend (int, int);
|
|
extern int randalign (int, int);
|
|
extern int str2role (const char *);
|
|
extern int str2race (const char *);
|
|
extern int str2gend (char *);
|
|
extern int str2align (char *);
|
|
extern boolean ok_role (int, int, int, int);
|
|
extern int pick_role (int, int, int, int);
|
|
extern boolean ok_race (int, int, int, int);
|
|
extern int pick_race (int, int, int, int);
|
|
extern boolean ok_gend (int, int, int, int);
|
|
extern int pick_gend (int, int, int, int);
|
|
extern boolean ok_align (int, int, int, int);
|
|
extern int pick_align (int, int, int, int);
|
|
extern void rigid_role_checks(void);
|
|
extern boolean setrolefilter (char *);
|
|
extern char *build_plselection_prompt (char *,int,int,int,int,int);
|
|
extern char *root_plselection_prompt (char *,int,int,int,int,int);
|
|
extern void plnamesuffix(void);
|
|
extern void role_selection_prolog (int,winid);
|
|
extern void role_menu_extra (int,winid);
|
|
extern void role_init(void);
|
|
extern const char *Hello (struct monst *);
|
|
extern const char *Goodbye(void);
|
|
|
|
|
|
|
|
extern char *getrumor (int,char *, int);
|
|
extern char *get_rnd_text (const char *, char *);
|
|
extern void outrumor (int,int);
|
|
extern void outoracle (int, int);
|
|
extern void save_oracles (int,int);
|
|
extern void restore_oracles (int);
|
|
extern int doconsult (struct monst *);
|
|
extern void rumor_check(void);
|
|
|
|
|
|
|
|
extern int dosave(void);
|
|
extern int dosave0(void);
|
|
extern boolean tricked_fileremoved (int, char *);
|
|
|
|
extern void savestateinlock(void);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern void savelev (int,int,int);
|
|
|
|
extern genericptr_t mon_to_buffer (struct monst *, int *);
|
|
extern void bufon (int);
|
|
extern void bufoff (int);
|
|
extern void bflush (int);
|
|
extern void bwrite (int,genericptr_t,unsigned int);
|
|
extern void bclose (int);
|
|
extern void def_bclose (int);
|
|
|
|
|
|
|
|
extern void savecemetery (int,int,struct cemetery **);
|
|
extern void savefruitchn (int,int);
|
|
extern void store_plname_in_file (int);
|
|
extern void free_dungeons(void);
|
|
extern void freedynamicdata(void);
|
|
extern void store_savefileinfo (int);
|
|
|
|
|
|
|
|
extern long money2mon (struct monst *, long);
|
|
extern void money2u (struct monst *, long);
|
|
extern void shkgone (struct monst *);
|
|
extern void set_residency (struct monst *,int);
|
|
extern void replshk (struct monst *,struct monst *);
|
|
extern void restshk (struct monst *,int);
|
|
extern char inside_shop (int,int);
|
|
extern void u_left_shop (char *,int);
|
|
extern void remote_burglary (int,int);
|
|
extern void u_entered_shop (char *);
|
|
extern void pick_pick (struct obj *);
|
|
extern boolean same_price (struct obj *,struct obj *);
|
|
extern void shopper_financial_report(void);
|
|
extern int inhishop (struct monst *);
|
|
extern struct monst *shop_keeper (int);
|
|
extern boolean tended_shop (struct mkroom *);
|
|
extern boolean is_unpaid (struct obj *);
|
|
extern void delete_contents (struct obj *);
|
|
extern void obfree (struct obj *,struct obj *);
|
|
extern void home_shk (struct monst *,int);
|
|
extern void make_happy_shk (struct monst *,int);
|
|
extern void make_happy_shoppers (int);
|
|
extern void hot_pursuit (struct monst *);
|
|
extern void make_angry_shk (struct monst *,int,int);
|
|
extern int dopay(void);
|
|
extern boolean paybill (int);
|
|
extern void finish_paybill(void);
|
|
extern struct obj *find_oid (unsigned);
|
|
extern long contained_cost (struct obj *,struct monst *,long,int, int);
|
|
extern long contained_gold (struct obj *);
|
|
extern void picked_container (struct obj *);
|
|
extern void alter_cost (struct obj *,long);
|
|
extern long unpaid_cost (struct obj *,int);
|
|
extern boolean billable (struct monst **,struct obj *,int,int);
|
|
extern void addtobill (struct obj *,int,int,int);
|
|
extern void splitbill (struct obj *,struct obj *);
|
|
extern void subfrombill (struct obj *,struct monst *);
|
|
extern long stolen_value (struct obj *,int,int,int,int);
|
|
extern void sellobj_state (int);
|
|
extern void sellobj (struct obj *,int,int);
|
|
extern int doinvbill (int);
|
|
extern struct monst *shkcatch (struct obj *,int,int);
|
|
extern void add_damage (int,int,long);
|
|
extern int repair_damage (struct monst *,struct damage *,int);
|
|
extern int shk_move (struct monst *);
|
|
extern void after_shk_move (struct monst *);
|
|
extern boolean is_fshk (struct monst *);
|
|
extern void shopdig (int);
|
|
extern void pay_for_damage (const char *,int);
|
|
extern boolean costly_spot (int,int);
|
|
extern struct obj *shop_object (int,int);
|
|
extern void price_quote (struct obj *);
|
|
extern void shk_chat (struct monst *);
|
|
extern void check_unpaid_usage (struct obj *,int);
|
|
extern void check_unpaid (struct obj *);
|
|
extern void costly_gold (int,int,long);
|
|
extern boolean block_door (int,int);
|
|
extern boolean block_entry (int,int);
|
|
extern char *shk_your (char *,struct obj *);
|
|
extern char *Shk_Your (char *,struct obj *);
|
|
|
|
|
|
|
|
extern void neweshk (struct monst *);
|
|
extern void free_eshk (struct monst *);
|
|
extern void stock_room (int,struct mkroom *);
|
|
extern boolean saleable (struct monst *,struct obj *);
|
|
extern int get_shop_item (int);
|
|
extern const char *shkname (struct monst *);
|
|
extern boolean shkname_is_pname (struct monst *);
|
|
extern boolean is_izchak (struct monst *,int);
|
|
|
|
|
|
|
|
extern void take_gold(void);
|
|
extern int dosit(void);
|
|
extern void rndcurse(void);
|
|
extern void attrcurse(void);
|
|
|
|
|
|
|
|
extern void dosounds(void);
|
|
extern const char *growl_sound (struct monst *);
|
|
extern void growl (struct monst *);
|
|
extern void yelp (struct monst *);
|
|
extern void whimper (struct monst *);
|
|
extern void beg (struct monst *);
|
|
extern int dotalk(void);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern void sys_early_init(void);
|
|
extern void sysopt_release(void);
|
|
extern void sysopt_seduce_set (int);
|
|
# 2131 "../include/extern.h"
|
|
extern boolean check_room (xchar *,xchar *,xchar *,xchar *,int);
|
|
extern boolean create_room (int,int,int,int, int,int,int,int);
|
|
|
|
extern void create_secret_door (struct mkroom *,int);
|
|
extern boolean dig_corridor (coord *,coord *,int,int,int);
|
|
extern void fill_room (struct mkroom *,int);
|
|
extern boolean load_special (const char *);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern int study_book (struct obj *);
|
|
extern void book_disappears (struct obj *);
|
|
extern void book_substitution (struct obj *,struct obj *);
|
|
extern void age_spells(void);
|
|
extern int docast(void);
|
|
extern int spell_skilltype (int);
|
|
extern int spelleffects (int,int);
|
|
extern void losespells(void);
|
|
extern int dovspell(void);
|
|
extern void initialspell (struct obj *);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern long somegold (long);
|
|
extern void stealgold (struct monst *);
|
|
extern void remove_worn_item (struct obj *,int);
|
|
extern int steal (struct monst *, char *);
|
|
extern int mpickobj (struct monst *,struct obj *);
|
|
extern void stealamulet (struct monst *);
|
|
extern void maybe_absorb_item (struct monst *,struct obj *,int,int);
|
|
extern void mdrop_obj (struct monst *,struct obj *,int);
|
|
extern void mdrop_special_objs (struct monst *);
|
|
extern void relobj (struct monst *,int,int);
|
|
extern struct obj *findgold (struct obj *);
|
|
|
|
|
|
|
|
extern void rider_cant_reach(void);
|
|
extern boolean can_saddle (struct monst *);
|
|
extern int use_saddle (struct obj *);
|
|
extern boolean can_ride (struct monst *);
|
|
extern int doride(void);
|
|
extern boolean mount_steed (struct monst *, int);
|
|
extern void exercise_steed(void);
|
|
extern void kick_steed(void);
|
|
extern void dismount_steed (int);
|
|
extern void place_monster (struct monst *,int,int);
|
|
extern boolean stucksteed (int);
|
|
|
|
|
|
|
|
extern boolean goodpos (int,int,struct monst *,unsigned);
|
|
extern boolean enexto (coord *,int,int,struct permonst *);
|
|
extern boolean enexto_core (coord *,int,int,struct permonst *,unsigned);
|
|
extern void teleds (int,int,int);
|
|
extern boolean safe_teleds (int);
|
|
extern boolean teleport_pet (struct monst *,int);
|
|
extern void tele(void);
|
|
extern boolean scrolltele (struct obj *);
|
|
extern int dotele(void);
|
|
extern void level_tele(void);
|
|
extern void domagicportal (struct trap *);
|
|
extern void tele_trap (struct trap *);
|
|
extern void level_tele_trap (struct trap *);
|
|
extern void rloc_to (struct monst *,int,int);
|
|
extern boolean rloc (struct monst *, int);
|
|
extern boolean tele_restrict (struct monst *);
|
|
extern void mtele_trap (struct monst *, struct trap *,int);
|
|
extern int mlevel_tele_trap (struct monst *, struct trap *,int,int);
|
|
extern boolean rloco (struct obj *);
|
|
extern int random_teleport_level(void);
|
|
extern boolean u_teleport_mon (struct monst *,int);
|
|
# 2217 "../include/extern.h"
|
|
extern void burn_away_slime(void);
|
|
extern void nh_timeout(void);
|
|
extern void fall_asleep (int, int);
|
|
extern void attach_egg_hatch_timeout (struct obj *, long);
|
|
extern void attach_fig_transform_timeout (struct obj *);
|
|
extern void kill_egg (struct obj *);
|
|
extern void hatch_egg (union any *, long);
|
|
extern void learn_egg_type (int);
|
|
extern void burn_object (union any *, long);
|
|
extern void begin_burn (struct obj *, int);
|
|
extern void end_burn (struct obj *, int);
|
|
extern void do_storms(void);
|
|
extern boolean start_timer (long, int, int, union any *);
|
|
extern long stop_timer (int, union any *);
|
|
extern long peek_timer (int,union any *);
|
|
extern void run_timers(void);
|
|
extern void obj_move_timers (struct obj *, struct obj *);
|
|
extern void obj_split_timers (struct obj *, struct obj *);
|
|
extern void obj_stop_timers (struct obj *);
|
|
extern boolean obj_has_timer (struct obj *,int);
|
|
extern void spot_stop_timers (int,int,int);
|
|
extern long spot_time_expires (int,int,int);
|
|
extern long spot_time_left (int,int,int);
|
|
extern boolean obj_is_local (struct obj *);
|
|
extern void save_timers (int,int,int);
|
|
extern void restore_timers (int,int,int,long);
|
|
extern void relink_timers (int);
|
|
extern int wiz_timeout_queue(void);
|
|
extern void timer_sanity_check(void);
|
|
|
|
|
|
|
|
extern void formatkiller (char *,unsigned,int);
|
|
extern void topten (int,time_t);
|
|
extern void prscore (int,char **);
|
|
extern struct obj *tt_oname (struct obj *);
|
|
|
|
|
|
|
|
extern void initrack(void);
|
|
extern void settrack(void);
|
|
extern coord *gettrack (int,int);
|
|
|
|
|
|
|
|
extern boolean burnarmor (struct monst *);
|
|
extern int erode_obj (struct obj *,const char *,int,int);
|
|
extern boolean grease_protect (struct obj *,const char *,struct monst *);
|
|
extern struct trap *maketrap (int,int,int);
|
|
extern void fall_through (int);
|
|
extern struct monst *animate_statue (struct obj *,int,int,int,int *);
|
|
extern struct monst *activate_statue_trap (struct trap *,int,int,int);
|
|
|
|
extern void dotrap (struct trap *, unsigned);
|
|
extern void seetrap (struct trap *);
|
|
extern void feeltrap (struct trap *);
|
|
extern int mintrap (struct monst *);
|
|
extern void instapetrify (const char *);
|
|
extern void minstapetrify (struct monst *,int);
|
|
extern void selftouch (const char *);
|
|
extern void mselftouch (struct monst *,const char *,int);
|
|
extern void float_up(void);
|
|
extern void fill_pit (int,int);
|
|
extern int float_down (long, long);
|
|
extern void climb_pit(void);
|
|
extern boolean fire_damage (struct obj *,int,int,int);
|
|
extern int fire_damage_chain (struct obj *,int,int,int,int);
|
|
extern void acid_damage(struct obj *);
|
|
extern int water_damage (struct obj *,const char*,int);
|
|
extern void water_damage_chain (struct obj *,int);
|
|
extern boolean drown(void);
|
|
extern void drain_en (int);
|
|
extern int dountrap(void);
|
|
extern void cnv_trap_obj (int,int,struct trap *,int);
|
|
extern int untrap (int);
|
|
extern boolean openholdingtrap (struct monst *,boolean *);
|
|
extern boolean closeholdingtrap (struct monst *,boolean *);
|
|
extern boolean openfallingtrap (struct monst *,int,boolean *);
|
|
extern boolean chest_trap (struct obj *,int,int);
|
|
extern void deltrap (struct trap *);
|
|
extern boolean delfloortrap (struct trap *);
|
|
extern struct trap *t_at (int,int);
|
|
extern void b_trapped (const char *,int);
|
|
extern boolean unconscious(void);
|
|
extern void blow_up_landmine (struct trap *);
|
|
extern int launch_obj (int,int,int,int,int,int);
|
|
extern boolean launch_in_progress(void);
|
|
extern void force_launch_placement(void);
|
|
extern boolean uteetering_at_seen_pit (struct trap *);
|
|
extern boolean lava_effects(void);
|
|
extern void sink_into_lava(void);
|
|
extern void sokoban_guilt(void);
|
|
|
|
|
|
|
|
extern void u_init(void);
|
|
|
|
|
|
|
|
extern void erode_armor (struct monst *,int);
|
|
extern boolean attack_checks (struct monst *,struct obj *);
|
|
extern void check_caitiff (struct monst *);
|
|
extern int find_roll_to_hit (struct monst *,int,struct obj *,int *,int *);
|
|
extern boolean attack (struct monst *);
|
|
extern boolean hmon (struct monst *,struct obj *,int);
|
|
extern int damageum (struct monst *,struct attack *);
|
|
extern void missum (struct monst *,struct attack *,int);
|
|
extern int passive (struct monst *,int,int,int,int);
|
|
extern void passive_obj (struct monst *,struct obj *,struct attack *);
|
|
extern void stumble_onto_mimic (struct monst *);
|
|
extern int flash_hits_mon (struct monst *,struct obj *);
|
|
extern void light_hits_gremlin (struct monst *,int);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern void sethanguphandler (void (*)(int));
|
|
extern boolean authorize_wizard_mode(void);
|
|
extern boolean check_user_string (char *);
|
|
|
|
|
|
|
|
|
|
|
|
extern void gettty(void);
|
|
extern void settty (const char *);
|
|
extern void setftty(void);
|
|
extern void intron(void);
|
|
extern void introff(void);
|
|
extern void error (const char *,...) __attribute__ ((format (printf, 1, 2)));
|
|
|
|
|
|
|
|
|
|
|
|
extern void getlock(void);
|
|
extern void regularize (char *);
|
|
|
|
|
|
|
|
|
|
extern int dosh(void);
|
|
|
|
|
|
extern int child (int);
|
|
|
|
|
|
extern boolean file_exists (const char *);
|
|
# 2381 "../include/extern.h"
|
|
extern void newegd (struct monst *);
|
|
extern void free_egd (struct monst *);
|
|
extern boolean grddead (struct monst *);
|
|
extern char vault_occupied (char *);
|
|
extern void invault(void);
|
|
extern int gd_move (struct monst *);
|
|
extern void paygd(void);
|
|
extern long hidden_gold(void);
|
|
extern boolean gd_sound(void);
|
|
extern void vault_gd_watching (unsigned int);
|
|
|
|
|
|
|
|
extern char *version_string (char *);
|
|
extern char *getversionstring (char *);
|
|
extern int doversion(void);
|
|
extern int doextversion(void);
|
|
|
|
|
|
|
|
extern boolean check_version (struct version_info *, const char *,int);
|
|
|
|
extern boolean uptodate (int,const char *);
|
|
extern void store_version (int);
|
|
extern unsigned long get_feature_notice_ver (char *);
|
|
extern unsigned long get_current_feature_ver(void);
|
|
extern const char *copyright_banner_line (int);
|
|
# 2436 "../include/extern.h"
|
|
extern void vision_init(void);
|
|
extern int does_block (int,int,struct rm*);
|
|
extern void vision_reset(void);
|
|
extern void vision_recalc (int);
|
|
extern void block_point (int,int);
|
|
extern void unblock_point (int,int);
|
|
extern boolean clear_path (int,int,int,int);
|
|
extern void do_clear_area (int,int,int, void (*)(int,int,genericptr_t),genericptr_t);
|
|
|
|
extern unsigned howmonseen (struct monst *);
|
|
# 2529 "../include/extern.h"
|
|
extern const char *weapon_descr (struct obj *);
|
|
extern int hitval (struct obj *,struct monst *);
|
|
extern int dmgval (struct obj *,struct monst *);
|
|
extern struct obj *select_rwep (struct monst *);
|
|
extern struct obj *select_hwep (struct monst *);
|
|
extern void possibly_unwield (struct monst *,int);
|
|
extern void mwepgone (struct monst *);
|
|
extern int mon_wield_item (struct monst *);
|
|
extern int abon(void);
|
|
extern int dbon(void);
|
|
extern int enhance_weapon_skill(void);
|
|
extern void unrestrict_weapon_skill (int);
|
|
extern void use_skill (int,int);
|
|
extern void add_weapon_skill (int);
|
|
extern void lose_weapon_skill (int);
|
|
extern int weapon_type (struct obj *);
|
|
extern int uwep_skill_type(void);
|
|
extern int weapon_hit_bonus (struct obj *);
|
|
extern int weapon_dam_bonus (struct obj *);
|
|
extern void skill_init (const struct def_skill *);
|
|
|
|
|
|
|
|
extern void were_change (struct monst *);
|
|
extern int counter_were (int);
|
|
extern int were_beastie (int);
|
|
extern void new_were (struct monst *);
|
|
extern int were_summon (struct permonst *,int,int *,char *);
|
|
extern void you_were(void);
|
|
extern void you_unwere (int);
|
|
|
|
|
|
|
|
extern void setuwep (struct obj *);
|
|
extern void setuqwep (struct obj *);
|
|
extern void setuswapwep (struct obj *);
|
|
extern int dowield(void);
|
|
extern int doswapweapon(void);
|
|
extern int dowieldquiver(void);
|
|
extern boolean wield_tool (struct obj *,const char *);
|
|
extern int can_twoweapon(void);
|
|
extern void drop_uswapwep(void);
|
|
extern int dotwoweapon(void);
|
|
extern void uwepgone(void);
|
|
extern void uswapwepgone(void);
|
|
extern void uqwepgone(void);
|
|
extern void untwoweapon(void);
|
|
extern int chwepon (struct obj *,int);
|
|
extern int welded (struct obj *);
|
|
extern void weldmsg (struct obj *);
|
|
extern void setmnotwielded (struct monst *,struct obj *);
|
|
extern boolean mwelded (struct obj *);
|
|
|
|
|
|
|
|
extern void choose_windows (const char *);
|
|
|
|
|
|
|
|
|
|
extern boolean genl_can_suspend_no(void);
|
|
extern boolean genl_can_suspend_yes(void);
|
|
extern char genl_message_menu (int,int,const char *);
|
|
extern void genl_preference_update (const char *);
|
|
extern char *genl_getmsghistory (int);
|
|
extern void genl_putmsghistory (const char *,int);
|
|
|
|
extern void nhwindows_hangup(void);
|
|
|
|
|
|
|
|
|
|
extern void amulet(void);
|
|
extern int mon_has_amulet (struct monst *);
|
|
extern int mon_has_special (struct monst *);
|
|
extern int tactics (struct monst *);
|
|
extern void aggravate(void);
|
|
extern void clonewiz(void);
|
|
extern int pick_nasty(void);
|
|
extern int nasty (struct monst*);
|
|
extern void resurrect(void);
|
|
extern void intervene(void);
|
|
extern void wizdead(void);
|
|
extern void cuss (struct monst *);
|
|
|
|
|
|
|
|
extern int get_wormno(void);
|
|
extern void initworm (struct monst *,int);
|
|
extern void worm_move (struct monst *);
|
|
extern void worm_nomove (struct monst *);
|
|
extern void wormgone (struct monst *);
|
|
extern void wormhitu (struct monst *);
|
|
extern void cutworm (struct monst *,int,int,struct obj *);
|
|
extern void see_wsegs (struct monst *);
|
|
extern void detect_wsegs (struct monst *,int);
|
|
extern void save_worm (int,int);
|
|
extern void rest_worm (int);
|
|
extern void place_wsegs (struct monst *);
|
|
extern void remove_worm (struct monst *);
|
|
extern void place_worm_tail_randomly (struct monst *,int,int);
|
|
extern int count_wsegs (struct monst *);
|
|
extern boolean worm_known (struct monst *);
|
|
extern boolean worm_cross (int,int,int,int);
|
|
|
|
|
|
|
|
extern void setworn (struct obj *,long);
|
|
extern void setnotworn (struct obj *);
|
|
extern long wearslot (struct obj *);
|
|
extern void mon_set_minvis (struct monst *);
|
|
extern void mon_adjust_speed (struct monst *,int,struct obj *);
|
|
extern void update_mon_intrinsics (struct monst *,struct obj *,int,int);
|
|
|
|
extern int find_mac (struct monst *);
|
|
extern void m_dowear (struct monst *,int);
|
|
extern struct obj *which_armor (struct monst *,long);
|
|
extern void mon_break_armor (struct monst *,int);
|
|
extern void bypass_obj (struct obj *);
|
|
extern void clear_bypasses(void);
|
|
extern void bypass_objlist (struct obj *,int);
|
|
extern struct obj *nxt_unbypassed_obj (struct obj *);
|
|
extern int racial_exception (struct monst *, struct obj *);
|
|
|
|
|
|
|
|
extern int dowrite (struct obj *);
|
|
|
|
|
|
|
|
extern void learnwand (struct obj *);
|
|
extern int bhitm (struct monst *,struct obj *);
|
|
extern void probe_monster (struct monst *);
|
|
extern boolean get_obj_location (struct obj *,xchar *,xchar *,int);
|
|
extern boolean get_mon_location (struct monst *,xchar *,xchar *,int);
|
|
extern struct monst *get_container_location (struct obj *obj, int *, int *);
|
|
extern struct monst *montraits (struct obj *,coord *);
|
|
extern struct monst *revive (struct obj *,int);
|
|
extern int unturn_dead (struct monst *);
|
|
extern void cancel_item (struct obj *);
|
|
extern boolean drain_item (struct obj *);
|
|
extern struct obj *poly_obj (struct obj *, int);
|
|
extern boolean obj_resists (struct obj *,int,int);
|
|
extern boolean obj_shudders (struct obj *);
|
|
extern void do_osshock (struct obj *);
|
|
extern int bhito (struct obj *,struct obj *);
|
|
extern int bhitpile (struct obj *,int (*)(struct obj *,struct obj *),int,int,int);
|
|
extern int zappable (struct obj *);
|
|
extern void zapnodir (struct obj *);
|
|
extern int dozap(void);
|
|
extern int zapyourself (struct obj *,int);
|
|
extern void ubreatheu (struct attack *);
|
|
extern int lightdamage (struct obj *,int,int);
|
|
extern boolean flashburn (long);
|
|
extern boolean cancel_monst (struct monst *,struct obj *, int,int,int);
|
|
|
|
extern void zapsetup(void);
|
|
extern void zapwrapup(void);
|
|
extern void weffects (struct obj *);
|
|
extern int spell_damage_bonus (int);
|
|
extern const char *exclam (int force);
|
|
extern void hit (const char *,struct monst *,const char *);
|
|
extern void miss (const char *,struct monst *);
|
|
extern struct monst *bhit (int,int,int,int,int (*)(struct monst *,struct obj *), int (*)(struct obj *,struct obj *),struct obj **);
|
|
|
|
extern struct monst *boomhit (struct obj *,int,int);
|
|
extern int zhitm (struct monst *,int,int,struct obj **);
|
|
extern int burn_floor_objects (int,int,int,int);
|
|
extern void buzz (int,int,int,int,int,int);
|
|
extern void melt_ice (int,int,const char *);
|
|
extern void start_melt_ice_timeout (int,int,long);
|
|
extern void melt_ice_away (union any *, long);
|
|
extern int zap_over_floor (int,int,int,boolean *,int);
|
|
extern void fracture_rock (struct obj *);
|
|
extern boolean break_statue (struct obj *);
|
|
extern void destroy_item (int,int);
|
|
extern int destroy_mitem (struct monst *,int,int);
|
|
extern int resist (struct monst *,int,int,int);
|
|
extern void makewish(void);
|
|
# 178 "../include/hack.h" 2
|
|
# 1 "../include/winprocs.h" 1
|
|
# 9 "../include/winprocs.h"
|
|
# 1 "../include/botl.h" 1
|
|
# 62 "../include/botl.h"
|
|
extern const char *status_fieldnames[];
|
|
# 10 "../include/winprocs.h" 2
|
|
|
|
|
|
struct window_procs {
|
|
const char *name;
|
|
|
|
|
|
unsigned long wincap;
|
|
unsigned long wincap2;
|
|
void (*win_init_nhwindows) (int *, char **);
|
|
void (*win_player_selection)(void);
|
|
void (*win_askname)(void);
|
|
void (*win_get_nh_event)(void) ;
|
|
void (*win_exit_nhwindows) (const char *);
|
|
void (*win_suspend_nhwindows) (const char *);
|
|
void (*win_resume_nhwindows)(void);
|
|
winid (*win_create_nhwindow) (int);
|
|
void (*win_clear_nhwindow) (winid);
|
|
void (*win_display_nhwindow) (winid, int);
|
|
void (*win_destroy_nhwindow) (winid);
|
|
void (*win_curs) (winid,int,int);
|
|
void (*win_putstr) (winid, int, const char *);
|
|
void (*win_putmixed) (winid, int, const char *);
|
|
void (*win_display_file) (const char *, int);
|
|
void (*win_start_menu) (winid);
|
|
void (*win_add_menu) (winid,int,const union any *, int,int,int,const char *, int);
|
|
|
|
void (*win_end_menu) (winid, const char *);
|
|
int (*win_select_menu) (winid, int, struct mi **);
|
|
char (*win_message_menu) (int,int,const char *);
|
|
void (*win_update_inventory)(void);
|
|
void (*win_mark_synch)(void);
|
|
void (*win_wait_synch)(void);
|
|
|
|
void (*win_cliparound) (int, int);
|
|
|
|
|
|
|
|
|
|
void (*win_print_glyph) (winid,int,int,int);
|
|
void (*win_raw_print) (const char *);
|
|
void (*win_raw_print_bold) (const char *);
|
|
int (*win_nhgetch)(void);
|
|
int (*win_nh_poskey) (int *, int *, int *);
|
|
void (*win_nhbell)(void);
|
|
int (*win_doprev_message)(void);
|
|
char (*win_yn_function) (const char *, const char *, int);
|
|
void (*win_getlin) (const char *,char *);
|
|
int (*win_get_ext_cmd)(void);
|
|
void (*win_number_pad) (int);
|
|
void (*win_delay_output)(void);
|
|
# 70 "../include/winprocs.h"
|
|
void (*win_start_screen)(void);
|
|
void (*win_end_screen)(void);
|
|
|
|
void (*win_outrip) (winid,int,time_t);
|
|
void (*win_preference_update) (const char *);
|
|
char * (*win_getmsghistory) (int);
|
|
void (*win_putmsghistory) (const char *,int);
|
|
|
|
void (*win_status_init)(void);
|
|
void (*win_status_finish)(void);
|
|
void (*win_status_enablefield) (int,const char *,const char *,int);
|
|
void (*win_status_update) (int,genericptr_t,int,int);
|
|
|
|
void (*win_status_threshold) (int,int,anything,int,int,int);
|
|
|
|
|
|
boolean (*win_can_suspend)(void);
|
|
};
|
|
|
|
extern
|
|
|
|
volatile
|
|
|
|
struct window_procs windowprocs;
|
|
# 258 "../include/winprocs.h"
|
|
struct wc_Opt {
|
|
const char *wc_name;
|
|
unsigned long wc_bit;
|
|
};
|
|
# 179 "../include/hack.h" 2
|
|
# 1 "../include/sys.h" 1
|
|
# 9 "../include/sys.h"
|
|
struct sysopt {
|
|
char *support;
|
|
char *recover;
|
|
char *wizards;
|
|
char *explorers;
|
|
char *shellers;
|
|
char *debugfiles;
|
|
int env_dbgfl;
|
|
|
|
|
|
|
|
|
|
int maxplayers;
|
|
|
|
int persmax;
|
|
int pers_is_uid;
|
|
int entrymax;
|
|
int pointsmin;
|
|
int tt_oname_maxrank;
|
|
|
|
|
|
char *gdbpath;
|
|
char *greppath;
|
|
int panictrace_gdb;
|
|
|
|
int panictrace_libc;
|
|
|
|
|
|
int seduce;
|
|
int check_save_uid;
|
|
};
|
|
|
|
extern struct sysopt sysopt;
|
|
# 180 "../include/hack.h" 2
|
|
# 15 "lev_main.c" 2
|
|
# 1 "../include/date.h" 1
|
|
# 16 "lev_main.c" 2
|
|
# 1 "../include/sp_lev.h" 1
|
|
# 57 "../include/sp_lev.h"
|
|
enum opcode_defs {
|
|
SPO_NULL = 0,
|
|
SPO_MESSAGE,
|
|
SPO_MONSTER,
|
|
SPO_OBJECT,
|
|
SPO_ENGRAVING,
|
|
SPO_ROOM,
|
|
SPO_SUBROOM,
|
|
SPO_DOOR,
|
|
SPO_STAIR,
|
|
SPO_LADDER,
|
|
SPO_ALTAR,
|
|
SPO_FOUNTAIN,
|
|
SPO_SINK,
|
|
SPO_POOL,
|
|
SPO_TRAP,
|
|
SPO_GOLD,
|
|
SPO_CORRIDOR,
|
|
SPO_LEVREGION,
|
|
SPO_DRAWBRIDGE,
|
|
SPO_MAZEWALK,
|
|
SPO_NON_DIGGABLE,
|
|
SPO_NON_PASSWALL,
|
|
SPO_WALLIFY,
|
|
SPO_MAP,
|
|
SPO_ROOM_DOOR,
|
|
SPO_REGION,
|
|
SPO_MINERALIZE,
|
|
SPO_CMP,
|
|
SPO_JMP,
|
|
SPO_JL,
|
|
SPO_JLE,
|
|
SPO_JG,
|
|
SPO_JGE,
|
|
SPO_JE,
|
|
SPO_JNE,
|
|
SPO_TERRAIN,
|
|
SPO_REPLACETERRAIN,
|
|
SPO_EXIT,
|
|
SPO_ENDROOM,
|
|
SPO_POP_CONTAINER,
|
|
SPO_PUSH,
|
|
SPO_POP,
|
|
SPO_RN2,
|
|
SPO_DEC,
|
|
SPO_INC,
|
|
SPO_MATH_ADD,
|
|
SPO_MATH_SUB,
|
|
SPO_MATH_MUL,
|
|
SPO_MATH_DIV,
|
|
SPO_MATH_MOD,
|
|
SPO_MATH_SIGN,
|
|
SPO_COPY,
|
|
SPO_END_MONINVENT,
|
|
SPO_GRAVE,
|
|
SPO_FRAME_PUSH,
|
|
SPO_FRAME_POP,
|
|
SPO_CALL,
|
|
SPO_RETURN,
|
|
SPO_INITLEVEL,
|
|
SPO_LEVEL_FLAGS,
|
|
SPO_VAR_INIT,
|
|
SPO_SHUFFLE_ARRAY,
|
|
SPO_DICE,
|
|
|
|
SPO_SEL_ADD,
|
|
SPO_SEL_POINT,
|
|
SPO_SEL_RECT,
|
|
SPO_SEL_FILLRECT,
|
|
SPO_SEL_LINE,
|
|
SPO_SEL_RNDLINE,
|
|
SPO_SEL_GROW,
|
|
SPO_SEL_FLOOD,
|
|
SPO_SEL_RNDCOORD,
|
|
SPO_SEL_ELLIPSE,
|
|
SPO_SEL_FILTER,
|
|
SPO_SEL_GRADIENT,
|
|
SPO_SEL_COMPLEMENT,
|
|
|
|
MAX_SP_OPCODES
|
|
};
|
|
# 246 "../include/sp_lev.h"
|
|
struct opvar {
|
|
xchar spovartyp;
|
|
union {
|
|
char *str;
|
|
long l;
|
|
} vardata;
|
|
};
|
|
|
|
struct splev_var {
|
|
struct splev_var *next;
|
|
char *name;
|
|
xchar svtyp;
|
|
union {
|
|
struct opvar *value;
|
|
struct opvar **arrayvalues;
|
|
} data;
|
|
long array_len;
|
|
};
|
|
|
|
struct splevstack {
|
|
long depth;
|
|
long depth_alloc;
|
|
struct opvar **stackdata;
|
|
};
|
|
|
|
|
|
struct sp_frame {
|
|
struct sp_frame *next;
|
|
struct splevstack *stack;
|
|
struct splev_var *variables;
|
|
long n_opcode;
|
|
};
|
|
|
|
|
|
struct sp_coder {
|
|
struct splevstack *stack;
|
|
struct sp_frame *frame;
|
|
int premapped;
|
|
boolean solidify;
|
|
struct mkroom *croom;
|
|
struct mkroom *tmproomlist[5 +1];
|
|
boolean failed_room[5 +1];
|
|
int n_subroom;
|
|
boolean exit_script;
|
|
int lvl_is_joined;
|
|
|
|
int opcode;
|
|
struct opvar *opdat;
|
|
};
|
|
# 307 "../include/sp_lev.h"
|
|
typedef struct {
|
|
xchar is_random;
|
|
long getloc_flags;
|
|
int x, y;
|
|
} unpacked_coord;
|
|
|
|
typedef struct {
|
|
int cmp_what;
|
|
int cmp_val;
|
|
} opcmp;
|
|
|
|
typedef struct {
|
|
long jmp_target;
|
|
} opjmp;
|
|
|
|
|
|
typedef union str_or_len {
|
|
char *str;
|
|
int len;
|
|
} Str_or_Len;
|
|
|
|
typedef struct {
|
|
xchar init_style;
|
|
long flags;
|
|
schar filling;
|
|
boolean init_present, padding;
|
|
char fg, bg;
|
|
boolean smoothed, joined;
|
|
xchar lit, walled;
|
|
boolean icedpools;
|
|
} lev_init;
|
|
|
|
typedef struct {
|
|
xchar wall, pos, secret, mask;
|
|
} room_door;
|
|
|
|
typedef struct {
|
|
long coord;
|
|
xchar x, y, type;
|
|
} trap;
|
|
|
|
typedef struct {
|
|
Str_or_Len name, appear_as;
|
|
short id;
|
|
aligntyp align;
|
|
long coord;
|
|
xchar x, y, class, appear;
|
|
schar peaceful, asleep;
|
|
short female, invis, cancelled, revived, avenge, fleeing, blinded, paralyzed, stunned, confused;
|
|
long seentraps;
|
|
short has_invent;
|
|
} monster;
|
|
|
|
typedef struct {
|
|
Str_or_Len name;
|
|
int corpsenm;
|
|
short id, spe;
|
|
long coord;
|
|
xchar x, y, class, containment;
|
|
schar curse_state;
|
|
int quan;
|
|
short buried;
|
|
short lit;
|
|
short eroded, locked, trapped, recharged, invis, greased, broken;
|
|
} object;
|
|
|
|
typedef struct {
|
|
long coord;
|
|
xchar x, y;
|
|
aligntyp align;
|
|
xchar shrine;
|
|
} altar;
|
|
|
|
typedef struct {
|
|
xchar x1, y1, x2, y2;
|
|
xchar rtype, rlit, rirreg;
|
|
} region;
|
|
|
|
typedef struct {
|
|
xchar ter, tlit;
|
|
} terrain;
|
|
|
|
typedef struct {
|
|
xchar chance;
|
|
xchar x1,y1,x2,y2;
|
|
xchar fromter, toter, tolit;
|
|
} replaceterrain;
|
|
|
|
|
|
typedef struct {
|
|
struct { xchar x1, y1, x2, y2; } inarea;
|
|
struct { xchar x1, y1, x2, y2; } delarea;
|
|
boolean in_islev, del_islev;
|
|
xchar rtype, padding;
|
|
Str_or_Len rname;
|
|
} lev_region;
|
|
|
|
typedef struct {
|
|
struct {
|
|
xchar room;
|
|
xchar wall;
|
|
xchar door;
|
|
} src, dest;
|
|
} corridor;
|
|
|
|
typedef struct _room {
|
|
Str_or_Len name;
|
|
Str_or_Len parent;
|
|
xchar x, y, w, h;
|
|
xchar xalign, yalign;
|
|
xchar rtype, chance, rlit, filled, joined;
|
|
} room;
|
|
|
|
typedef struct {
|
|
schar zaligntyp;
|
|
schar keep_region;
|
|
schar halign, valign;
|
|
char xsize, ysize;
|
|
char **map;
|
|
} mazepart;
|
|
|
|
typedef struct {
|
|
int opcode;
|
|
struct opvar *opdat;
|
|
} _opcode;
|
|
|
|
typedef struct {
|
|
_opcode *opcodes;
|
|
long n_opcodes;
|
|
} sp_lev;
|
|
|
|
typedef struct {
|
|
xchar x, y, direction, count, lit;
|
|
char typ;
|
|
} spill;
|
|
|
|
|
|
|
|
struct lc_funcdefs_parm {
|
|
char *name;
|
|
char parmtype;
|
|
struct lc_funcdefs_parm *next;
|
|
};
|
|
|
|
struct lc_funcdefs {
|
|
struct lc_funcdefs *next;
|
|
char *name;
|
|
long addr;
|
|
sp_lev code;
|
|
long n_called;
|
|
struct lc_funcdefs_parm *params;
|
|
long n_params;
|
|
};
|
|
|
|
struct lc_vardefs {
|
|
struct lc_vardefs *next;
|
|
char *name;
|
|
long var_type;
|
|
long n_used;
|
|
};
|
|
|
|
struct lc_breakdef {
|
|
struct lc_breakdef *next;
|
|
struct opvar *breakpoint;
|
|
int break_depth;
|
|
};
|
|
# 17 "lev_main.c" 2
|
|
|
|
|
|
|
|
# 1 "/usr/include/ctype.h" 1 3 4
|
|
# 69 "/usr/include/ctype.h" 3 4
|
|
# 1 "/usr/include/runetype.h" 1 3 4
|
|
# 70 "/usr/include/runetype.h" 3 4
|
|
typedef __darwin_wint_t wint_t;
|
|
# 81 "/usr/include/runetype.h" 3 4
|
|
typedef struct {
|
|
__darwin_rune_t __min;
|
|
__darwin_rune_t __max;
|
|
__darwin_rune_t __map;
|
|
__uint32_t *__types;
|
|
} _RuneEntry;
|
|
|
|
typedef struct {
|
|
int __nranges;
|
|
_RuneEntry *__ranges;
|
|
} _RuneRange;
|
|
|
|
typedef struct {
|
|
char __name[14];
|
|
__uint32_t __mask;
|
|
} _RuneCharClass;
|
|
|
|
typedef struct {
|
|
char __magic[8];
|
|
char __encoding[32];
|
|
|
|
__darwin_rune_t (*__sgetrune)(const char *, __darwin_size_t, char const **);
|
|
int (*__sputrune)(__darwin_rune_t, char *, __darwin_size_t, char **);
|
|
__darwin_rune_t __invalid_rune;
|
|
|
|
__uint32_t __runetype[(1 <<8 )];
|
|
__darwin_rune_t __maplower[(1 <<8 )];
|
|
__darwin_rune_t __mapupper[(1 <<8 )];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_RuneRange __runetype_ext;
|
|
_RuneRange __maplower_ext;
|
|
_RuneRange __mapupper_ext;
|
|
|
|
void *__variable;
|
|
int __variable_len;
|
|
|
|
|
|
|
|
|
|
int __ncharclasses;
|
|
_RuneCharClass *__charclasses;
|
|
} _RuneLocale;
|
|
|
|
|
|
|
|
|
|
extern _RuneLocale _DefaultRuneLocale;
|
|
extern _RuneLocale *_CurrentRuneLocale;
|
|
|
|
# 70 "/usr/include/ctype.h" 2 3 4
|
|
# 145 "/usr/include/ctype.h" 3 4
|
|
|
|
unsigned long ___runetype(__darwin_ct_rune_t);
|
|
__darwin_ct_rune_t ___tolower(__darwin_ct_rune_t);
|
|
__darwin_ct_rune_t ___toupper(__darwin_ct_rune_t);
|
|
|
|
|
|
static __inline int
|
|
isascii(int _c)
|
|
{
|
|
return ((_c & ~0x7F) == 0);
|
|
}
|
|
# 164 "/usr/include/ctype.h" 3 4
|
|
|
|
int __maskrune(__darwin_ct_rune_t, unsigned long);
|
|
|
|
|
|
|
|
static __inline int
|
|
__istype(__darwin_ct_rune_t _c, unsigned long _f)
|
|
{
|
|
|
|
|
|
|
|
return (isascii(_c) ? !!(_DefaultRuneLocale.__runetype[_c] & _f)
|
|
: !!__maskrune(_c, _f));
|
|
|
|
}
|
|
|
|
static __inline __darwin_ct_rune_t
|
|
__isctype(__darwin_ct_rune_t _c, unsigned long _f)
|
|
{
|
|
|
|
|
|
|
|
return (_c < 0 || _c >= (1 <<8 )) ? 0 :
|
|
!!(_DefaultRuneLocale.__runetype[_c] & _f);
|
|
|
|
}
|
|
# 204 "/usr/include/ctype.h" 3 4
|
|
|
|
__darwin_ct_rune_t __toupper(__darwin_ct_rune_t);
|
|
__darwin_ct_rune_t __tolower(__darwin_ct_rune_t);
|
|
|
|
|
|
|
|
static __inline int
|
|
__wcwidth(__darwin_ct_rune_t _c)
|
|
{
|
|
unsigned int _x;
|
|
|
|
if (_c == 0)
|
|
return (0);
|
|
_x = (unsigned int)__maskrune(_c, 0xe0000000L|0x00040000L);
|
|
if ((_x & 0xe0000000L) != 0)
|
|
return ((_x & 0xe0000000L) >> 30);
|
|
return ((_x & 0x00040000L) != 0 ? 1 : -1);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static __inline int
|
|
isalnum(int _c)
|
|
{
|
|
return (__istype(_c, 0x00000100L|0x00000400L));
|
|
}
|
|
|
|
static __inline int
|
|
isalpha(int _c)
|
|
{
|
|
return (__istype(_c, 0x00000100L));
|
|
}
|
|
|
|
static __inline int
|
|
isblank(int _c)
|
|
{
|
|
return (__istype(_c, 0x00020000L));
|
|
}
|
|
|
|
static __inline int
|
|
iscntrl(int _c)
|
|
{
|
|
return (__istype(_c, 0x00000200L));
|
|
}
|
|
|
|
|
|
static __inline int
|
|
isdigit(int _c)
|
|
{
|
|
return (__isctype(_c, 0x00000400L));
|
|
}
|
|
|
|
static __inline int
|
|
isgraph(int _c)
|
|
{
|
|
return (__istype(_c, 0x00000800L));
|
|
}
|
|
|
|
static __inline int
|
|
islower(int _c)
|
|
{
|
|
return (__istype(_c, 0x00001000L));
|
|
}
|
|
|
|
static __inline int
|
|
isprint(int _c)
|
|
{
|
|
return (__istype(_c, 0x00040000L));
|
|
}
|
|
|
|
static __inline int
|
|
ispunct(int _c)
|
|
{
|
|
return (__istype(_c, 0x00002000L));
|
|
}
|
|
|
|
static __inline int
|
|
isspace(int _c)
|
|
{
|
|
return (__istype(_c, 0x00004000L));
|
|
}
|
|
|
|
static __inline int
|
|
isupper(int _c)
|
|
{
|
|
return (__istype(_c, 0x00008000L));
|
|
}
|
|
|
|
|
|
static __inline int
|
|
isxdigit(int _c)
|
|
{
|
|
return (__isctype(_c, 0x00010000L));
|
|
}
|
|
|
|
static __inline int
|
|
toascii(int _c)
|
|
{
|
|
return (_c & 0x7F);
|
|
}
|
|
|
|
static __inline int
|
|
tolower(int _c)
|
|
{
|
|
return (__tolower(_c));
|
|
}
|
|
|
|
static __inline int
|
|
toupper(int _c)
|
|
{
|
|
return (__toupper(_c));
|
|
}
|
|
|
|
|
|
static __inline int
|
|
digittoint(int _c)
|
|
{
|
|
return (__maskrune(_c, 0x0F));
|
|
}
|
|
|
|
static __inline int
|
|
ishexnumber(int _c)
|
|
{
|
|
return (__istype(_c, 0x00010000L));
|
|
}
|
|
|
|
static __inline int
|
|
isideogram(int _c)
|
|
{
|
|
return (__istype(_c, 0x00080000L));
|
|
}
|
|
|
|
static __inline int
|
|
isnumber(int _c)
|
|
{
|
|
return (__istype(_c, 0x00000400L));
|
|
}
|
|
|
|
static __inline int
|
|
isphonogram(int _c)
|
|
{
|
|
return (__istype(_c, 0x00200000L));
|
|
}
|
|
|
|
static __inline int
|
|
isrune(int _c)
|
|
{
|
|
return (__istype(_c, 0xFFFFFFF0L));
|
|
}
|
|
|
|
static __inline int
|
|
isspecial(int _c)
|
|
{
|
|
return (__istype(_c, 0x00100000L));
|
|
}
|
|
# 21 "lev_main.c" 2
|
|
# 47 "lev_main.c"
|
|
# 1 "/usr/include/fcntl.h" 1 3 4
|
|
# 23 "/usr/include/fcntl.h" 3 4
|
|
# 1 "/usr/include/sys/fcntl.h" 1 3 4
|
|
# 305 "/usr/include/sys/fcntl.h" 3 4
|
|
struct flock {
|
|
off_t l_start;
|
|
off_t l_len;
|
|
pid_t l_pid;
|
|
short l_type;
|
|
short l_whence;
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct radvisory {
|
|
off_t ra_offset;
|
|
int ra_count;
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct fsignatures {
|
|
off_t fs_file_start;
|
|
void *fs_blob_start;
|
|
size_t fs_blob_size;
|
|
} fsignatures_t;
|
|
# 343 "/usr/include/sys/fcntl.h" 3 4
|
|
typedef struct fstore {
|
|
unsigned int fst_flags;
|
|
int fst_posmode;
|
|
off_t fst_offset;
|
|
off_t fst_length;
|
|
off_t fst_bytesalloc;
|
|
} fstore_t;
|
|
|
|
|
|
|
|
typedef struct fbootstraptransfer {
|
|
off_t fbt_offset;
|
|
size_t fbt_length;
|
|
void *fbt_buffer;
|
|
} fbootstraptransfer_t;
|
|
# 377 "/usr/include/sys/fcntl.h" 3 4
|
|
#pragma pack(4)
|
|
|
|
struct log2phys {
|
|
unsigned int l2p_flags;
|
|
off_t l2p_contigbytes;
|
|
off_t l2p_devoffset;
|
|
};
|
|
|
|
#pragma pack()
|
|
# 396 "/usr/include/sys/fcntl.h" 3 4
|
|
struct _filesec;
|
|
typedef struct _filesec *filesec_t;
|
|
|
|
|
|
typedef enum {
|
|
FILESEC_OWNER = 1,
|
|
FILESEC_GROUP = 2,
|
|
FILESEC_UUID = 3,
|
|
FILESEC_MODE = 4,
|
|
FILESEC_ACL = 5,
|
|
FILESEC_GRPUUID = 6,
|
|
|
|
|
|
FILESEC_ACL_RAW = 100,
|
|
FILESEC_ACL_ALLOCSIZE = 101
|
|
} filesec_property_t;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int open(const char *, int, ...) __asm("_" "open" "$UNIX2003");
|
|
int creat(const char *, mode_t) __asm("_" "creat" "$UNIX2003");
|
|
int fcntl(int, int, ...) __asm("_" "fcntl" "$UNIX2003");
|
|
|
|
int openx_np(const char *, int, filesec_t);
|
|
int flock(int, int);
|
|
filesec_t filesec_init(void);
|
|
filesec_t filesec_dup(filesec_t);
|
|
void filesec_free(filesec_t);
|
|
int filesec_get_property(filesec_t, filesec_property_t, void *);
|
|
int filesec_set_property(filesec_t, filesec_property_t, const void *);
|
|
int filesec_query_property(filesec_t, filesec_property_t, int *);
|
|
|
|
|
|
|
|
|
|
# 23 "/usr/include/fcntl.h" 2 3 4
|
|
# 48 "lev_main.c" 2
|
|
# 82 "lev_main.c"
|
|
extern int yyparse(void);
|
|
extern void init_yyin (FILE *);
|
|
extern void init_yyout (FILE *);
|
|
|
|
int main (int, char **);
|
|
void yyerror (const char *);
|
|
void yywarning (const char *);
|
|
int yywrap(void);
|
|
int get_floor_type (int);
|
|
int get_room_type (char *);
|
|
int get_trap_type (char *);
|
|
int get_monster_id (char *, int);
|
|
int get_object_id (char *, int);
|
|
boolean check_monster_char (int);
|
|
boolean check_object_char (int);
|
|
char what_map_char (int);
|
|
void scan_map (char *, sp_lev *);
|
|
boolean check_subrooms(void);
|
|
boolean write_level_file (char *, sp_lev *);
|
|
|
|
struct lc_funcdefs *funcdef_new (long, char *);
|
|
void funcdef_free_all (struct lc_funcdefs *);
|
|
struct lc_funcdefs *funcdef_defined (struct lc_funcdefs *, char *, int);
|
|
|
|
|
|
struct lc_vardefs *vardef_new (long, char *);
|
|
void vardef_free_all (struct lc_vardefs *);
|
|
struct lc_vardefs *vardef_defined (struct lc_vardefs *, char *, int);
|
|
|
|
void splev_add_from (sp_lev *, sp_lev *);
|
|
|
|
extern void monst_init(void);
|
|
extern void objects_init(void);
|
|
extern void decl_init(void);
|
|
|
|
void add_opcode (sp_lev *, int, genericptr_t);
|
|
|
|
static boolean write_common_data (int);
|
|
static boolean write_maze (int, sp_lev *);
|
|
static void init_obj_classes(void);
|
|
static int case_insensitive_comp (const char *, const char *);
|
|
|
|
void lc_pline (const char *, ...);
|
|
void lc_error (const char *, ...);
|
|
void lc_warning (const char *, ...);
|
|
char *decode_parm_chr (int);
|
|
char *decode_parm_str (char *);
|
|
struct opvar *set_opvar_int (struct opvar *, long);
|
|
struct opvar *set_opvar_coord (struct opvar *, long);
|
|
struct opvar *set_opvar_region (struct opvar *, long);
|
|
struct opvar *set_opvar_mapchar (struct opvar *, long);
|
|
struct opvar *set_opvar_monst (struct opvar *, long);
|
|
struct opvar *set_opvar_obj (struct opvar *, long);
|
|
struct opvar *set_opvar_str (struct opvar *, const char *);
|
|
struct opvar *set_opvar_var (struct opvar *, const char *);
|
|
void add_opvars (sp_lev *, const char *, ...);
|
|
void break_stmt_start(void);
|
|
void break_stmt_end (sp_lev *);
|
|
void break_stmt_new (sp_lev *, long);
|
|
char *funcdef_paramtypes (struct lc_funcdefs *);
|
|
const char *spovar2str (long);
|
|
void vardef_used (struct lc_vardefs *, char *);
|
|
void check_vardef_type (struct lc_vardefs *, char *, long);
|
|
struct lc_vardefs *add_vardef_type (struct lc_vardefs *, char *, long);
|
|
|
|
int reverse_jmp_opcode (int);
|
|
struct opvar *opvar_clone (struct opvar *);
|
|
void start_level_def (sp_lev **, char *);
|
|
|
|
static struct {
|
|
const char *name;
|
|
int type;
|
|
} trap_types[] = { { "arrow", 1 },
|
|
{ "dart", 2 },
|
|
{ "falling rock", 3 },
|
|
{ "board", 4 },
|
|
{ "bear", 5 },
|
|
{ "land mine", 6 },
|
|
{ "rolling boulder", 7 },
|
|
{ "sleep gas", 8 },
|
|
{ "rust", 9 },
|
|
{ "fire", 10 },
|
|
{ "pit", 11 },
|
|
{ "spiked pit", 12 },
|
|
{ "hole", 13 },
|
|
{ "trap door", 14 },
|
|
{ "teleport", 15 },
|
|
{ "level teleport", 16 },
|
|
{ "magic portal", 17 },
|
|
{ "web", 18 },
|
|
{ "statue", 19 },
|
|
{ "magic", 20 },
|
|
{ "anti magic", 21 },
|
|
{ "polymorph", 22 },
|
|
{ 0, 0 } };
|
|
|
|
static struct {
|
|
const char *name;
|
|
int type;
|
|
} room_types[] = {
|
|
|
|
|
|
{ "ordinary", 0 },
|
|
{ "throne", 2 },
|
|
{ "swamp", 3 },
|
|
{ "vault", 4 },
|
|
{ "beehive", 5 },
|
|
{ "morgue", 6 },
|
|
{ "barracks", 7 },
|
|
{ "zoo", 8 },
|
|
{ "delphi", 9 },
|
|
{ "temple", 10 },
|
|
{ "anthole", 13 },
|
|
{ "cocknest", 12 },
|
|
{ "leprehall", 11 },
|
|
{ "shop", 14 },
|
|
{ "armor shop", 15 },
|
|
{ "scroll shop", 16 },
|
|
{ "potion shop", 17 },
|
|
{ "weapon shop", 18 },
|
|
{ "food shop", 19 },
|
|
{ "ring shop", 20 },
|
|
{ "wand shop", 21 },
|
|
{ "tool shop", 22 },
|
|
{ "book shop", 23 },
|
|
{ "health food shop", 24 },
|
|
{ "candle shop", 25 },
|
|
{ 0, 0 }
|
|
};
|
|
|
|
const char *fname = "(stdin)";
|
|
int fatal_error = 0;
|
|
int got_errors = 0;
|
|
int be_verbose = 0;
|
|
int fname_counter = 1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern unsigned int max_x_map, max_y_map;
|
|
|
|
extern int nh_line_number;
|
|
|
|
extern int token_start_pos;
|
|
extern char curr_token[512];
|
|
|
|
struct lc_vardefs *variable_definitions = ((void *)0);
|
|
struct lc_funcdefs *function_definitions = ((void *)0);
|
|
|
|
extern int allow_break_statements;
|
|
extern struct lc_breakdef *break_list;
|
|
|
|
int
|
|
main(argc, argv)
|
|
int argc;
|
|
char **argv;
|
|
{
|
|
FILE *fin;
|
|
int i;
|
|
boolean errors_encountered = ((boolean)0);
|
|
# 263 "lev_main.c"
|
|
monst_init();
|
|
objects_init();
|
|
decl_init();
|
|
|
|
init_obj_classes();
|
|
|
|
init_yyout(__stdoutp);
|
|
if (argc == 1) {
|
|
init_yyin(__stdinp);
|
|
(void) yyparse();
|
|
if (fatal_error > 0) {
|
|
errors_encountered = ((boolean)1);
|
|
}
|
|
} else {
|
|
for (i = 1; i < argc; i++) {
|
|
fname = argv[i];
|
|
if (!strcmp(fname, "-v")) {
|
|
be_verbose++;
|
|
continue;
|
|
}
|
|
fin = freopen(fname, "r", __stdinp);
|
|
if (!fin) {
|
|
lc_pline("Can't open \"%s\" for input.\n", fname);
|
|
perror(fname);
|
|
errors_encountered = ((boolean)1);
|
|
} else {
|
|
fname_counter = 1;
|
|
init_yyin(fin);
|
|
(void) yyparse();
|
|
nh_line_number = 1;
|
|
if (fatal_error > 0 || got_errors > 0) {
|
|
errors_encountered = ((boolean)1);
|
|
fatal_error = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
exit(errors_encountered ? 1 : 0);
|
|
|
|
return 0;
|
|
}
|
|
# 313 "lev_main.c"
|
|
void
|
|
yyerror(s)
|
|
const char *s;
|
|
{
|
|
char *e = ((char *) s + strlen(s) - 1);
|
|
|
|
(void) fprintf(__stderrp, "%s: line %d, pos %d: %s", fname, nh_line_number,
|
|
token_start_pos - (int) strlen(curr_token), s);
|
|
if (*e != '.' && *e != '!')
|
|
(void) fprintf(__stderrp, " at \"%s\"", curr_token);
|
|
(void) fprintf(__stderrp, "\n");
|
|
|
|
if (++fatal_error > 25) {
|
|
(void) fprintf(__stderrp, "Too many errors, good bye!\n");
|
|
exit(1);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
yywarning(s)
|
|
const char *s;
|
|
{
|
|
(void) fprintf(__stderrp, "%s: line %d : WARNING : %s\n", fname,
|
|
nh_line_number, s);
|
|
}
|
|
|
|
|
|
|
|
|
|
int
|
|
yywrap()
|
|
{
|
|
return 1;
|
|
}
|
|
# 361 "lev_main.c"
|
|
static int lc_pline_mode = 0;
|
|
|
|
|
|
static void lc_vpline (const char *, va_list);
|
|
|
|
void lc_pline
|
|
(const char * line, ...) { va_list the_args;
|
|
{
|
|
__builtin_va_start(the_args,line);
|
|
;
|
|
lc_vpline(line, the_args);
|
|
__builtin_va_end(the_args); };
|
|
}
|
|
|
|
|
|
static void
|
|
lc_vpline(const char *line, va_list the_args)
|
|
# 392 "lev_main.c"
|
|
{
|
|
|
|
char pbuf[3 * 256];
|
|
static char nomsg[] = "(no message)";
|
|
|
|
|
|
if (!line || !*line)
|
|
line = nomsg;
|
|
if (strchr(line, '%')) {
|
|
(void) vsprintf(pbuf, line, the_args);
|
|
pbuf[256 - 1] = '\0';
|
|
line = pbuf;
|
|
}
|
|
switch (lc_pline_mode) {
|
|
case 2:
|
|
yyerror(line);
|
|
break;
|
|
case 1:
|
|
yywarning(line);
|
|
break;
|
|
default:
|
|
(void) fprintf(__stderrp, "%s\n", line);
|
|
break;
|
|
}
|
|
lc_pline_mode = 0;
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
void lc_error
|
|
(const char * line, ...) { va_list the_args;
|
|
{
|
|
__builtin_va_start(the_args,line);
|
|
;
|
|
lc_pline_mode = 2;
|
|
lc_vpline(line, the_args);
|
|
__builtin_va_end(the_args); };
|
|
return;
|
|
}
|
|
|
|
|
|
void lc_warning
|
|
(const char * line, ...) { va_list the_args;
|
|
{
|
|
__builtin_va_start(the_args,line);
|
|
;
|
|
lc_pline_mode = 1;
|
|
lc_vpline(line, the_args);
|
|
__builtin_va_end(the_args); };
|
|
return;
|
|
}
|
|
|
|
char *
|
|
decode_parm_chr(chr)
|
|
char chr;
|
|
{
|
|
static char buf[32];
|
|
|
|
switch (chr) {
|
|
default:
|
|
(void) strcpy(buf, "unknown");
|
|
break;
|
|
case 'i':
|
|
(void) strcpy(buf, "int");
|
|
break;
|
|
case 'r':
|
|
(void) strcpy(buf, "region");
|
|
break;
|
|
case 's':
|
|
(void) strcpy(buf, "str");
|
|
break;
|
|
case 'O':
|
|
(void) strcpy(buf, "obj");
|
|
break;
|
|
case 'c':
|
|
(void) strcpy(buf, "coord");
|
|
break;
|
|
case ' ':
|
|
(void) strcpy(buf, "nothing");
|
|
break;
|
|
case 'm':
|
|
(void) strcpy(buf, "mapchar");
|
|
break;
|
|
case 'M':
|
|
(void) strcpy(buf, "monster");
|
|
break;
|
|
}
|
|
return buf;
|
|
}
|
|
|
|
char *
|
|
decode_parm_str(str)
|
|
char *str;
|
|
{
|
|
static char tmpbuf[1024];
|
|
char *p = str;
|
|
tmpbuf[0] = '\0';
|
|
if (str) {
|
|
for (; *p; p++) {
|
|
(void) strcat(tmpbuf, decode_parm_chr(*p));
|
|
if (*(p + 1))
|
|
(void) strcat(tmpbuf, ", ");
|
|
}
|
|
}
|
|
return tmpbuf;
|
|
}
|
|
|
|
struct opvar *
|
|
set_opvar_int(ov, val)
|
|
struct opvar *ov;
|
|
long val;
|
|
{
|
|
if (ov) {
|
|
ov->spovartyp = 0x01;
|
|
ov->vardata.l = val;
|
|
}
|
|
return ov;
|
|
}
|
|
|
|
struct opvar *
|
|
set_opvar_coord(ov, val)
|
|
struct opvar *ov;
|
|
long val;
|
|
{
|
|
if (ov) {
|
|
ov->spovartyp = 0x04;
|
|
ov->vardata.l = val;
|
|
}
|
|
return ov;
|
|
}
|
|
|
|
struct opvar *
|
|
set_opvar_region(ov, val)
|
|
struct opvar *ov;
|
|
long val;
|
|
{
|
|
if (ov) {
|
|
ov->spovartyp = 0x05;
|
|
ov->vardata.l = val;
|
|
}
|
|
return ov;
|
|
}
|
|
|
|
struct opvar *
|
|
set_opvar_mapchar(ov, val)
|
|
struct opvar *ov;
|
|
long val;
|
|
{
|
|
if (ov) {
|
|
ov->spovartyp = 0x06;
|
|
ov->vardata.l = val;
|
|
}
|
|
return ov;
|
|
}
|
|
|
|
struct opvar *
|
|
set_opvar_monst(ov, val)
|
|
struct opvar *ov;
|
|
long val;
|
|
{
|
|
if (ov) {
|
|
ov->spovartyp = 0x07;
|
|
ov->vardata.l = val;
|
|
}
|
|
return ov;
|
|
}
|
|
|
|
struct opvar *
|
|
set_opvar_obj(ov, val)
|
|
struct opvar *ov;
|
|
long val;
|
|
{
|
|
if (ov) {
|
|
ov->spovartyp = 0x08;
|
|
ov->vardata.l = val;
|
|
}
|
|
return ov;
|
|
}
|
|
|
|
struct opvar *
|
|
set_opvar_str(ov, val)
|
|
struct opvar *ov;
|
|
const char *val;
|
|
{
|
|
if (ov) {
|
|
ov->spovartyp = 0x02;
|
|
ov->vardata.str = (val) ? strdup(val) : ((void *)0);
|
|
}
|
|
return ov;
|
|
}
|
|
|
|
struct opvar *
|
|
set_opvar_var(ov, val)
|
|
struct opvar *ov;
|
|
const char *val;
|
|
{
|
|
if (ov) {
|
|
ov->spovartyp = 0x03;
|
|
ov->vardata.str = (val) ? strdup(val) : ((void *)0);
|
|
}
|
|
return ov;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static void vadd_opvars (sp_lev *, const char *, va_list);
|
|
|
|
void add_opvars
|
|
(sp_lev * sp, const char * fmt, ...) { va_list the_args;
|
|
__builtin_va_start(the_args,fmt);
|
|
;
|
|
vadd_opvars(sp, fmt, the_args);
|
|
__builtin_va_end(the_args); };
|
|
}
|
|
|
|
|
|
static void
|
|
vadd_opvars(sp_lev *sp, const char *fmt, va_list the_args)
|
|
{
|
|
# 633 "lev_main.c"
|
|
const char *p, *lp;
|
|
long la;
|
|
|
|
|
|
for (p = fmt; *p != '\0'; p++) {
|
|
switch (*p) {
|
|
case ' ':
|
|
break;
|
|
case 'i':
|
|
{
|
|
struct opvar *ov = (struct opvar *) memset((genericptr_t) alloc(sizeof(struct opvar)), 0, sizeof(struct opvar));
|
|
set_opvar_int(ov, la = __builtin_va_arg(the_args,long) );
|
|
add_opcode(sp, SPO_PUSH, ov);
|
|
break;
|
|
}
|
|
case 'c':
|
|
{
|
|
struct opvar *ov = (struct opvar *) memset((genericptr_t) alloc(sizeof(struct opvar)), 0, sizeof(struct opvar));
|
|
set_opvar_coord(ov, la = __builtin_va_arg(the_args,long) );
|
|
add_opcode(sp, SPO_PUSH, ov);
|
|
break;
|
|
}
|
|
case 'r':
|
|
{
|
|
struct opvar *ov = (struct opvar *) memset((genericptr_t) alloc(sizeof(struct opvar)), 0, sizeof(struct opvar));
|
|
set_opvar_region(ov, la = __builtin_va_arg(the_args,long) );
|
|
add_opcode(sp, SPO_PUSH, ov);
|
|
break;
|
|
}
|
|
case 'm':
|
|
{
|
|
struct opvar *ov = (struct opvar *) memset((genericptr_t) alloc(sizeof(struct opvar)), 0, sizeof(struct opvar));
|
|
set_opvar_mapchar(ov, la = __builtin_va_arg(the_args,long) );
|
|
add_opcode(sp, SPO_PUSH, ov);
|
|
break;
|
|
}
|
|
case 'M':
|
|
{
|
|
struct opvar *ov = (struct opvar *) memset((genericptr_t) alloc(sizeof(struct opvar)), 0, sizeof(struct opvar));
|
|
set_opvar_monst(ov, la = __builtin_va_arg(the_args,long) );
|
|
add_opcode(sp, SPO_PUSH, ov);
|
|
break;
|
|
}
|
|
case 'O':
|
|
{
|
|
struct opvar *ov = (struct opvar *) memset((genericptr_t) alloc(sizeof(struct opvar)), 0, sizeof(struct opvar));
|
|
set_opvar_obj(ov, la = __builtin_va_arg(the_args,long) );
|
|
add_opcode(sp, SPO_PUSH, ov);
|
|
break;
|
|
}
|
|
case 's':
|
|
{
|
|
struct opvar *ov = (struct opvar *) memset((genericptr_t) alloc(sizeof(struct opvar)), 0, sizeof(struct opvar));
|
|
set_opvar_str(ov, lp = __builtin_va_arg(the_args,const char *) );
|
|
add_opcode(sp, SPO_PUSH, ov);
|
|
break;
|
|
}
|
|
case 'v':
|
|
{
|
|
struct opvar *ov = (struct opvar *) memset((genericptr_t) alloc(sizeof(struct opvar)), 0, sizeof(struct opvar));
|
|
set_opvar_var(ov, lp = __builtin_va_arg(the_args,const char *) );
|
|
add_opcode(sp, SPO_PUSH, ov);
|
|
break;
|
|
}
|
|
case 'o':
|
|
{
|
|
long i = la = __builtin_va_arg(the_args,int);
|
|
if (i < 0 || i >= MAX_SP_OPCODES)
|
|
lc_pline("add_opvars: unknown opcode '%ld'.", i);
|
|
add_opcode(sp, i, ((void *)0));
|
|
break;
|
|
}
|
|
default:
|
|
lc_pline("add_opvars: illegal format character '%c'.", *p);
|
|
break;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
void
|
|
break_stmt_start()
|
|
{
|
|
allow_break_statements++;
|
|
}
|
|
|
|
void
|
|
break_stmt_end(splev)
|
|
sp_lev *splev;
|
|
{
|
|
struct lc_breakdef *tmp = break_list;
|
|
struct lc_breakdef *prv = ((void *)0);
|
|
while (tmp) {
|
|
if (tmp->break_depth == allow_break_statements) {
|
|
struct lc_breakdef *nxt = tmp->next;
|
|
set_opvar_int(tmp->breakpoint,
|
|
splev->n_opcodes - tmp->breakpoint->vardata.l - 1);
|
|
tmp->next = ((void *)0);
|
|
if (tmp) free((genericptr_t)(tmp));
|
|
if (!prv)
|
|
break_list = ((void *)0);
|
|
else
|
|
prv->next = nxt;
|
|
tmp = nxt;
|
|
} else {
|
|
prv = tmp;
|
|
tmp = tmp->next;
|
|
}
|
|
}
|
|
allow_break_statements--;
|
|
}
|
|
|
|
void
|
|
break_stmt_new(splev, i)
|
|
sp_lev *splev;
|
|
long i;
|
|
{
|
|
struct lc_breakdef *tmp = (struct lc_breakdef *) memset((genericptr_t) alloc(sizeof(struct lc_breakdef)), 0, sizeof(struct lc_breakdef));
|
|
tmp->breakpoint = (struct opvar *) memset((genericptr_t) alloc(sizeof(struct opvar)), 0, sizeof(struct opvar));
|
|
tmp->break_depth = allow_break_statements;
|
|
tmp->next = break_list;
|
|
break_list = tmp;
|
|
set_opvar_int(tmp->breakpoint, i);
|
|
add_opcode(splev, SPO_PUSH, tmp->breakpoint);
|
|
add_opcode(splev, SPO_JMP, ((void *)0));
|
|
}
|
|
|
|
struct lc_funcdefs *
|
|
funcdef_new(addr, name)
|
|
long addr;
|
|
char *name;
|
|
{
|
|
struct lc_funcdefs *f = (struct lc_funcdefs *) memset((genericptr_t) alloc(sizeof(struct lc_funcdefs)), 0, sizeof(struct lc_funcdefs));
|
|
if (!f) {
|
|
lc_error("Could not alloc function definition for '%s'.", name);
|
|
return ((void *)0);
|
|
}
|
|
f->next = ((void *)0);
|
|
f->addr = addr;
|
|
f->name = strdup(name);
|
|
f->n_called = 0;
|
|
f->n_params = 0;
|
|
f->params = ((void *)0);
|
|
f->code.opcodes = ((void *)0);
|
|
f->code.n_opcodes = 0;
|
|
return f;
|
|
}
|
|
|
|
void
|
|
funcdef_free_all(fchain)
|
|
struct lc_funcdefs *fchain;
|
|
{
|
|
struct lc_funcdefs *tmp = fchain;
|
|
struct lc_funcdefs *nxt;
|
|
struct lc_funcdefs_parm *tmpparam;
|
|
while (tmp) {
|
|
nxt = tmp->next;
|
|
if (tmp->name) free((genericptr_t)(tmp->name));
|
|
while (tmp->params) {
|
|
tmpparam = tmp->params->next;
|
|
if (tmp->params->name) free((genericptr_t)(tmp->params->name));
|
|
tmp->params = tmpparam;
|
|
}
|
|
|
|
if (tmp) free((genericptr_t)(tmp));
|
|
tmp = nxt;
|
|
}
|
|
}
|
|
|
|
char *
|
|
funcdef_paramtypes(f)
|
|
struct lc_funcdefs *f;
|
|
{
|
|
int i = 0;
|
|
struct lc_funcdefs_parm *fp = f->params;
|
|
char *tmp = (char *) alloc((f->n_params) + 1);
|
|
if (!tmp)
|
|
return ((void *)0);
|
|
while (fp) {
|
|
tmp[i++] = fp->parmtype;
|
|
fp = fp->next;
|
|
}
|
|
tmp[i] = '\0';
|
|
return tmp;
|
|
}
|
|
|
|
struct lc_funcdefs *
|
|
funcdef_defined(f, name, casesense)
|
|
struct lc_funcdefs *f;
|
|
char *name;
|
|
int casesense;
|
|
{
|
|
while (f) {
|
|
if (casesense) {
|
|
if (!strcmp(name, f->name))
|
|
return f;
|
|
} else {
|
|
if (!case_insensitive_comp(name, f->name))
|
|
return f;
|
|
}
|
|
f = f->next;
|
|
}
|
|
return ((void *)0);
|
|
}
|
|
|
|
struct lc_vardefs *
|
|
vardef_new(typ, name)
|
|
long typ;
|
|
char *name;
|
|
{
|
|
struct lc_vardefs *f = (struct lc_vardefs *) memset((genericptr_t) alloc(sizeof(struct lc_vardefs)), 0, sizeof(struct lc_vardefs));
|
|
if (!f) {
|
|
lc_error("Could not alloc variable definition for '%s'.", name);
|
|
return ((void *)0);
|
|
}
|
|
f->next = ((void *)0);
|
|
f->var_type = typ;
|
|
f->name = strdup(name);
|
|
f->n_used = 0;
|
|
return f;
|
|
}
|
|
|
|
void
|
|
vardef_free_all(fchain)
|
|
struct lc_vardefs *fchain;
|
|
{
|
|
struct lc_vardefs *tmp = fchain;
|
|
struct lc_vardefs *nxt;
|
|
while (tmp) {
|
|
if (be_verbose && (tmp->n_used == 0))
|
|
lc_warning("Unused variable '%s'", tmp->name);
|
|
nxt = tmp->next;
|
|
if (tmp->name) free((genericptr_t)(tmp->name));
|
|
if (tmp) free((genericptr_t)(tmp));
|
|
tmp = nxt;
|
|
}
|
|
}
|
|
|
|
struct lc_vardefs *
|
|
vardef_defined(f, name, casesense)
|
|
struct lc_vardefs *f;
|
|
char *name;
|
|
int casesense;
|
|
{
|
|
while (f) {
|
|
if (casesense) {
|
|
if (!strcmp(name, f->name))
|
|
return f;
|
|
} else {
|
|
if (!case_insensitive_comp(name, f->name))
|
|
return f;
|
|
}
|
|
f = f->next;
|
|
}
|
|
return ((void *)0);
|
|
}
|
|
|
|
const char *
|
|
spovar2str(spovar)
|
|
long spovar;
|
|
{
|
|
static int togl = 0;
|
|
static char buf[2][128];
|
|
const char *n = ((void *)0);
|
|
int is_array = (spovar & 0x40);
|
|
spovar &= ~0x40;
|
|
|
|
switch (spovar) {
|
|
default:
|
|
lc_error("spovar2str(%ld)", spovar);
|
|
break;
|
|
case 0x01:
|
|
n = "integer";
|
|
break;
|
|
case 0x02:
|
|
n = "string";
|
|
break;
|
|
case 0x03:
|
|
n = "variable";
|
|
break;
|
|
case 0x04:
|
|
n = "coordinate";
|
|
break;
|
|
case 0x05:
|
|
n = "region";
|
|
break;
|
|
case 0x06:
|
|
n = "mapchar";
|
|
break;
|
|
case 0x07:
|
|
n = "monster";
|
|
break;
|
|
case 0x08:
|
|
n = "object";
|
|
break;
|
|
}
|
|
|
|
togl = ((togl + 1) % 2);
|
|
|
|
snprintf(buf[togl], 127, "%s%s", n, (is_array ? " array" : ""));
|
|
return buf[togl];
|
|
}
|
|
|
|
void
|
|
vardef_used(vd, varname)
|
|
struct lc_vardefs *vd;
|
|
char *varname;
|
|
{
|
|
struct lc_vardefs *tmp;
|
|
if ((tmp = vardef_defined(vd, varname, 1)))
|
|
tmp->n_used++;
|
|
}
|
|
|
|
void
|
|
check_vardef_type(vd, varname, vartype)
|
|
struct lc_vardefs *vd;
|
|
char *varname;
|
|
long vartype;
|
|
{
|
|
struct lc_vardefs *tmp;
|
|
if ((tmp = vardef_defined(vd, varname, 1))) {
|
|
if (tmp->var_type != vartype)
|
|
lc_error("Trying to use variable '%s' as %s, when it is %s.",
|
|
varname, spovar2str(vartype), spovar2str(tmp->var_type));
|
|
} else
|
|
lc_error("Variable '%s' not defined.", varname);
|
|
}
|
|
|
|
struct lc_vardefs *
|
|
add_vardef_type(vd, varname, vartype)
|
|
struct lc_vardefs *vd;
|
|
char *varname;
|
|
long vartype;
|
|
{
|
|
struct lc_vardefs *tmp;
|
|
if ((tmp = vardef_defined(vd, varname, 1))) {
|
|
if (tmp->var_type != vartype)
|
|
lc_error("Trying to redefine variable '%s' as %s, when it is %s.",
|
|
varname, spovar2str(vartype), spovar2str(tmp->var_type));
|
|
} else {
|
|
tmp = vardef_new(vartype, varname);
|
|
tmp->next = vd;
|
|
return tmp;
|
|
}
|
|
return vd;
|
|
}
|
|
|
|
int
|
|
reverse_jmp_opcode(opcode)
|
|
int opcode;
|
|
{
|
|
switch (opcode) {
|
|
case SPO_JE:
|
|
return SPO_JNE;
|
|
case SPO_JNE:
|
|
return SPO_JE;
|
|
case SPO_JL:
|
|
return SPO_JGE;
|
|
case SPO_JG:
|
|
return SPO_JLE;
|
|
case SPO_JLE:
|
|
return SPO_JG;
|
|
case SPO_JGE:
|
|
return SPO_JL;
|
|
default:
|
|
lc_error("Cannot reverse comparison jmp opcode %d.", opcode);
|
|
return SPO_NULL;
|
|
}
|
|
}
|
|
|
|
|
|
struct opvar *
|
|
opvar_clone(ov)
|
|
struct opvar *ov;
|
|
{
|
|
if (ov) {
|
|
struct opvar *tmpov = (struct opvar *) alloc(sizeof(struct opvar));
|
|
if (!tmpov)
|
|
panic("could not alloc opvar struct");
|
|
switch (ov->spovartyp) {
|
|
case 0x04:
|
|
case 0x05:
|
|
case 0x06:
|
|
case 0x07:
|
|
case 0x08:
|
|
case 0x01: {
|
|
tmpov->spovartyp = ov->spovartyp;
|
|
tmpov->vardata.l = ov->vardata.l;
|
|
} break;
|
|
case 0x03:
|
|
case 0x02: {
|
|
int len = strlen(ov->vardata.str);
|
|
tmpov->spovartyp = ov->spovartyp;
|
|
tmpov->vardata.str = (char *) alloc(len + 1);
|
|
(void) memcpy((genericptr_t) tmpov->vardata.str,
|
|
(genericptr_t) ov->vardata.str, len);
|
|
tmpov->vardata.str[len] = '\0';
|
|
} break;
|
|
default: {
|
|
lc_error("Unknown opvar_clone value type (%d)!", ov->spovartyp);
|
|
}
|
|
}
|
|
return tmpov;
|
|
}
|
|
return ((void *)0);
|
|
}
|
|
|
|
void
|
|
splev_add_from(splev, from_splev)
|
|
sp_lev *splev;
|
|
sp_lev *from_splev;
|
|
{
|
|
int i;
|
|
if (splev && from_splev)
|
|
for (i = 0; i < from_splev->n_opcodes; i++)
|
|
add_opcode(splev, from_splev->opcodes[i].opcode,
|
|
opvar_clone(from_splev->opcodes[i].opdat));
|
|
}
|
|
|
|
void
|
|
start_level_def(splev, ldfname)
|
|
sp_lev **splev;
|
|
char *ldfname;
|
|
{
|
|
struct lc_funcdefs *f;
|
|
if (strchr(ldfname, '.'))
|
|
lc_error("Invalid dot ('.') in level name '%s'.", ldfname);
|
|
if ((int) strlen(ldfname) > 14)
|
|
lc_error("Level names limited to 14 characters ('%s').", ldfname);
|
|
f = function_definitions;
|
|
while (f) {
|
|
f->n_called = 0;
|
|
f = f->next;
|
|
}
|
|
*splev = (sp_lev *) alloc(sizeof(sp_lev));
|
|
(*splev)->n_opcodes = 0;
|
|
(*splev)->opcodes = ((void *)0);
|
|
|
|
vardef_free_all(variable_definitions);
|
|
variable_definitions = ((void *)0);
|
|
}
|
|
|
|
|
|
|
|
|
|
int
|
|
get_floor_type(c)
|
|
char c;
|
|
{
|
|
int val;
|
|
|
|
;
|
|
val = what_map_char(c);
|
|
if (val == 127) {
|
|
val = (-1);
|
|
yywarning("Invalid fill character in MAZE declaration");
|
|
}
|
|
return val;
|
|
}
|
|
|
|
|
|
|
|
|
|
int
|
|
get_room_type(s)
|
|
char *s;
|
|
{
|
|
register int i;
|
|
|
|
;
|
|
for (i = 0; room_types[i].name; i++)
|
|
if (!strcmp(s, room_types[i].name))
|
|
return ((int) room_types[i].type);
|
|
return (-1);
|
|
}
|
|
|
|
|
|
|
|
|
|
int
|
|
get_trap_type(s)
|
|
char *s;
|
|
{
|
|
register int i;
|
|
|
|
;
|
|
for (i = 0; trap_types[i].name; i++)
|
|
if (!strcmp(s, trap_types[i].name))
|
|
return trap_types[i].type;
|
|
return (-1);
|
|
}
|
|
|
|
|
|
|
|
|
|
int
|
|
get_monster_id(s, c)
|
|
char *s;
|
|
char c;
|
|
{
|
|
register int i, class;
|
|
|
|
;
|
|
class = c ? def_char_to_monclass(c) : 0;
|
|
if (class == 61)
|
|
return (-1);
|
|
|
|
for (i = ((-1)+1); i < 381; i++)
|
|
if (!class || class == mons[i].mlet)
|
|
if (!strcmp(s, mons[i].mname))
|
|
return i;
|
|
|
|
for (i = ((-1)+1); i < 381; i++)
|
|
if (!class || class == mons[i].mlet)
|
|
if (!case_insensitive_comp(s, mons[i].mname)) {
|
|
if (be_verbose)
|
|
lc_warning("Monster type \"%s\" matches \"%s\".", s,
|
|
mons[i].mname);
|
|
return i;
|
|
}
|
|
return (-1);
|
|
}
|
|
|
|
|
|
|
|
|
|
int
|
|
get_object_id(s, c)
|
|
char *s;
|
|
char c;
|
|
{
|
|
int i, class;
|
|
const char *objname;
|
|
|
|
;
|
|
class = (c > 0) ? def_char_to_objclass(c) : 0;
|
|
if (class == 18)
|
|
return (-1);
|
|
|
|
for (i = class ? bases[class] : 0; i < 437; i++) {
|
|
if (class && objects[i].oc_class != class)
|
|
break;
|
|
objname = obj_descr[i].oc_name;
|
|
if (objname && !strcmp(s, objname))
|
|
return i;
|
|
}
|
|
for (i = class ? bases[class] : 0; i < 437; i++) {
|
|
if (class && objects[i].oc_class != class)
|
|
break;
|
|
objname = obj_descr[i].oc_name;
|
|
if (objname && !case_insensitive_comp(s, objname)) {
|
|
if (be_verbose)
|
|
lc_warning("Object type \"%s\" matches \"%s\".", s, objname);
|
|
return i;
|
|
}
|
|
}
|
|
return (-1);
|
|
}
|
|
|
|
static void
|
|
init_obj_classes()
|
|
{
|
|
int i, class, prev_class;
|
|
|
|
prev_class = -1;
|
|
for (i = 0; i < 437; i++) {
|
|
class = objects[i].oc_class;
|
|
if (class != prev_class) {
|
|
bases[class] = i;
|
|
prev_class = class;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
boolean
|
|
check_monster_char(c)
|
|
char c;
|
|
{
|
|
return (def_char_to_monclass(c) != 61);
|
|
}
|
|
|
|
|
|
|
|
|
|
boolean
|
|
check_object_char(c)
|
|
char c;
|
|
{
|
|
return (def_char_to_objclass(c) != 18);
|
|
}
|
|
|
|
|
|
|
|
|
|
char
|
|
what_map_char(c)
|
|
char c;
|
|
{
|
|
;
|
|
switch (c) {
|
|
case ' ':
|
|
return (0);
|
|
case '#':
|
|
return (23);
|
|
case '.':
|
|
return (24);
|
|
case '-':
|
|
return (2);
|
|
case '|':
|
|
return (1);
|
|
case '+':
|
|
return (22);
|
|
case 'A':
|
|
return (34);
|
|
case 'B':
|
|
return (7);
|
|
case 'C':
|
|
return (35);
|
|
case 'S':
|
|
return (14);
|
|
case 'H':
|
|
return (15);
|
|
case '{':
|
|
return (27);
|
|
case '\\':
|
|
return (28);
|
|
case 'K':
|
|
return (29);
|
|
case '}':
|
|
return (17);
|
|
case 'P':
|
|
return (16);
|
|
case 'L':
|
|
return (20);
|
|
case 'I':
|
|
return (32);
|
|
case 'W':
|
|
return (18);
|
|
case 'T':
|
|
return (13);
|
|
case 'F':
|
|
return (21);
|
|
case 'x':
|
|
return (36);
|
|
}
|
|
return (127);
|
|
}
|
|
|
|
void
|
|
add_opcode(sp, opc, dat)
|
|
sp_lev *sp;
|
|
int opc;
|
|
genericptr_t dat;
|
|
{
|
|
long nop = sp->n_opcodes;
|
|
_opcode *tmp;
|
|
|
|
if ((opc < 0) || (opc >= MAX_SP_OPCODES))
|
|
lc_error("Unknown opcode '%d'", opc);
|
|
|
|
tmp = (_opcode *) alloc(sizeof(_opcode) * (nop + 1));
|
|
if (sp->opcodes && nop) {
|
|
(void) memcpy(tmp, sp->opcodes, sizeof(_opcode) * nop);
|
|
free(sp->opcodes);
|
|
} else if (!tmp)
|
|
lc_error("Could not alloc opcode space");
|
|
|
|
sp->opcodes = tmp;
|
|
|
|
sp->opcodes[nop].opcode = opc;
|
|
sp->opcodes[nop].opdat = dat;
|
|
|
|
sp->n_opcodes++;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
scan_map(map, sp)
|
|
char *map;
|
|
sp_lev *sp;
|
|
{
|
|
register int i, len;
|
|
register char *s1, *s2;
|
|
int max_len = 0;
|
|
int max_hig = 0;
|
|
char *tmpmap[21];
|
|
int dx, dy;
|
|
char *mbuf;
|
|
|
|
|
|
for (s1 = s2 = map; *s1; s1++)
|
|
if (*s1 < '0' || *s1 > '9')
|
|
*s2++ = *s1;
|
|
*s2 = '\0';
|
|
|
|
|
|
s1 = map;
|
|
while (s1 && *s1) {
|
|
s2 = strchr(s1, '\n');
|
|
if (s2) {
|
|
len = (int) (s2 - s1);
|
|
s1 = s2 + 1;
|
|
} else {
|
|
len = (int) strlen(s1);
|
|
s1 = (char *) 0;
|
|
}
|
|
if (len > max_len)
|
|
max_len = len;
|
|
}
|
|
|
|
|
|
while (map && *map) {
|
|
tmpmap[max_hig] = (char *) alloc(max_len);
|
|
s1 = strchr(map, '\n');
|
|
if (s1) {
|
|
len = (int) (s1 - map);
|
|
s1++;
|
|
} else {
|
|
len = (int) strlen(map);
|
|
s1 = map + len;
|
|
}
|
|
for (i = 0; i < len; i++)
|
|
if ((tmpmap[max_hig][i] = what_map_char(map[i]))
|
|
== 127) {
|
|
lc_warning("Invalid character '%c' @ (%d, %d) - replacing "
|
|
"with stone",
|
|
map[i], max_hig, i);
|
|
tmpmap[max_hig][i] = 0;
|
|
}
|
|
while (i < max_len)
|
|
tmpmap[max_hig][i++] = 0;
|
|
map = s1;
|
|
max_hig++;
|
|
}
|
|
|
|
|
|
|
|
max_x_map = max_len - 1;
|
|
max_y_map = max_hig - 1;
|
|
|
|
if (max_len > 76 || max_hig > 21) {
|
|
lc_error("Map too large at (%d x %d), max is (%d x %d)", max_len,
|
|
max_hig, 76, 21);
|
|
}
|
|
|
|
mbuf = (char *) alloc(((max_hig - 1) * max_len) + (max_len - 1) + 2);
|
|
for (dy = 0; dy < max_hig; dy++)
|
|
for (dx = 0; dx < max_len; dx++)
|
|
mbuf[(dy * max_len) + dx] = (tmpmap[dy][dx] + 1);
|
|
|
|
mbuf[((max_hig - 1) * max_len) + (max_len - 1) + 1] = '\0';
|
|
|
|
add_opvars(sp, "siio", mbuf,max_hig,max_len,SPO_MAP);
|
|
|
|
for (dy = 0; dy < max_hig; dy++)
|
|
if (tmpmap[dy]) free((genericptr_t)(tmpmap[dy]));
|
|
if (mbuf) free((genericptr_t)(mbuf));
|
|
}
|
|
|
|
|
|
|
|
|
|
static boolean
|
|
write_common_data(fd)
|
|
int fd;
|
|
{
|
|
static struct version_info version_data = {
|
|
0x03060000UL, 0x00060000UL, 0x211b517dUL, 0xc48195c4UL,
|
|
0x00025000UL
|
|
};
|
|
|
|
if ((long) write(fd, (genericptr_t)(&version_data), sizeof version_data) != (long) (sizeof version_data)) return ((boolean)0);;
|
|
return ((boolean)1);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static boolean
|
|
write_maze(fd, maze)
|
|
int fd;
|
|
sp_lev *maze;
|
|
{
|
|
int i;
|
|
|
|
if (!write_common_data(fd))
|
|
return ((boolean)0);
|
|
|
|
if ((long) write(fd, (genericptr_t)(&(maze->n_opcodes)), sizeof(maze->n_opcodes)) != (long) (sizeof(maze->n_opcodes))) return ((boolean)0);;
|
|
|
|
for (i = 0; i < maze->n_opcodes; i++) {
|
|
_opcode tmpo = maze->opcodes[i];
|
|
|
|
if ((long) write(fd, (genericptr_t)(&(tmpo.opcode)), sizeof(tmpo.opcode)) != (long) (sizeof(tmpo.opcode))) return ((boolean)0);;
|
|
|
|
if (tmpo.opcode < SPO_NULL || tmpo.opcode >= MAX_SP_OPCODES)
|
|
panic("write_maze: unknown opcode (%d).", tmpo.opcode);
|
|
|
|
if (tmpo.opcode == SPO_PUSH) {
|
|
genericptr_t opdat = tmpo.opdat;
|
|
if (opdat) {
|
|
struct opvar *ov = (struct opvar *) opdat;
|
|
int size;
|
|
if ((long) write(fd, (genericptr_t)(&(ov->spovartyp)), sizeof(ov->spovartyp)) != (long) (sizeof(ov->spovartyp))) return ((boolean)0);;
|
|
switch (ov->spovartyp) {
|
|
case 0x00:
|
|
break;
|
|
case 0x04:
|
|
case 0x05:
|
|
case 0x06:
|
|
case 0x07:
|
|
case 0x08:
|
|
case 0x01:
|
|
if ((long) write(fd, (genericptr_t)(&(ov->vardata.l)), sizeof(ov->vardata.l)) != (long) (sizeof(ov->vardata.l))) return ((boolean)0);;
|
|
break;
|
|
case 0x03:
|
|
case 0x02:
|
|
if (ov->vardata.str)
|
|
size = strlen(ov->vardata.str);
|
|
else
|
|
size = 0;
|
|
if ((long) write(fd, (genericptr_t)(&size), sizeof(size)) != (long) (sizeof(size))) return ((boolean)0);;
|
|
if (size) {
|
|
if ((long) write(fd, (genericptr_t)(ov->vardata.str), size) != (long) (size)) return ((boolean)0);;
|
|
if (ov->vardata.str) free((genericptr_t)(ov->vardata.str));
|
|
}
|
|
break;
|
|
default:
|
|
panic("write_maze: unknown data type (%d).",
|
|
ov->spovartyp);
|
|
}
|
|
} else
|
|
panic("write_maze: PUSH with no data.");
|
|
} else {
|
|
|
|
genericptr_t opdat = tmpo.opdat;
|
|
if (opdat)
|
|
panic("write_maze: opcode (%d) has data.", tmpo.opcode);
|
|
}
|
|
|
|
if (tmpo.opdat) free((genericptr_t)(tmpo.opdat));
|
|
}
|
|
|
|
if (maze->opcodes) free((genericptr_t)(maze->opcodes));
|
|
maze->opcodes = ((void *)0);
|
|
|
|
|
|
|
|
return ((boolean)1);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
boolean
|
|
write_level_file(filename, lvl)
|
|
char *filename;
|
|
sp_lev *lvl;
|
|
{
|
|
int fout;
|
|
char lbuf[60];
|
|
|
|
lbuf[0] = '\0';
|
|
|
|
|
|
|
|
(void) strcat(lbuf, filename);
|
|
(void) strcat(lbuf, ".lev");
|
|
|
|
|
|
|
|
|
|
fout = open(lbuf, 0x0001 | 0x0200 | 0, 0644);
|
|
|
|
if (fout < 0)
|
|
return ((boolean)0);
|
|
|
|
if (!lvl)
|
|
panic("write_level_file");
|
|
|
|
if (be_verbose)
|
|
fprintf(__stdoutp, "File: '%s', opcodes: %ld\n", lbuf, lvl->n_opcodes);
|
|
|
|
if (!write_maze(fout, lvl))
|
|
return ((boolean)0);
|
|
|
|
(void) close(fout);
|
|
|
|
return ((boolean)1);
|
|
}
|
|
|
|
static int
|
|
case_insensitive_comp(s1, s2)
|
|
const char *s1;
|
|
const char *s2;
|
|
{
|
|
unsigned char u1, u2;
|
|
|
|
for (;; s1++, s2++) {
|
|
u1 = tolower((unsigned char) *s1);
|
|
u2 = tolower((unsigned char) *s2);
|
|
if ((u1 == '\0') || (u1 != u2)) {
|
|
break;
|
|
}
|
|
}
|
|
return u1 - u2;
|
|
}
|