abstract
| - Below is the full text to decl.c from the source code of NetHack 3.2.0. To link to a particular line, write [[NetHack 3.2.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.2 95/08/13 */ 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 NDECL((*afternmv)); 8. int NDECL((*occupation)); 9. 10. /* from xxxmain.c */ 11. const char *hname = 0; /* name of the game (argv[0] of main) */ 12. int hackpid = 0; /* current process id */ 13. #if defined(UNIX) || defined(VMS) 14. int locknum = 0; /* max num of simultaneous users */ 15. #endif 16. #ifdef DEF_PAGER 17. char *catmore = 0; /* default pager */ 18. #endif 19. 20. NEARDATA int bases[MAXOCLASSES] = DUMMY; 21. 22. NEARDATA int multi = 0; 23. NEARDATA int warnlevel = 0; /* used by movemon and dochugw */ 24. NEARDATA int nroom = 0; 25. NEARDATA int nsubroom = 0; 26. NEARDATA int occtime = 0; 27. 28. int x_maze_max, y_maze_max; /* initialized in main, used in mkmaze.c */ 29. int otg_temp; /* used by object_to_glyph() [otg] */ 30. 31. #ifdef REDO 32. NEARDATA int in_doagain = 0; 33. #endif 34. 35. /* 36. * The following structure will be initialized at startup time with 37. * the level numbers of some "important" things in the game. 38. */ 39. struct dgn_topology dungeon_topology = {DUMMY}; 40. 41. #include "quest.h" 42. struct q_score quest_status = DUMMY; 43. 44. NEARDATA int smeq[MAXNROFROOMS+1] = DUMMY; 45. NEARDATA int doorindex = 0; 46. 47. NEARDATA char *save_cm = 0; 48. NEARDATA int killer_format = 0; 49. const char *killer = 0; 50. const char *nomovemsg = 0; 51. const char nul[40] = DUMMY; /* contains zeros */ 52. NEARDATA char plname[PL_NSIZ] = DUMMY; /* player name */ 53. NEARDATA char pl_character[PL_CSIZ] = DUMMY; 54. 55. NEARDATA char pl_fruit[PL_FSIZ] = DUMMY; 56. NEARDATA int current_fruit = 0; 57. NEARDATA struct fruit *ffruit = (struct fruit *)0; 58. 59. NEARDATA char tune[6] = DUMMY; 60. 61. const char *occtxt = DUMMY; 62. const char quitchars[] = "
\033"; 63. const char vowels[] = "aeiouAEIOU"; 64. const char ynchars[] = "yn"; 65. const char ynqchars[] = "ynq"; 66. const char ynaqchars[] = "ynaq"; 67. const char ynNaqchars[] = "yn#aq"; 68. NEARDATA long yn_number = 0L; 69. 70. #ifdef MICRO 71. char hackdir[PATHLEN]; /* where rumors, help, record are */ 72. char levels[PATHLEN]; /* where levels are */ 73. #endif /* MICRO */ 74. 75. 76. #ifdef MFLOPPY 77. char permbones[PATHLEN]; /* where permanent copy of bones go */ 78. int ramdisk = FALSE; /* whether to copy bones to levels or not */ 79. int saveprompt = TRUE; 80. const char *alllevels = "levels.*"; 81. const char *allbones = "bones*.*"; 82. #endif 83. 84. struct linfo level_info[MAXLINFO]; 85. 86. NEARDATA struct sinfo program_state; 87. 88. /* 'rogue'-like direction commands (cmd.c) */ 89. const char sdir[] = "hykulnjb><"; 90. const char ndir[] = "47896321><"; /* number pad mode */ 91. const schar xdir[10] = { -1,-1, 0, 1, 1, 1, 0,-1, 0, 0 }; 92. const schar ydir[10] = { 0,-1,-1,-1, 0, 1, 1, 1, 0, 0 }; 93. const schar zdir[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 1,-1 }; 94. 95. NEARDATA schar tbx = 0, tby = 0; /* mthrowu: target */ 96. 97. NEARDATA struct dig_info digging; 98. 99. NEARDATA dungeon dungeons[MAXDUNGEON]; /* ini'ed by init_dungeon() */ 100. NEARDATA s_level *sp_levchn; 101. NEARDATA stairway upstair = { 0, 0 }, dnstair = { 0, 0 }; 102. NEARDATA stairway upladder = { 0, 0 }, dnladder = { 0, 0 }; 103. NEARDATA stairway sstairs = { 0, 0 }; 104. NEARDATA dest_area updest = { 0, 0, 0, 0, 0, 0, 0, 0 }; 105. NEARDATA dest_area dndest = { 0, 0, 0, 0, 0, 0, 0, 0 }; 106. NEARDATA coord inv_pos = { 0, 0 }; 107. 108. NEARDATA boolean in_mklev = FALSE; 109. NEARDATA boolean stoned = FALSE; /* done to monsters hit by 'c' */ 110. NEARDATA boolean unweapon = FALSE; 111. NEARDATA boolean mrg_to_wielded = FALSE; 112. /* weapon picked is merged with wielded one */ 113. NEARDATA struct obj *current_wand = 0; /* wand currently zapped/applied */ 114. 115. NEARDATA coord bhitpos = DUMMY; 116. NEARDATA coord doors[DOORMAX] = {DUMMY}; 117. 118. NEARDATA struct mkroom rooms[(MAXNROFROOMS+1)*2] = {DUMMY}; 119. NEARDATA struct mkroom* subrooms = &rooms[MAXNROFROOMS+1]; 120. struct mkroom *upstairs_room, *dnstairs_room, *sstairs_room; 121. 122. dlevel_t level; /* level map */ 123. struct trap *ftrap = (struct trap *)0; 124. NEARDATA struct monst youmonst = DUMMY; 125. NEARDATA struct flag flags = DUMMY; 126. NEARDATA struct you u = DUMMY; 127. 128. NEARDATA struct obj *invent = (struct obj *)0, 129. *uwep = (struct obj *)0, *uarm = (struct obj *)0, 130. #ifdef TOURIST 131. *uarmu = (struct obj *)0, /* under-wear, so to speak */ 132. #endif 133. *uskin = (struct obj *)0, /* dragon armor, if a dragon */ 134. *uarmc = (struct obj *)0, *uarmh = (struct obj *)0, 135. *uarms = (struct obj *)0, *uarmg = (struct obj *)0, 136. *uarmf = (struct obj *)0, *uamul = (struct obj *)0, 137. *uright = (struct obj *)0, 138. *uleft = (struct obj *)0, 139. *ublindf = (struct obj *)0, 140. *uchain = (struct obj *)0, 141. *uball = (struct obj *)0; 142. 143. #ifdef TEXTCOLOR 144. /* 145. * This must be the same order as used for buzz() in zap.c. 146. */ 147. const int zapcolors[NUM_ZAP] = { 148. HI_ZAP, /* 0 - missile */ 149. CLR_ORANGE, /* 1 - fire */ 150. CLR_WHITE, /* 2 - frost */ 151. HI_ZAP, /* 3 - sleep */ 152. CLR_BLACK, /* 4 - death */ 153. CLR_WHITE, /* 5 - lightning */ 154. CLR_YELLOW, /* 6 - poison gas */ 155. CLR_GREEN, /* 7 - acid */ 156. }; 157. #endif /* text color */ 158. 159. const int shield_static[SHIELD_COUNT] = { 160. S_ss1, S_ss2, S_ss3, S_ss2, S_ss1, S_ss2, S_ss4, /* 7 per row */ 161. S_ss1, S_ss2, S_ss3, S_ss2, S_ss1, S_ss2, S_ss4, 162. S_ss1, S_ss2, S_ss3, S_ss2, S_ss1, S_ss2, S_ss4, 163. }; 164. 165. NEARDATA struct spell spl_book[MAXSPELL + 1] = {DUMMY}; 166. 167. NEARDATA long moves = 1L, monstermoves = 1L; 168. /* These diverge when player is Fast */ 169. NEARDATA long wailmsg = 0L; 170. 171. /* objects that are moving to another dungeon level */ 172. NEARDATA struct obj *migrating_objs = (struct obj *)0; 173. /* objects not yet paid for */ 174. NEARDATA struct obj *billobjs = (struct obj *)0; 175. 176. /* used to zero all elements of a struct obj */ 177. NEARDATA struct obj zeroobj = DUMMY; 178. 179. /* monster pronouns, index is return value of gender(mtmp) */ 180. const char *he[3] = { "he", "she", "it" }; 181. const char *him[3] = { "him", "her", "it" }; 182. const char *his[3] = { "his", "her", "its" }; 183. 184. /* originally from dog.c */ 185. NEARDATA char dogname[PL_PSIZ] = DUMMY; 186. NEARDATA char catname[PL_PSIZ] = DUMMY; 187. char preferred_pet; /* '\0', 'c', 'd' */ 188. /* monsters that went down/up together with @ */ 189. NEARDATA struct monst *mydogs = (struct monst *)0; 190. /* monsters that are moving to another dungeon level */ 191. NEARDATA struct monst *migrating_mons = (struct monst *)0; 192. 193. NEARDATA struct mvitals mvitals[NUMMONS]; 194. 195. NEARDATA struct c_color_names c_color_names = { 196. "black", "amber", "golden", 197. "light blue", "red", "green", 198. "silver", "blue", "purple", 199. "white" 200. }; 201. 202. struct c_common_strings c_common_strings = { 203. "Nothing happens.", "That's enough tries!", 204. "That is a silly thing to %s.", "shudder for a moment.", 205. "something", "Something" 206. }; 207. 208. /* Vision */ 209. NEARDATA boolean vision_full_recalc = 0; 210. NEARDATA char **viz_array = 0;/* used in cansee() and couldsee() macros */ 211. 212. /* Global windowing data, defined here for multi-window-system support */ 213. NEARDATA winid WIN_MESSAGE = WIN_ERR, WIN_STATUS = WIN_ERR; 214. NEARDATA winid WIN_MAP = WIN_ERR, WIN_INVEN = WIN_ERR; 215. char toplines[BUFSZ]; 216. /* Windowing stuff that's really tty oriented, but present for all ports */ 217. struct tc_gbl_data tc_gbl_data = { 0,0, 0,0 }; /* AS,AE, LI,CO */ 218. 219. #ifdef TOURIST 220. const char *pl_classes = "ABCEHKPRSTVW"; 221. #else 222. const char *pl_classes = "ABCEHKPRSVW"; 223. #endif 224. 225. /* dummy routine used to force linkage */ 226. void 227. decl_init() 228. { 229. return; 230. } 231. 232. /*decl.c*/
|