Source:NetHack 3.0.0/decl.c

Below is the full text to decl.c from the source code of NetHack 3.0.0. To link to a particular line, write [[NetHack 3.0.0/decl.c#line123 ]], for example.

Warning! This is the source code from an old release. For the latest release, see Source code

1.   /*	SCCS Id: @(#)decl.c	3.0	88/10/25 2.   /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3.    /* NetHack may be freely redistributed. See license for details. */ 4.     5.    #include	"hack.h"  6. 7.   int multi = 0; 8.   int warnlevel = 0;		/* used by movemon and dochugw */ 9.   int nroom = 0; 10.  int occtime = 0; 11.   12.   int x_maze_max, y_maze_max;	/* initialized in main, used in mkmaze.c */ 13.   14.   #ifdef REDO 15.  int in_doagain = 0; 16.  #endif 17.   18.   /*  19.    *	The following integers will be initialized at load time with 20.   *	the level numbers of some "important" things in the game. 21.   */  22.    23.    int 24.  	medusa_level = 0,	/* level that the medusa lives on */ 25.  	bigroom_level = 0,	/* level consisting of a single big room */ 26.  #ifdef REINCARNATION 27.  	rogue_level = 0,	/* level near which rogue level gen'd */ 28.  #endif 29.  #ifdef ORACLE 30.  	oracle_level = 0,	/* level near which Oracle gen'd */ 31.  #endif 32.  #ifdef STRONGHOLD 33.  	stronghold_level = 3,	/* level the castle is on */ 34.  	/* Not 0, otherwise they start the game in Hell and burn immediately */ 35.  	tower_level = 0,	/* level of the top of Vlad's 3-level tower */ 36.  #endif 37.  	wiz_level = 0;		/* level that the wiz lives on */ 38.  boolean is_maze_lev = FALSE;    /* if this is a maze level */ 39.   40.   int smeq[MAXNROFROOMS+1] = DUMMY; 41.  int doorindex = 0; 42.   43.   char *save_cm = 0; 44.  char *killer = 0; 45.  char *nomovemsg = 0; 46.  const char nul[40] = DUMMY;		/* contains zeros */ 47.  char plname[PL_NSIZ] = DUMMY;		/* player name */ 48.  char pl_character[PL_CSIZ] = DUMMY; 49.  char pl_fruit[PL_FSIZ] = DUMMY; 50.  int current_fruit = 0; 51.  struct fruit *ffruit = 0; 52.  #ifdef STRONGHOLD 53.  char tune[6] = DUMMY; 54.  #  ifdef MUSIC 55.  schar music_heard = 0; 56.  #  endif 57.  #endif 58.  char *occtxt = DUMMY; 59.  const char quitchars[] = " \r\n\033"; 60.  const char vowels[] = "aeiouAEIOU"; 61.  const char ynchars[] = "yn"; 62.  const char ynqchars[] = "ynq"; 63.  const char ynaqchars[] = "ynaq"; 64.  const char nyaqchars[] = "nyaq"; 65.  char *HI = DUMMY, *HE = DUMMY, *AS = DUMMY, *AE = DUMMY, *CD = DUMMY; 66.  	/* set up in termcap.c */ 67.  int CO = 0, LI = 0;	/* set up in termcap.c: usually COLNO and ROWNO+3 */ 68.   69.   #ifdef MSDOSCOLOR 70.  char *HI_RED, *HI_YELLOW, *HI_GREEN, *HI_BLUE, *HI_WHITE; /* termcap.c */ 71.  #endif 72.   73.   #ifdef MSDOS 74.  char hackdir[PATHLEN];		/* where rumors, help, record are */ 75.  const char *configfile = "NetHack.cnf";	/* read by read_config_file */ 76.  char levels[PATHLEN];		/* where levels are */ 77.  #endif /* MSDOS */ 78.  #ifdef DGK 79.  char lock[FILENAME];		/* pathname of level files */ 80.  char permbones[PATHLEN];	/* where permanent copy of bones go */ 81.  int ramdisk = FALSE;		/* whether to copy bones to levels or not */ 82.  int saveprompt = TRUE; 83.  const char *alllevels = "levels.*"; 84.  const char *allbones = "bones.*"; 85.  #else 86.  char lock[PL_NSIZ+4] = "1lock";	/* long enough for login name .99 */ 87.  #endif 88.   89.   int dig_effort = 0;	/* effort expended on current pos */ 90.  uchar dig_level = 0; 91.  coord dig_pos = DUMMY; 92.  boolean dig_down = FALSE; 93.   94.   xchar dlevel = 1; 95.  xchar maxdlevel = 1; 96.  int done_stopprint = 0; 97.  int done_hup = 0; 98.  xchar xupstair = 0, yupstair = 0, xdnstair = 0, ydnstair = 0; 99.  #ifdef STRONGHOLD 100. xchar xupladder = 0, yupladder = 0, xdnladder = 0, ydnladder = 0; 101. #endif 102. xchar curx = 0, cury = 0; 103. xchar seelx = 0, seehx = 0, seely = 0, seehy = 0; /* corners of lit room */ 104. xchar seelx2 = 0, seehx2 = 0, seely2 = 0, seehy2 = 0; /* corners of lit room */ 105. xchar scrlx = 0, scrhx = 0, scrly = 0, scrhy = 0; /* corners of new scr. area*/ 106. xchar fountsound = 0; 107. xchar sinksound = 0; /* numbers of other things that make noise */ 108.  109.  boolean in_mklev = FALSE; 110. boolean	stoned = FALSE;			/* done to monsters hit by 'c' */ 111. boolean	unweapon = FALSE; 112. #ifdef KOPS 113. boolean allow_kops = TRUE; 114. #endif 115.  116.  coord bhitpos = DUMMY; 117. coord doors[DOORMAX] = DUMMY; 118.  119.  struct mkroom rooms[MAXNROFROOMS+1] = DUMMY; 120. struct rm levl[COLNO][ROWNO] = DUMMY;		/* level map */ 121. struct monst *fmon = 0; 122. struct trap *ftrap = 0; 123. struct gold *fgold = 0; 124. struct monst youmonst = DUMMY;	/* dummy; used as return value for boomhit */ 125. struct flag flags = DUMMY; 126. struct you u = DUMMY; 127.  128.  struct obj *fobj = 0, *fcobj = 0, *invent = 0, *uwep = 0, *uarm = 0, 129. #ifdef SHIRT 130. 	*uarmu = 0,		/* under-wear, so to speak */ 131. #endif 132. #ifdef POLYSELF 133. 	*uskin = 0,		/* dragon armor, if a dragon */ 134. #endif 135. 	*uarmc = 0, *uarmh = 0, *uarms = 0, *uarmg = 0, *uarmf = 0, *uamul = 0, 136. 	*uright = 0, *uleft = 0, *ublindf = 0, *uchain = 0, *uball = 0; 137.  138.  const struct symbols defsyms = { 139.     ' ', /* stone */ 140.     '|', /* vwall */ 141.     '-', /* hwall */ 142.     '-', /* tlcorn */ 143.     '-', /* trcorn */ 144.     '-', /* blcorn */ 145.     '-', /* brcorn */ 146.     '-', /* crwall */ 147.     '-', /* tuwall */ 148.     '-', /* tdwall */ 149.     '|', /* tlwall */ 150.     '|', /* trwall */ 151.     '|', /* vbeam */ 152.     '-', /* hbeam */ 153.     '\\', /* lslant */ 154.     '/', /* rslant */ 155.     '+', /* door */ 156.     '.', /* room */ 157.     '#', /* corr */ 158.     '<', /* upstair */ 159.     '>', /* dnstair */ 160.     '^', /* trap */ 161.     '"', /* web */  162.      '}', /* pool */  163.      '{', /* fountain */	/* used ifdef FOUNTAINS */  164.      '#', /* sink */	/* used ifdef SINKS */  165.      '\\', /* throne */	/* used ifdef THRONES */  166.      '_', /* altar */	/* used ifdef ALTARS */  167.      '<', /* upladder */	/* used ifdef STRONGHOLD */  168.      '>', /* dnladder */	/* used ifdef STRONGHOLD */  169.      '#', /* dbvwall */	/* used ifdef STRONGHOLD */  170.      '#', /* dbhwall */	/* used ifdef STRONGHOLD */  171.  };  172.  struct symbols showsyms = DUMMY; /* will contain the symbols actually used */  173.  #ifdef REINCARNATION  174.  struct symbols savesyms = DUMMY;  175.  #endif  176.   177.  #ifdef SPELLS  178.  struct spell spl_book[MAXSPELL + 1] = DUMMY;  179.  #endif  180.   181.  long moves = 1;  182.  long wailmsg = 0;  183.   184.  struct obj zeroobj = DUMMY;	/* used to zero all elements of a struct obj */ 185.  186.  struct obj *billobjs = 0; 187.  188.  const char black[] = "black"; 189. const char amber[] = "amber"; 190. #ifdef THEOLOGY 191. const char golden[] = "golden"; 192. #endif 193. const char light_blue[] = "light blue"; 194. const char red[] = "red"; 195. const char green[] = "green"; 196. const char silver[] = "silver"; 197. const char blue[] = "blue"; 198. const char purple[] = "purple"; 199. const char white[] = "white"; 200.  201.  const char nothing_happens[] = "Nothing happens."; 202. const char thats_enough_tries[] = "That's enough tries!";