OSDN Git Service

no bone
[nethackexpress/trunk.git] / include / extern.h
1 /*      SCCS Id: @(#)extern.h   3.4     2003/03/10      */
2 /* Copyright (c) Steve Creps, 1988.                               */
3 /* NetHack may be freely redistributed.  See license for details. */
4
5 #ifndef EXTERN_H
6 #define EXTERN_H
7
8 #define E extern
9
10 /* ### alloc.c ### */
11
12 #if 0
13 E long *FDECL(alloc, (unsigned int));
14 #endif
15 E char *FDECL(fmt_ptr, (const genericptr,char *));
16
17 /* This next pre-processor directive covers almost the entire file,
18  * interrupted only occasionally to pick up specific functions as needed. */
19 #if !defined(MAKEDEFS_C) && !defined(LEV_LEX_C)
20
21 /* ### allmain.c ### */
22
23 E void NDECL(moveloop);
24 E void NDECL(stop_occupation);
25 E void NDECL(display_gamewindows);
26 E void NDECL(newgame);
27 E void FDECL(welcome, (BOOLEAN_P));
28
29 /* ### apply.c ### */
30
31 E int NDECL(doapply);
32 E int NDECL(dorub);
33 E int NDECL(dojump);
34 E int FDECL(jump, (int));
35 E int NDECL(number_leashed);
36 E void FDECL(o_unleash, (struct obj *));
37 E void FDECL(m_unleash, (struct monst *,BOOLEAN_P));
38 E void NDECL(unleash_all);
39 E boolean NDECL(next_to_u);
40 E struct obj *FDECL(get_mleash, (struct monst *));
41 E void FDECL(check_leash, (XCHAR_P,XCHAR_P));
42 E boolean FDECL(um_dist, (XCHAR_P,XCHAR_P,XCHAR_P));
43 E boolean FDECL(snuff_candle, (struct obj *));
44 E boolean FDECL(snuff_lit, (struct obj *));
45 E boolean FDECL(catch_lit, (struct obj *));
46 E void FDECL(use_unicorn_horn, (struct obj *));
47 E boolean FDECL(tinnable, (struct obj *));
48 E void NDECL(reset_trapset);
49 E void FDECL(fig_transform, (genericptr_t, long));
50 E int FDECL(unfixable_trouble_count,(BOOLEAN_P));
51
52 /* ### artifact.c ### */
53
54 E void NDECL(init_artifacts);
55 E void FDECL(save_artifacts, (int));
56 E void FDECL(restore_artifacts, (int));
57 E const char *FDECL(artiname, (int));
58 E struct obj *FDECL(mk_artifact, (struct obj *,ALIGNTYP_P));
59 E const char *FDECL(artifact_name, (const char *,short *));
60 E boolean FDECL(exist_artifact, (int,const char *));
61 E void FDECL(artifact_exists, (struct obj *,const char *,BOOLEAN_P));
62 E int NDECL(nartifact_exist);
63 E boolean FDECL(spec_ability, (struct obj *,unsigned long));
64 E boolean FDECL(confers_luck, (struct obj *));
65 E boolean FDECL(arti_reflects, (struct obj *));
66 E boolean FDECL(restrict_name, (struct obj *,const char *));
67 E boolean FDECL(defends, (int,struct obj *));
68 E boolean FDECL(protects, (int,struct obj *));
69 E void FDECL(set_artifact_intrinsic, (struct obj *,BOOLEAN_P,long));
70 E int FDECL(touch_artifact, (struct obj *,struct monst *));
71 E int FDECL(spec_abon, (struct obj *,struct monst *));
72 E int FDECL(spec_dbon, (struct obj *,struct monst *,int));
73 E void FDECL(discover_artifact, (XCHAR_P));
74 E boolean FDECL(undiscovered_artifact, (XCHAR_P));
75 E int FDECL(disp_artifact_discoveries, (winid));
76 E boolean FDECL(artifact_hit, (struct monst *,struct monst *,
77                                 struct obj *,int *,int));
78 E int NDECL(doinvoke);
79 E void FDECL(arti_speak, (struct obj *));
80 E boolean FDECL(artifact_light, (struct obj *));
81 E long FDECL(spec_m2, (struct obj *));
82 E boolean FDECL(artifact_has_invprop, (struct obj *,UCHAR_P));
83 E long FDECL(arti_cost, (struct obj *));
84
85 /* ### attrib.c ### */
86
87 E boolean FDECL(adjattrib, (int,int,int));
88 E void FDECL(change_luck, (SCHAR_P));
89 E int FDECL(stone_luck, (BOOLEAN_P));
90 E void NDECL(set_moreluck);
91 E void FDECL(gainstr, (struct obj *,int));
92 E void FDECL(losestr, (int));
93 E void NDECL(restore_attrib);
94 E void FDECL(exercise, (int,BOOLEAN_P));
95 E void NDECL(exerchk);
96 E void NDECL(reset_attribute_clock);
97 E void FDECL(init_attr, (int));
98 E void NDECL(redist_attr);
99 E void FDECL(adjabil, (int,int));
100 E int NDECL(newhp);
101 E schar FDECL(acurr, (int));
102 E schar NDECL(acurrstr);
103 E void FDECL(adjalign, (int));
104
105 /* ### ball.c ### */
106
107 E void NDECL(ballfall);
108 E void NDECL(placebc);
109 E void NDECL(unplacebc);
110 E void FDECL(set_bc, (int));
111 E void FDECL(move_bc, (int,int,XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P));
112 E boolean FDECL(drag_ball, (XCHAR_P,XCHAR_P,
113                 int *,xchar *,xchar *,xchar *,xchar *, boolean *,BOOLEAN_P));
114 E void FDECL(drop_ball, (XCHAR_P,XCHAR_P));
115 E void NDECL(drag_down);
116
117 /* ### bones.c ### */
118
119 E boolean NDECL(can_make_bones);
120 E void FDECL(savebones, (struct obj *));
121 E int NDECL(getbones);
122
123 /* ### botl.c ### */
124
125 E int FDECL(xlev_to_rank, (int));
126 E int FDECL(title_to_mon, (const char *,int *,int *));
127 E void NDECL(max_rank_sz);
128 #ifdef SCORE_ON_BOTL
129 E long NDECL(botl_score);
130 #endif
131 E int FDECL(describe_level, (char *));
132 E const char *FDECL(rank_of, (int,SHORT_P,BOOLEAN_P));
133 E void NDECL(bot);
134
135 /* ### cmd.c ### */
136
137 #ifdef USE_TRAMPOLI
138 E int NDECL(doextcmd);
139 E int NDECL(domonability);
140 E int NDECL(doprev_message);
141 E int NDECL(timed_occupation);
142 E int NDECL(wiz_attributes);
143 E int NDECL(enter_explore_mode);
144 # ifdef WIZARD
145 E int NDECL(wiz_detect);
146 E int NDECL(wiz_genesis);
147 E int NDECL(wiz_identify);
148 E int NDECL(wiz_level_tele);
149 E int NDECL(wiz_map);
150 E int NDECL(wiz_where);
151 E int NDECL(wiz_wish);
152 # endif /* WIZARD */
153 #endif /* USE_TRAMPOLI */
154 E void NDECL(reset_occupations);
155 E void FDECL(set_occupation, (int (*)(void),const char *,int));
156 #ifdef REDO
157 E char NDECL(pgetchar);
158 E void FDECL(pushch, (CHAR_P));
159 E void FDECL(savech, (CHAR_P));
160 #endif
161 #ifdef WIZARD
162 E void NDECL(add_debug_extended_commands);
163 #endif /* WIZARD */
164 E void FDECL(rhack, (char *));
165 E int NDECL(doextlist);
166 E int NDECL(extcmd_via_menu);
167 E void FDECL(enlightenment, (int));
168 E void FDECL(show_conduct, (int));
169 E int FDECL(xytod, (SCHAR_P,SCHAR_P));
170 E void FDECL(dtoxy, (coord *,int));
171 E int FDECL(movecmd, (CHAR_P));
172 E int FDECL(getdir, (const char *));
173 E void NDECL(confdir);
174 E int FDECL(isok, (int,int));
175 E int FDECL(get_adjacent_loc, (const char *, const char *, XCHAR_P, XCHAR_P, coord *));
176 E const char *FDECL(click_to_cmd, (int,int,int));
177 E char NDECL(readchar);
178 #ifdef WIZARD
179 E void NDECL(sanity_check);
180 #endif
181 E char FDECL(yn_function, (const char *, const char *, CHAR_P));
182
183 /* ### dbridge.c ### */
184
185 E boolean FDECL(is_pool, (int,int));
186 E boolean FDECL(is_lava, (int,int));
187 E boolean FDECL(is_ice, (int,int));
188 E int FDECL(is_drawbridge_wall, (int,int));
189 E boolean FDECL(is_db_wall, (int,int));
190 E boolean FDECL(find_drawbridge, (int *,int*));
191 E boolean FDECL(create_drawbridge, (int,int,int,BOOLEAN_P));
192 E void FDECL(open_drawbridge, (int,int));
193 E void FDECL(close_drawbridge, (int,int));
194 E void FDECL(destroy_drawbridge, (int,int));
195
196 /* ### decl.c ### */
197
198 E void NDECL(decl_init);
199
200 /* ### detect.c ### */
201
202 E struct obj *FDECL(o_in, (struct obj*,CHAR_P));
203 E struct obj *FDECL(o_material, (struct obj*,unsigned));
204 E int FDECL(gold_detect, (struct obj *));
205 E int FDECL(food_detect, (struct obj *));
206 E int FDECL(object_detect, (struct obj *,int));
207 E int FDECL(monster_detect, (struct obj *,int));
208 E int FDECL(trap_detect, (struct obj *));
209 E const char *FDECL(level_distance, (d_level *));
210 E void FDECL(use_crystal_ball, (struct obj *));
211 E void NDECL(do_mapping);
212 E void NDECL(do_vicinity_map);
213 E void FDECL(cvt_sdoor_to_door, (struct rm *));
214 #ifdef USE_TRAMPOLI
215 E void FDECL(findone, (int,int,genericptr_t));
216 E void FDECL(openone, (int,int,genericptr_t));
217 #endif
218 E int NDECL(findit);
219 E int NDECL(openit);
220 E void FDECL(find_trap, (struct trap *));
221 E int FDECL(dosearch0, (int));
222 E int NDECL(dosearch);
223 E void NDECL(sokoban_detect);
224
225 /* ### dig.c ### */
226
227 E boolean NDECL(is_digging);
228 #ifdef USE_TRAMPOLI
229 E int NDECL(dig);
230 #endif
231 E int NDECL(holetime);
232 E boolean FDECL(dig_check, (struct monst *, BOOLEAN_P, int, int));
233 E void FDECL(digactualhole, (int,int,struct monst *,int));
234 E boolean FDECL(dighole, (BOOLEAN_P));
235 E int FDECL(use_pick_axe, (struct obj *));
236 E int FDECL(use_pick_axe2, (struct obj *));
237 E boolean FDECL(mdig_tunnel, (struct monst *));
238 E void FDECL(watch_dig, (struct monst *,XCHAR_P,XCHAR_P,BOOLEAN_P));
239 E void NDECL(zap_dig);
240 E struct obj *FDECL(bury_an_obj, (struct obj *));
241 E void FDECL(bury_objs, (int,int));
242 E void FDECL(unearth_objs, (int,int));
243 E void FDECL(rot_organic, (genericptr_t, long));
244 E void FDECL(rot_corpse, (genericptr_t, long));
245 #if 0
246 E void FDECL(bury_monst, (struct monst *));
247 E void NDECL(bury_you);
248 E void NDECL(unearth_you);
249 E void NDECL(escape_tomb);
250 E void FDECL(bury_obj, (struct obj *));
251 #endif
252
253 /* ### display.c ### */
254
255 #ifdef INVISIBLE_OBJECTS
256 E struct obj * FDECL(vobj_at, (XCHAR_P,XCHAR_P));
257 #endif /* INVISIBLE_OBJECTS */
258 E void FDECL(magic_map_background, (XCHAR_P,XCHAR_P,int));
259 E void FDECL(map_background, (XCHAR_P,XCHAR_P,int));
260 E void FDECL(map_trap, (struct trap *,int));
261 E void FDECL(map_object, (struct obj *,int));
262 E void FDECL(map_invisible, (XCHAR_P,XCHAR_P));
263 E void FDECL(unmap_object, (int,int));
264 E void FDECL(map_location, (int,int,int));
265 E void FDECL(feel_location, (XCHAR_P,XCHAR_P));
266 E void FDECL(newsym, (int,int));
267 E void FDECL(shieldeff, (XCHAR_P,XCHAR_P));
268 E void FDECL(tmp_at, (int,int));
269 E void FDECL(swallowed, (int));
270 E void FDECL(under_ground, (int));
271 E void FDECL(under_water, (int));
272 E void NDECL(see_monsters);
273 E void NDECL(set_mimic_blocking);
274 E void NDECL(see_objects);
275 E void NDECL(see_traps);
276 E void NDECL(curs_on_u);
277 E int NDECL(doredraw);
278 E void NDECL(docrt);
279 E void FDECL(show_glyph, (int,int,int));
280 E void NDECL(clear_glyph_buffer);
281 E void FDECL(row_refresh, (int,int,int));
282 E void NDECL(cls);
283 E void FDECL(flush_screen, (int));
284 E int FDECL(back_to_glyph, (XCHAR_P,XCHAR_P));
285 E int FDECL(zapdir_to_glyph, (int,int,int));
286 E int FDECL(glyph_at, (XCHAR_P,XCHAR_P));
287 E void NDECL(set_wall_state);
288
289 /* ### do.c ### */
290
291 #ifdef USE_TRAMPOLI
292 E int FDECL(drop, (struct obj *));
293 E int NDECL(wipeoff);
294 #endif
295 E int NDECL(dodrop);
296 E boolean FDECL(boulder_hits_pool, (struct obj *,int,int,BOOLEAN_P));
297 E boolean FDECL(flooreffects, (struct obj *,int,int,const char *));
298 E void FDECL(doaltarobj, (struct obj *));
299 E boolean FDECL(canletgo, (struct obj *,const char *));
300 E void FDECL(dropx, (struct obj *));
301 E void FDECL(dropy, (struct obj *));
302 E void FDECL(obj_no_longer_held, (struct obj *));
303 E int NDECL(doddrop);
304 E int NDECL(dodown);
305 E int NDECL(doup);
306 #ifdef INSURANCE
307 E void NDECL(save_currentstate);
308 #endif
309 E void FDECL(goto_level, (d_level *,BOOLEAN_P,BOOLEAN_P,BOOLEAN_P));
310 E void FDECL(schedule_goto, (d_level *,BOOLEAN_P,BOOLEAN_P,int,
311                              const char *,const char *));
312 E void NDECL(deferred_goto);
313 E boolean FDECL(revive_corpse, (struct obj *));
314 E void FDECL(revive_mon, (genericptr_t, long));
315 E int NDECL(donull);
316 E int NDECL(dowipe);
317 E void FDECL(set_wounded_legs, (long,int));
318 E void NDECL(heal_legs);
319
320 /* ### do_name.c ### */
321
322 E int FDECL(getpos, (coord *,BOOLEAN_P,const char *));
323 E struct monst *FDECL(christen_monst, (struct monst *,const char *));
324 E int NDECL(do_mname);
325 E struct obj *FDECL(oname, (struct obj *,const char *));
326 E int NDECL(ddocall);
327 E void FDECL(docall, (struct obj *));
328 E const char *NDECL(rndghostname);
329 E char *FDECL(x_monnam, (struct monst *,int,const char *,int,BOOLEAN_P));
330 E char *FDECL(l_monnam, (struct monst *));
331 E char *FDECL(mon_nam, (struct monst *));
332 E char *FDECL(noit_mon_nam, (struct monst *));
333 E char *FDECL(Monnam, (struct monst *));
334 E char *FDECL(noit_Monnam, (struct monst *));
335 E char *FDECL(m_monnam, (struct monst *));
336 E char *FDECL(y_monnam, (struct monst *));
337 E char *FDECL(Adjmonnam, (struct monst *,const char *));
338 E char *FDECL(Amonnam, (struct monst *));
339 E char *FDECL(a_monnam, (struct monst *));
340 E char *FDECL(distant_monnam, (struct monst *,int,char *));
341 E const char *NDECL(rndmonnam);
342 E const char *FDECL(hcolor, (const char *));
343 E const char *NDECL(rndcolor);
344 #ifdef REINCARNATION
345 E const char *NDECL(roguename);
346 #endif
347 E struct obj *FDECL(realloc_obj,
348                 (struct obj *, int, genericptr_t, int, const char *));
349 E char *FDECL(coyotename, (struct monst *,char *));
350
351 /* ### do_wear.c ### */
352
353 #ifdef USE_TRAMPOLI
354 E int NDECL(Armor_on);
355 E int NDECL(Boots_on);
356 E int NDECL(Gloves_on);
357 E int NDECL(Helmet_on);
358 E int FDECL(select_off, (struct obj *));
359 E int NDECL(take_off);
360 #endif
361 E void FDECL(off_msg, (struct obj *));
362 E void NDECL(set_wear);
363 E boolean FDECL(donning, (struct obj *));
364 E void NDECL(cancel_don);
365 E int NDECL(Armor_off);
366 E int NDECL(Armor_gone);
367 E int NDECL(Helmet_off);
368 E int NDECL(Gloves_off);
369 E int NDECL(Boots_off);
370 E int NDECL(Cloak_off);
371 E int NDECL(Shield_off);
372 #ifdef TOURIST
373 E int NDECL(Shirt_off);
374 #endif
375 E void NDECL(Amulet_off);
376 E void FDECL(Ring_on, (struct obj *));
377 E void FDECL(Ring_off, (struct obj *));
378 E void FDECL(Ring_gone, (struct obj *));
379 E void FDECL(Blindf_on, (struct obj *));
380 E void FDECL(Blindf_off, (struct obj *));
381 E int NDECL(dotakeoff);
382 E int NDECL(doremring);
383 E int FDECL(cursed, (struct obj *));
384 E int FDECL(armoroff, (struct obj *));
385 E int FDECL(canwearobj, (struct obj *, long *, BOOLEAN_P));
386 E int NDECL(dowear);
387 E int NDECL(doputon);
388 E void NDECL(find_ac);
389 E void NDECL(glibr);
390 E struct obj *FDECL(some_armor,(struct monst *));
391 E void FDECL(erode_armor, (struct monst *,BOOLEAN_P));
392 E struct obj *FDECL(stuck_ring, (struct obj *,int));
393 E struct obj *NDECL(unchanger);
394 E void NDECL(reset_remarm);
395 E int NDECL(doddoremarm);
396 E int FDECL(destroy_arm, (struct obj *));
397 E void FDECL(adj_abon, (struct obj *,SCHAR_P));
398
399 /* ### dog.c ### */
400
401 E void FDECL(initedog, (struct monst *));
402 E struct monst *FDECL(make_familiar, (struct obj *,XCHAR_P,XCHAR_P,BOOLEAN_P));
403 E struct monst *NDECL(makedog);
404 E void NDECL(update_mlstmv);
405 E void NDECL(losedogs);
406 E void FDECL(mon_arrive, (struct monst *,BOOLEAN_P));
407 E void FDECL(mon_catchup_elapsed_time, (struct monst *,long));
408 E void FDECL(keepdogs, (BOOLEAN_P));
409 E void FDECL(migrate_to_level, (struct monst *,XCHAR_P,XCHAR_P,coord *));
410 E int FDECL(dogfood, (struct monst *,struct obj *));
411 E struct monst *FDECL(tamedog, (struct monst *,struct obj *));
412 E void FDECL(abuse_dog, (struct monst *));
413 E void FDECL(wary_dog, (struct monst *, BOOLEAN_P));
414
415 /* ### dogmove.c ### */
416
417 E int FDECL(dog_nutrition, (struct monst *,struct obj *));
418 E int FDECL(dog_eat, (struct monst *,struct obj *,int,int,BOOLEAN_P));
419 E int FDECL(dog_move, (struct monst *,int));
420 #ifdef USE_TRAMPOLI
421 E void FDECL(wantdoor, (int,int,genericptr_t));
422 #endif
423
424 /* ### dokick.c ### */
425
426 E boolean FDECL(ghitm, (struct monst *,struct obj *));
427 E void FDECL(container_impact_dmg, (struct obj *));
428 E int NDECL(dokick);
429 E boolean FDECL(ship_object, (struct obj *,XCHAR_P,XCHAR_P,BOOLEAN_P));
430 E void NDECL(obj_delivery);
431 E schar FDECL(down_gate, (XCHAR_P,XCHAR_P));
432 E void FDECL(impact_drop, (struct obj *,XCHAR_P,XCHAR_P,XCHAR_P));
433
434 /* ### dothrow.c ### */
435
436 E int NDECL(dothrow);
437 E int NDECL(dofire);
438 E void FDECL(hitfloor, (struct obj *));
439 E void FDECL(hurtle, (int,int,int,BOOLEAN_P));
440 E void FDECL(mhurtle, (struct monst *,int,int,int));
441 E void FDECL(throwit, (struct obj *,long,BOOLEAN_P));
442 E int FDECL(omon_adj, (struct monst *,struct obj *,BOOLEAN_P));
443 E int FDECL(thitmonst, (struct monst *,struct obj *));
444 E int FDECL(hero_breaks, (struct obj *,XCHAR_P,XCHAR_P,BOOLEAN_P));
445 E int FDECL(breaks, (struct obj *,XCHAR_P,XCHAR_P));
446 E boolean FDECL(breaktest, (struct obj *));
447 E boolean FDECL(walk_path, (coord *, coord *, boolean (*)(genericptr_t,int,int), genericptr_t));
448 E boolean FDECL(hurtle_step, (genericptr_t, int, int));
449
450 /* ### drawing.c ### */
451 #endif /* !MAKEDEFS_C && !LEV_LEX_C */
452 E int FDECL(def_char_to_objclass, (CHAR_P));
453 E int FDECL(def_char_to_monclass, (CHAR_P));
454 #if !defined(MAKEDEFS_C) && !defined(LEV_LEX_C)
455 E void FDECL(assign_graphics, (uchar *,int,int,int));
456 E void FDECL(switch_graphics, (int));
457 #ifdef REINCARNATION
458 E void FDECL(assign_rogue_graphics, (BOOLEAN_P));
459 #endif
460
461 /* ### dungeon.c ### */
462
463 E void FDECL(save_dungeon, (int,BOOLEAN_P,BOOLEAN_P));
464 E void FDECL(restore_dungeon, (int));
465 E void FDECL(insert_branch, (branch *,BOOLEAN_P));
466 E void NDECL(init_dungeons);
467 E s_level *FDECL(find_level, (const char *));
468 E s_level *FDECL(Is_special, (d_level *));
469 E branch *FDECL(Is_branchlev, (d_level *));
470 E xchar FDECL(ledger_no, (d_level *));
471 E xchar NDECL(maxledgerno);
472 E schar FDECL(depth, (d_level *));
473 E xchar FDECL(dunlev, (d_level *));
474 E xchar FDECL(dunlevs_in_dungeon, (d_level *));
475 E xchar FDECL(ledger_to_dnum, (XCHAR_P));
476 E xchar FDECL(ledger_to_dlev, (XCHAR_P));
477 E xchar FDECL(deepest_lev_reached, (BOOLEAN_P));
478 E boolean FDECL(on_level, (d_level *,d_level *));
479 E void FDECL(next_level, (BOOLEAN_P));
480 E void FDECL(prev_level, (BOOLEAN_P));
481 E void FDECL(u_on_newpos, (int,int));
482 E void NDECL(u_on_sstairs);
483 E void NDECL(u_on_upstairs);
484 E void NDECL(u_on_dnstairs);
485 E boolean FDECL(On_stairs, (XCHAR_P,XCHAR_P));
486 E void FDECL(get_level, (d_level *,int));
487 E boolean FDECL(Is_botlevel, (d_level *));
488 E boolean FDECL(Can_fall_thru, (d_level *));
489 E boolean FDECL(Can_dig_down, (d_level *));
490 E boolean FDECL(Can_rise_up, (int,int,d_level *));
491 E boolean FDECL(In_quest, (d_level *));
492 E boolean FDECL(In_mines, (d_level *));
493 E branch *FDECL(dungeon_branch, (const char *));
494 E boolean FDECL(at_dgn_entrance, (const char *));
495 E boolean FDECL(In_hell, (d_level *));
496 E boolean FDECL(In_V_tower, (d_level *));
497 E boolean FDECL(On_W_tower_level, (d_level *));
498 E boolean FDECL(In_W_tower, (int,int,d_level *));
499 E void FDECL(find_hell, (d_level *));
500 E void FDECL(goto_hell, (BOOLEAN_P,BOOLEAN_P));
501 E void FDECL(assign_level, (d_level *,d_level *));
502 E void FDECL(assign_rnd_level, (d_level *,d_level *,int));
503 E int FDECL(induced_align, (int));
504 E boolean FDECL(Invocation_lev, (d_level *));
505 E xchar NDECL(level_difficulty);
506 E schar FDECL(lev_by_name, (const char *));
507 #ifdef WIZARD
508 E schar FDECL(print_dungeon, (BOOLEAN_P,schar *,xchar *));
509 #endif
510
511 /* ### eat.c ### */
512
513 #ifdef USE_TRAMPOLI
514 E int NDECL(eatmdone);
515 E int NDECL(eatfood);
516 E int NDECL(opentin);
517 E int NDECL(unfaint);
518 #endif
519 E boolean FDECL(is_edible, (struct obj *));
520 E void NDECL(init_uhunger);
521 E int NDECL(Hear_again);
522 E void NDECL(reset_eat);
523 E int NDECL(doeat);
524 E void NDECL(gethungry);
525 E void FDECL(morehungry, (int));
526 E void FDECL(lesshungry, (int));
527 E boolean NDECL(is_fainted);
528 E void NDECL(reset_faint);
529 E void NDECL(violated_vegetarian);
530 #if 0
531 E void NDECL(sync_hunger);
532 #endif
533 E void FDECL(newuhs, (BOOLEAN_P));
534 E struct obj *FDECL(floorfood, (const char *,int));
535 E void NDECL(vomit);
536 E int FDECL(eaten_stat, (int,struct obj *));
537 E void FDECL(food_disappears, (struct obj *));
538 E void FDECL(food_substitution, (struct obj *,struct obj *));
539 E void NDECL(fix_petrification);
540 E void FDECL(consume_oeaten, (struct obj *,int));
541 E boolean FDECL(maybe_finished_meal, (BOOLEAN_P));
542
543 /* ### end.c ### */
544
545 E void FDECL(done1, (int));
546 E int NDECL(done2);
547 #ifdef USE_TRAMPOLI
548 E void FDECL(done_intr, (int));
549 #endif
550 E void FDECL(done_in_by, (struct monst *));
551 #endif /* !MAKEDEFS_C && !LEV_LEX_C */
552 E void VDECL(panic, (const char *,...)) PRINTF_F(1,2);
553 #if !defined(MAKEDEFS_C) && !defined(LEV_LEX_C)
554 E void FDECL(done, (int));
555 E void FDECL(container_contents, (struct obj *,BOOLEAN_P,BOOLEAN_P));
556 E void FDECL(terminate, (int));
557 E int NDECL(num_genocides);
558
559 /* ### engrave.c ### */
560
561 E char *FDECL(random_engraving, (char *));
562 E void FDECL(wipeout_text, (char *,int,unsigned));
563 E boolean NDECL(can_reach_floor);
564 E const char *FDECL(surface, (int,int));
565 E const char *FDECL(ceiling, (int,int));
566 E struct engr *FDECL(engr_at, (XCHAR_P,XCHAR_P));
567 #ifdef ELBERETH
568 E int FDECL(sengr_at, (const char *,XCHAR_P,XCHAR_P));
569 #endif
570 E void FDECL(u_wipe_engr, (int));
571 E void FDECL(wipe_engr_at, (XCHAR_P,XCHAR_P,XCHAR_P));
572 E void FDECL(read_engr_at, (int,int));
573 E void FDECL(make_engr_at, (int,int,const char *,long,XCHAR_P));
574 E void FDECL(del_engr_at, (int,int));
575 E int NDECL(freehand);
576 E int NDECL(doengrave);
577 E void FDECL(save_engravings, (int,int));
578 E void FDECL(rest_engravings, (int));
579 E void FDECL(del_engr, (struct engr *));
580 E void FDECL(rloc_engr, (struct engr *));
581 E void FDECL(make_grave, (int,int,const char *));
582
583 /* ### exper.c ### */
584
585 E int FDECL(experience, (struct monst *,int));
586 E void FDECL(more_experienced, (int,int));
587 E void FDECL(losexp, (const char *));
588 E void NDECL(newexplevel);
589 E void FDECL(pluslvl, (BOOLEAN_P));
590 E long FDECL(rndexp, (BOOLEAN_P));
591
592 /* ### explode.c ### */
593
594 E void FDECL(explode, (int,int,int,int,CHAR_P,int));
595 E long FDECL(scatter, (int, int, int, unsigned int, struct obj *));
596 E void FDECL(splatter_burning_oil, (int, int));
597
598 /* ### extralev.c ### */
599
600 #ifdef REINCARNATION
601 E void NDECL(makeroguerooms);
602 E void FDECL(corr, (int,int));
603 E void NDECL(makerogueghost);
604 #endif
605
606 /* ### files.c ### */
607
608 E char *FDECL(fname_encode, (const char *, CHAR_P, char *, char *, int));
609 E char *FDECL(fname_decode, (CHAR_P, char *, char *, int));
610 E const char *FDECL(fqname, (const char *, int, int));
611 E FILE *FDECL(fopen_datafile, (const char *,const char *,int));
612 E boolean FDECL(uptodate, (int,const char *));
613 E void FDECL(store_version, (int));
614 #ifdef MFLOPPY
615 E void NDECL(set_lock_and_bones);
616 #endif
617 E void FDECL(set_levelfile_name, (char *,int));
618 E int FDECL(create_levelfile, (int,char *));
619 E int FDECL(open_levelfile, (int,char *));
620 E void FDECL(delete_levelfile, (int));
621 E void NDECL(clearlocks);
622 E int FDECL(create_bonesfile, (d_level*,char **, char *));
623 #ifdef MFLOPPY
624 E void NDECL(cancel_bonesfile);
625 #endif
626 E void FDECL(commit_bonesfile, (d_level *));
627 E int FDECL(open_bonesfile, (d_level*,char **));
628 E int FDECL(delete_bonesfile, (d_level*));
629 E void NDECL(compress_bonesfile);
630 E void NDECL(set_savefile_name);
631 #ifdef INSURANCE
632 E void FDECL(save_savefile_name, (int));
633 #endif
634 #if defined(WIZARD) && !defined(MICRO)
635 E void NDECL(set_error_savefile);
636 #endif
637 E int NDECL(create_savefile);
638 E int NDECL(open_savefile);
639 E int NDECL(delete_savefile);
640 E int NDECL(restore_saved_game);
641 E void FDECL(compress, (const char *));
642 E void FDECL(uncompress, (const char *));
643 E boolean FDECL(lock_file, (const char *,int,int));
644 E void FDECL(unlock_file, (const char *));
645 #ifdef USER_SOUNDS
646 E boolean FDECL(can_read_file, (const char *));
647 #endif
648 E void FDECL(read_config_file, (const char *));
649 E void FDECL(check_recordfile, (const char *));
650 #if defined(WIZARD)
651 E void NDECL(read_wizkit);
652 #endif
653 E void FDECL(paniclog, (const char *, const char *));
654 E int FDECL(validate_prefix_locations, (char *));
655 E char** NDECL(get_saved_games);
656 E void FDECL(free_saved_games, (char**));
657 #ifdef SELF_RECOVER
658 E boolean NDECL(recover_savefile);
659 #endif
660 #ifdef HOLD_LOCKFILE_OPEN
661 E void NDECL(really_close);
662 #endif
663
664 /* ### fountain.c ### */
665
666 E void FDECL(floating_above, (const char *));
667 E void FDECL(dogushforth, (int));
668 # ifdef USE_TRAMPOLI
669 E void FDECL(gush, (int,int,genericptr_t));
670 # endif
671 E void FDECL(dryup, (XCHAR_P,XCHAR_P, BOOLEAN_P));
672 E void NDECL(drinkfountain);
673 E void FDECL(dipfountain, (struct obj *));
674 #ifdef SINKS
675 E void FDECL(breaksink, (int,int));
676 E void NDECL(drinksink);
677 #endif
678
679 /* ### hack.c ### */
680
681 E boolean FDECL(revive_nasty, (int,int,const char*));
682 E void FDECL(movobj, (struct obj *,XCHAR_P,XCHAR_P));
683 E boolean FDECL(may_dig, (XCHAR_P,XCHAR_P));
684 E boolean FDECL(may_passwall, (XCHAR_P,XCHAR_P));
685 E boolean FDECL(bad_rock, (struct permonst *,XCHAR_P,XCHAR_P));
686 E boolean FDECL(invocation_pos, (XCHAR_P,XCHAR_P));
687 E boolean FDECL(test_move, (int, int, int, int, int));
688 E void NDECL(domove);
689 E void NDECL(invocation_message);
690 E void FDECL(spoteffects, (BOOLEAN_P));
691 E char *FDECL(in_rooms, (XCHAR_P,XCHAR_P,int));
692 E boolean FDECL(in_town, (int,int));
693 E void FDECL(check_special_room, (BOOLEAN_P));
694 E int NDECL(dopickup);
695 E void NDECL(lookaround);
696 E int NDECL(monster_nearby);
697 E void FDECL(nomul, (int));
698 E void FDECL(unmul, (const char *));
699 E void FDECL(losehp, (int,const char *,BOOLEAN_P));
700 E int NDECL(weight_cap);
701 E int NDECL(inv_weight);
702 E int NDECL(near_capacity);
703 E int FDECL(calc_capacity, (int));
704 E int NDECL(max_capacity);
705 E boolean FDECL(check_capacity, (const char *));
706 E int NDECL(inv_cnt);
707 #ifdef GOLDOBJ
708 E long FDECL(money_cnt, (struct obj *));
709 #endif
710
711 /* ### hacklib.c ### */
712
713 E boolean FDECL(digit, (CHAR_P));
714 E boolean FDECL(letter, (CHAR_P));
715 E char FDECL(highc, (CHAR_P));
716 E char FDECL(lowc, (CHAR_P));
717 E char *FDECL(lcase, (char *));
718 E char *FDECL(upstart, (char *));
719 E char *FDECL(mungspaces, (char *));
720 E char *FDECL(eos, (char *));
721 E char *FDECL(strkitten, (char *,CHAR_P));
722 E char *FDECL(s_suffix, (const char *));
723 E char *FDECL(xcrypt, (const char *,char *));
724 E boolean FDECL(onlyspace, (const char *));
725 E char *FDECL(tabexpand, (char *));
726 E char *FDECL(visctrl, (CHAR_P));
727 E const char *FDECL(ordin, (int));
728 E char *FDECL(sitoa, (int));
729 E int FDECL(sgn, (int));
730 E int FDECL(rounddiv, (long,int));
731 E int FDECL(dist2, (int,int,int,int));
732 E int FDECL(distmin, (int,int,int,int));
733 E boolean FDECL(online2, (int,int,int,int));
734 E boolean FDECL(pmatch, (const char *,const char *));
735 #ifndef STRNCMPI
736 E int FDECL(strncmpi, (const char *,const char *,int));
737 #endif
738 #ifndef STRSTRI
739 E char *FDECL(strstri, (const char *,const char *));
740 #endif
741 E boolean FDECL(fuzzymatch, (const char *,const char *,const char *,BOOLEAN_P));
742 E void NDECL(setrandom);
743 E int NDECL(getyear);
744 #if 0
745 E char *FDECL(yymmdd, (time_t));
746 #endif
747 E long FDECL(yyyymmdd, (time_t));
748 E int NDECL(phase_of_the_moon);
749 E boolean NDECL(friday_13th);
750 E int NDECL(night);
751 E int NDECL(midnight);
752
753 /* ### invent.c ### */
754
755 E void FDECL(assigninvlet, (struct obj *));
756 E struct obj *FDECL(merge_choice, (struct obj *,struct obj *));
757 E int FDECL(merged, (struct obj **,struct obj **));
758 #ifdef USE_TRAMPOLI
759 E int FDECL(ckunpaid, (struct obj *));
760 #endif
761 E void FDECL(addinv_core1, (struct obj *));
762 E void FDECL(addinv_core2, (struct obj *));
763 E struct obj *FDECL(addinv, (struct obj *));
764 E struct obj *FDECL(hold_another_object,
765                         (struct obj *,const char *,const char *,const char *));
766 E void FDECL(useupall, (struct obj *));
767 E void FDECL(useup, (struct obj *));
768 E void FDECL(consume_obj_charge, (struct obj *,BOOLEAN_P));
769 E void FDECL(freeinv_core, (struct obj *));
770 E void FDECL(freeinv, (struct obj *));
771 E void FDECL(delallobj, (int,int));
772 E void FDECL(delobj, (struct obj *));
773 E struct obj *FDECL(sobj_at, (int,int,int));
774 E struct obj *FDECL(carrying, (int));
775 E boolean NDECL(have_lizard);
776 E struct obj *FDECL(o_on, (unsigned int,struct obj *));
777 E boolean FDECL(obj_here, (struct obj *,int,int));
778 E boolean NDECL(wearing_armor);
779 E boolean FDECL(is_worn, (struct obj *));
780 E struct obj *FDECL(g_at, (int,int));
781 E struct obj *FDECL(mkgoldobj, (long));
782 E struct obj *FDECL(getobj, (const char *,const char *));
783 E int FDECL(ggetobj, (const char *,int (*)(OBJ_P),int,BOOLEAN_P,unsigned *));
784 E void FDECL(fully_identify_obj, (struct obj *));
785 E int FDECL(identify, (struct obj *));
786 E void FDECL(identify_pack, (int));
787 E int FDECL(askchain, (struct obj **,const char *,int,int (*)(OBJ_P),
788                         int (*)(OBJ_P),int,const char *));
789 E void FDECL(prinv, (const char *,struct obj *,long));
790 E char *FDECL(xprname, (struct obj *,const char *,CHAR_P,BOOLEAN_P,long,long));
791 E int NDECL(ddoinv);
792 E char FDECL(display_inventory, (const char *,BOOLEAN_P));
793 E int FDECL(display_binventory, (int,int,BOOLEAN_P));
794 E struct obj *FDECL(display_cinventory,(struct obj *));
795 E struct obj *FDECL(display_minventory,(struct monst *,int,char *));
796 E int NDECL(dotypeinv);
797 E const char *FDECL(dfeature_at, (int,int,char *));
798 E int FDECL(look_here, (int,BOOLEAN_P));
799 E int NDECL(dolook);
800 E boolean FDECL(will_feel_cockatrice, (struct obj *,BOOLEAN_P));
801 E void FDECL(feel_cockatrice, (struct obj *,BOOLEAN_P));
802 E void FDECL(stackobj, (struct obj *));
803 E int NDECL(doprgold);
804 E int NDECL(doprwep);
805 E int NDECL(doprarm);
806 E int NDECL(doprring);
807 E int NDECL(dopramulet);
808 E int NDECL(doprtool);
809 E int NDECL(doprinuse);
810 E void FDECL(useupf, (struct obj *,long));
811 E char *FDECL(let_to_name, (CHAR_P,BOOLEAN_P));
812 E void NDECL(free_invbuf);
813 E void NDECL(reassign);
814 E int NDECL(doorganize);
815 E int FDECL(count_unpaid, (struct obj *));
816 E int FDECL(count_buc, (struct obj *,int));
817 E void FDECL(carry_obj_effects, (struct obj *));
818 E const char *FDECL(currency, (long));
819 E void FDECL(silly_thing, (const char *,struct obj *));
820
821 /* ### ioctl.c ### */
822
823 #if defined(UNIX) || defined(__BEOS__)
824 E void NDECL(getwindowsz);
825 E void NDECL(getioctls);
826 E void NDECL(setioctls);
827 # ifdef SUSPEND
828 E int NDECL(dosuspend);
829 # endif /* SUSPEND */
830 #endif /* UNIX || __BEOS__ */
831
832 /* ### light.c ### */
833
834 E void FDECL(new_light_source, (XCHAR_P, XCHAR_P, int, int, genericptr_t));
835 E void FDECL(del_light_source, (int, genericptr_t));
836 E void FDECL(do_light_sources, (char **));
837 E struct monst *FDECL(find_mid, (unsigned, unsigned));
838 E void FDECL(save_light_sources, (int, int, int));
839 E void FDECL(restore_light_sources, (int));
840 E void FDECL(relink_light_sources, (BOOLEAN_P));
841 E void FDECL(obj_move_light_source, (struct obj *, struct obj *));
842 E boolean NDECL(any_light_source);
843 E void FDECL(snuff_light_source, (int, int));
844 E boolean FDECL(obj_sheds_light, (struct obj *));
845 E boolean FDECL(obj_is_burning, (struct obj *));
846 E void FDECL(obj_split_light_source, (struct obj *, struct obj *));
847 E void FDECL(obj_merge_light_sources, (struct obj *,struct obj *));
848 E int FDECL(candle_light_range, (struct obj *));
849 #ifdef WIZARD
850 E int NDECL(wiz_light_sources);
851 #endif
852
853 /* ### lock.c ### */
854
855 #ifdef USE_TRAMPOLI
856 E int NDECL(forcelock);
857 E int NDECL(picklock);
858 #endif
859 E boolean FDECL(picking_lock, (int *,int *));
860 E boolean FDECL(picking_at, (int,int));
861 E void NDECL(reset_pick);
862 E int FDECL(pick_lock, (struct obj *));
863 E int NDECL(doforce);
864 E boolean FDECL(boxlock, (struct obj *,struct obj *));
865 E boolean FDECL(doorlock, (struct obj *,int,int));
866 E int NDECL(doopen);
867 E int NDECL(doclose);
868
869 #ifdef MAC
870 /* These declarations are here because the main code calls them. */
871
872 /* ### macfile.c ### */
873
874 E int FDECL(maccreat, (const char *,long));
875 E int FDECL(macopen, (const char *,int,long));
876 E int FDECL(macclose, (int));
877 E int FDECL(macread, (int,void *,unsigned));
878 E int FDECL(macwrite, (int,void *,unsigned));
879 E long FDECL(macseek, (int,long,short));
880 E int FDECL(macunlink, (const char *));
881
882 /* ### macsnd.c ### */
883
884 E void FDECL(mac_speaker, (struct obj *,char *));
885
886 /* ### macunix.c ### */
887
888 E void FDECL(regularize, (char *));
889 E void NDECL(getlock);
890
891 /* ### macwin.c ### */
892
893 E void FDECL(lock_mouse_cursor, (Boolean));
894 E int NDECL(SanePositions);
895
896 /* ### mttymain.c ### */
897
898 E void FDECL(getreturn, (char *));
899 E void VDECL(msmsg, (const char *,...));
900 E void NDECL(gettty);
901 E void NDECL(setftty);
902 E void FDECL(settty, (const char *));
903 E int NDECL(tgetch);
904 E void FDECL(cmov, (int x, int y));
905 E void FDECL(nocmov, (int x, int y));
906
907 #endif /* MAC */
908
909 /* ### mail.c ### */
910
911 #ifdef MAIL
912 # ifdef UNIX
913 E void NDECL(getmailstatus);
914 # endif
915 E void NDECL(ckmailstatus);
916 E void FDECL(readmail, (struct obj *));
917 #endif /* MAIL */
918
919 /* ### makemon.c ### */
920
921 E boolean FDECL(is_home_elemental, (struct permonst *));
922 E struct monst *FDECL(clone_mon, (struct monst *,XCHAR_P,XCHAR_P));
923 E struct monst *FDECL(makemon, (struct permonst *,int,int,int));
924 E boolean FDECL(create_critters, (int,struct permonst *));
925 E struct permonst *NDECL(rndmonst);
926 E void FDECL(reset_rndmonst, (int));
927 E struct permonst *FDECL(mkclass, (CHAR_P,int));
928 E int FDECL(adj_lev, (struct permonst *));
929 E struct permonst *FDECL(grow_up, (struct monst *,struct monst *));
930 E int FDECL(mongets, (struct monst *,int));
931 E int FDECL(golemhp, (int));
932 E boolean FDECL(peace_minded, (struct permonst *));
933 E void FDECL(set_malign, (struct monst *));
934 E void FDECL(set_mimic_sym, (struct monst *));
935 E int FDECL(mbirth_limit, (int));
936 E void FDECL(mimic_hit_msg, (struct monst *, SHORT_P));
937 #ifdef GOLDOBJ
938 E void FDECL(mkmonmoney, (struct monst *, long));
939 #endif
940 E void FDECL(bagotricks, (struct obj *));
941 E boolean FDECL(propagate, (int, BOOLEAN_P,BOOLEAN_P));
942
943 /* ### mapglyph.c ### */
944
945 E void FDECL(mapglyph, (int, int *, int *, unsigned *, int, int));
946
947 /* ### mcastu.c ### */
948
949 E int FDECL(castmu, (struct monst *,struct attack *,BOOLEAN_P,BOOLEAN_P));
950 E int FDECL(buzzmu, (struct monst *,struct attack *));
951
952 /* ### mhitm.c ### */
953
954 E int FDECL(fightm, (struct monst *));
955 E int FDECL(mattackm, (struct monst *,struct monst *));
956 E int FDECL(noattacks, (struct permonst *));
957 E int FDECL(sleep_monst, (struct monst *,int,int));
958 E void FDECL(slept_monst, (struct monst *));
959 E long FDECL(attk_protection, (int));
960
961 /* ### mhitu.c ### */
962
963 E const char *FDECL(mpoisons_subj, (struct monst *,struct attack *));
964 E void NDECL(u_slow_down);
965 E struct monst *NDECL(cloneu);
966 E void FDECL(expels, (struct monst *,struct permonst *,BOOLEAN_P));
967 E struct attack *FDECL(getmattk, (struct permonst *,int,int *,struct attack *));
968 E int FDECL(mattacku, (struct monst *));
969 E int FDECL(magic_negation, (struct monst *));
970 E int FDECL(gazemu, (struct monst *,struct attack *));
971 E void FDECL(mdamageu, (struct monst *,int));
972 E int FDECL(could_seduce, (struct monst *,struct monst *,struct attack *));
973 #ifdef SEDUCE
974 E int FDECL(doseduce, (struct monst *));
975 #endif
976
977 /* ### minion.c ### */
978
979 E void FDECL(msummon, (struct monst *));
980 E void FDECL(summon_minion, (ALIGNTYP_P,BOOLEAN_P));
981 E int FDECL(demon_talk, (struct monst *));
982 E long FDECL(bribe, (struct monst *));
983 E int FDECL(dprince, (ALIGNTYP_P));
984 E int FDECL(dlord, (ALIGNTYP_P));
985 E int NDECL(llord);
986 E int FDECL(ndemon, (ALIGNTYP_P));
987 E int NDECL(lminion);
988
989 /* ### mklev.c ### */
990
991 #ifdef USE_TRAMPOLI
992 E int FDECL(do_comp, (genericptr_t,genericptr_t));
993 #endif
994 E void NDECL(sort_rooms);
995 E void FDECL(add_room, (int,int,int,int,BOOLEAN_P,SCHAR_P,BOOLEAN_P));
996 E void FDECL(add_subroom, (struct mkroom *,int,int,int,int,
997                            BOOLEAN_P,SCHAR_P,BOOLEAN_P));
998 E void NDECL(makecorridors);
999 E void FDECL(add_door, (int,int,struct mkroom *));
1000 E void NDECL(mklev);
1001 #ifdef SPECIALIZATION
1002 E void FDECL(topologize, (struct mkroom *,BOOLEAN_P));
1003 #else
1004 E void FDECL(topologize, (struct mkroom *));
1005 #endif
1006 E void FDECL(place_branch, (branch *,XCHAR_P,XCHAR_P));
1007 E boolean FDECL(occupied, (XCHAR_P,XCHAR_P));
1008 E int FDECL(okdoor, (XCHAR_P,XCHAR_P));
1009 E void FDECL(dodoor, (int,int,struct mkroom *));
1010 E void FDECL(mktrap, (int,int,struct mkroom *,coord*));
1011 E void FDECL(mkstairs, (XCHAR_P,XCHAR_P,CHAR_P,struct mkroom *));
1012 E void NDECL(mkinvokearea);
1013
1014 /* ### mkmap.c ### */
1015
1016 void FDECL(flood_fill_rm, (int,int,int,BOOLEAN_P,BOOLEAN_P));
1017 void FDECL(remove_rooms, (int,int,int,int));
1018
1019 /* ### mkmaze.c ### */
1020
1021 E void FDECL(wallification, (int,int,int,int));
1022 E void FDECL(walkfrom, (int,int));
1023 E void FDECL(makemaz, (const char *));
1024 E void FDECL(mazexy, (coord *));
1025 E void NDECL(bound_digging);
1026 E void FDECL(mkportal, (XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P));
1027 E boolean FDECL(bad_location, (XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P));
1028 E void FDECL(place_lregion, (XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P,
1029                              XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P,
1030                              XCHAR_P,d_level *));
1031 E void NDECL(movebubbles);
1032 E void NDECL(water_friction);
1033 E void FDECL(save_waterlevel, (int,int));
1034 E void FDECL(restore_waterlevel, (int));
1035 E const char *FDECL(waterbody_name, (XCHAR_P,XCHAR_P));
1036
1037 /* ### mkobj.c ### */
1038
1039 E struct obj *FDECL(mkobj_at, (CHAR_P,int,int,BOOLEAN_P));
1040 E struct obj *FDECL(mksobj_at, (int,int,int,BOOLEAN_P,BOOLEAN_P));
1041 E struct obj *FDECL(mkobj, (CHAR_P,BOOLEAN_P));
1042 E int NDECL(rndmonnum);
1043 E struct obj *FDECL(splitobj, (struct obj *,long));
1044 E void FDECL(replace_object, (struct obj *,struct obj *));
1045 E void FDECL(bill_dummy_object, (struct obj *));
1046 E struct obj *FDECL(mksobj, (int,BOOLEAN_P,BOOLEAN_P));
1047 E int FDECL(bcsign, (struct obj *));
1048 E int FDECL(weight, (struct obj *));
1049 E struct obj *FDECL(mkgold, (long,int,int));
1050 E struct obj *FDECL(mkcorpstat,
1051                 (int,struct monst *,struct permonst *,int,int,BOOLEAN_P));
1052 E struct obj *FDECL(obj_attach_mid, (struct obj *, unsigned));
1053 E struct monst *FDECL(get_mtraits, (struct obj *, BOOLEAN_P));
1054 E struct obj *FDECL(mk_tt_object, (int,int,int));
1055 E struct obj *FDECL(mk_named_object,
1056                         (int,struct permonst *,int,int,const char *));
1057 E struct obj *FDECL(rnd_treefruit_at, (int, int));
1058 E void FDECL(start_corpse_timeout, (struct obj *));
1059 E void FDECL(bless, (struct obj *));
1060 E void FDECL(unbless, (struct obj *));
1061 E void FDECL(curse, (struct obj *));
1062 E void FDECL(uncurse, (struct obj *));
1063 E void FDECL(blessorcurse, (struct obj *,int));
1064 E boolean FDECL(is_flammable, (struct obj *));
1065 E boolean FDECL(is_rottable, (struct obj *));
1066 E void FDECL(place_object, (struct obj *,int,int));
1067 E void FDECL(remove_object, (struct obj *));
1068 E void FDECL(discard_minvent, (struct monst *));
1069 E void FDECL(obj_extract_self, (struct obj *));
1070 E void FDECL(extract_nobj, (struct obj *, struct obj **));
1071 E void FDECL(extract_nexthere, (struct obj *, struct obj **));
1072 E int FDECL(add_to_minv, (struct monst *, struct obj *));
1073 E struct obj *FDECL(add_to_container, (struct obj *, struct obj *));
1074 E void FDECL(add_to_migration, (struct obj *));
1075 E void FDECL(add_to_buried, (struct obj *));
1076 E void FDECL(dealloc_obj, (struct obj *));
1077 E void FDECL(obj_ice_effects, (int, int, BOOLEAN_P));
1078 E long FDECL(peek_at_iced_corpse_age, (struct obj *));
1079 #ifdef WIZARD
1080 E void NDECL(obj_sanity_check);
1081 #endif
1082
1083 /* ### mkroom.c ### */
1084
1085 E void FDECL(mkroom, (int));
1086 E void FDECL(fill_zoo, (struct mkroom *));
1087 E boolean FDECL(nexttodoor, (int,int));
1088 E boolean FDECL(has_dnstairs, (struct mkroom *));
1089 E boolean FDECL(has_upstairs, (struct mkroom *));
1090 E int FDECL(somex, (struct mkroom *));
1091 E int FDECL(somey, (struct mkroom *));
1092 E boolean FDECL(inside_room, (struct mkroom *,XCHAR_P,XCHAR_P));
1093 E boolean FDECL(somexy, (struct mkroom *,coord *));
1094 E void FDECL(mkundead, (coord *,BOOLEAN_P,int));
1095 E struct permonst *NDECL(courtmon);
1096 E void FDECL(save_rooms, (int));
1097 E void FDECL(rest_rooms, (int));
1098 E struct mkroom *FDECL(search_special, (SCHAR_P));
1099
1100 /* ### mon.c ### */
1101
1102 E int FDECL(undead_to_corpse, (int));
1103 E int FDECL(genus, (int,int));
1104 E int FDECL(pm_to_cham, (int));
1105 E int FDECL(minliquid, (struct monst *));
1106 E int NDECL(movemon);
1107 E int FDECL(meatmetal, (struct monst *));
1108 E int FDECL(meatobj, (struct monst *));
1109 E void FDECL(mpickgold, (struct monst *));
1110 E boolean FDECL(mpickstuff, (struct monst *,const char *));
1111 E int FDECL(curr_mon_load, (struct monst *));
1112 E int FDECL(max_mon_load, (struct monst *));
1113 E boolean FDECL(can_carry, (struct monst *,struct obj *));
1114 E int FDECL(mfndpos, (struct monst *,coord *,long *,long));
1115 E boolean FDECL(monnear, (struct monst *,int,int));
1116 E void NDECL(dmonsfree);
1117 E int FDECL(mcalcmove, (struct monst*));
1118 E void NDECL(mcalcdistress);
1119 E void FDECL(replmon, (struct monst *,struct monst *));
1120 E void FDECL(relmon, (struct monst *));
1121 E struct obj *FDECL(mlifesaver, (struct monst *));
1122 E boolean FDECL(corpse_chance,(struct monst *,struct monst *,BOOLEAN_P));
1123 E void FDECL(mondead, (struct monst *));
1124 E void FDECL(mondied, (struct monst *));
1125 E void FDECL(mongone, (struct monst *));
1126 E void FDECL(monstone, (struct monst *));
1127 E void FDECL(monkilled, (struct monst *,const char *,int));
1128 E void FDECL(unstuck, (struct monst *));
1129 E void FDECL(killed, (struct monst *));
1130 E void FDECL(xkilled, (struct monst *,int));
1131 E void FDECL(mon_to_stone, (struct monst*));
1132 E void FDECL(mnexto, (struct monst *));
1133 E boolean FDECL(mnearto, (struct monst *,XCHAR_P,XCHAR_P,BOOLEAN_P));
1134 E void FDECL(poisontell, (int));
1135 E void FDECL(poisoned, (const char *,int,const char *,int));
1136 E void FDECL(m_respond, (struct monst *));
1137 E void FDECL(setmangry, (struct monst *));
1138 E void FDECL(wakeup, (struct monst *));
1139 E void NDECL(wake_nearby);
1140 E void FDECL(wake_nearto, (int,int,int));
1141 E void FDECL(seemimic, (struct monst *));
1142 E void NDECL(rescham);
1143 E void NDECL(restartcham);
1144 E void FDECL(restore_cham, (struct monst *));
1145 E void FDECL(mon_animal_list, (BOOLEAN_P));
1146 E int FDECL(newcham, (struct monst *,struct permonst *,BOOLEAN_P,BOOLEAN_P));
1147 E int FDECL(can_be_hatched, (int));
1148 E int FDECL(egg_type_from_parent, (int,BOOLEAN_P));
1149 E boolean FDECL(dead_species, (int,BOOLEAN_P));
1150 E void NDECL(kill_genocided_monsters);
1151 E void FDECL(golemeffects, (struct monst *,int,int));
1152 E boolean FDECL(angry_guards, (BOOLEAN_P));
1153 E void NDECL(pacify_guards);
1154
1155 /* ### mondata.c ### */
1156
1157 E void FDECL(set_mon_data, (struct monst *,struct permonst *,int));
1158 E struct attack *FDECL(attacktype_fordmg, (struct permonst *,int,int));
1159 E boolean FDECL(attacktype, (struct permonst *,int));
1160 E boolean FDECL(poly_when_stoned, (struct permonst *));
1161 E boolean FDECL(resists_drli, (struct monst *));
1162 E boolean FDECL(resists_magm, (struct monst *));
1163 E boolean FDECL(resists_blnd, (struct monst *));
1164 E boolean FDECL(can_blnd, (struct monst *,struct monst *,UCHAR_P,struct obj *));
1165 E boolean FDECL(ranged_attk, (struct permonst *));
1166 E boolean FDECL(hates_silver, (struct permonst *));
1167 E boolean FDECL(passes_bars, (struct permonst *));
1168 E boolean FDECL(can_track, (struct permonst *));
1169 E boolean FDECL(breakarm, (struct permonst *));
1170 E boolean FDECL(sliparm, (struct permonst *));
1171 E boolean FDECL(sticks, (struct permonst *));
1172 E int FDECL(num_horns, (struct permonst *));
1173 /* E boolean FDECL(canseemon, (struct monst *)); */
1174 E struct attack *FDECL(dmgtype_fromattack, (struct permonst *,int,int));
1175 E boolean FDECL(dmgtype, (struct permonst *,int));
1176 E int FDECL(max_passive_dmg, (struct monst *,struct monst *));
1177 E int FDECL(monsndx, (struct permonst *));
1178 E int FDECL(name_to_mon, (const char *));
1179 E int FDECL(gender, (struct monst *));
1180 E int FDECL(pronoun_gender, (struct monst *));
1181 E boolean FDECL(levl_follower, (struct monst *));
1182 E int FDECL(little_to_big, (int));
1183 E int FDECL(big_to_little, (int));
1184 E const char *FDECL(locomotion, (const struct permonst *,const char *));
1185 E const char *FDECL(stagger, (const struct permonst *,const char *));
1186 E const char *FDECL(on_fire, (struct permonst *,struct attack *));
1187 E const struct permonst *FDECL(raceptr, (struct monst *));
1188
1189 /* ### monmove.c ### */
1190
1191 E boolean FDECL(itsstuck, (struct monst *));
1192 E boolean FDECL(mb_trapped, (struct monst *));
1193 E void FDECL(mon_regen, (struct monst *,BOOLEAN_P));
1194 E int FDECL(dochugw, (struct monst *));
1195 E boolean FDECL(onscary, (int,int,struct monst *));
1196 E void FDECL(monflee, (struct monst *, int, BOOLEAN_P, BOOLEAN_P));
1197 E int FDECL(dochug, (struct monst *));
1198 E int FDECL(m_move, (struct monst *,int));
1199 E boolean FDECL(closed_door, (int,int));
1200 E boolean FDECL(accessible, (int,int));
1201 E void FDECL(set_apparxy, (struct monst *));
1202 E boolean FDECL(can_ooze, (struct monst *));
1203
1204 /* ### monst.c ### */
1205
1206 E void NDECL(monst_init);
1207
1208 /* ### monstr.c ### */
1209
1210 E void NDECL(monstr_init);
1211
1212 /* ### mplayer.c ### */
1213
1214 E struct monst *FDECL(mk_mplayer, (struct permonst *,XCHAR_P,
1215                                    XCHAR_P,BOOLEAN_P));
1216 E void FDECL(create_mplayers, (int,BOOLEAN_P));
1217 E void FDECL(mplayer_talk, (struct monst *));
1218
1219 #if defined(MICRO) || defined(WIN32)
1220
1221 /* ### msdos.c,os2.c,tos.c,winnt.c ### */
1222
1223 #  ifndef WIN32
1224 E int NDECL(tgetch);
1225 #  endif
1226 #  ifndef TOS
1227 E char NDECL(switchar);
1228 #  endif
1229 # ifndef __GO32__
1230 E long FDECL(freediskspace, (char *));
1231 #  ifdef MSDOS
1232 E int FDECL(findfirst_file, (char *));
1233 E int NDECL(findnext_file);
1234 E long FDECL(filesize_nh, (char *));
1235 #  else
1236 E int FDECL(findfirst, (char *));
1237 E int NDECL(findnext);
1238 E long FDECL(filesize, (char *));
1239 #  endif /* MSDOS */
1240 E char *NDECL(foundfile_buffer);
1241 # endif /* __GO32__ */
1242 E void FDECL(chdrive, (char *));
1243 # ifndef TOS
1244 E void NDECL(disable_ctrlP);
1245 E void NDECL(enable_ctrlP);
1246 # endif
1247 # if defined(MICRO) && !defined(WINNT)
1248 E void NDECL(get_scr_size);
1249 #  ifndef TOS
1250 E void FDECL(gotoxy, (int,int));
1251 #  endif
1252 # endif
1253 # ifdef TOS
1254 E int FDECL(_copyfile, (char *,char *));
1255 E int NDECL(kbhit);
1256 E void NDECL(set_colors);
1257 E void NDECL(restore_colors);
1258 #  ifdef SUSPEND
1259 E int NDECL(dosuspend);
1260 #  endif
1261 # endif /* TOS */
1262 # ifdef WIN32
1263 E char *FDECL(get_username, (int *));
1264 E void FDECL(nt_regularize, (char *));
1265 E int NDECL((*nt_kbhit));
1266 E void FDECL(Delay, (int));
1267 # endif /* WIN32 */
1268 #endif /* MICRO || WIN32 */
1269
1270 /* ### mthrowu.c ### */
1271
1272 E int FDECL(thitu, (int,int,struct obj *,const char *));
1273 E int FDECL(ohitmon, (struct monst *,struct obj *,int,BOOLEAN_P));
1274 E void FDECL(thrwmu, (struct monst *));
1275 E int FDECL(spitmu, (struct monst *,struct attack *));
1276 E int FDECL(breamu, (struct monst *,struct attack *));
1277 E boolean FDECL(linedup, (XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P));
1278 E boolean FDECL(lined_up, (struct monst *));
1279 E struct obj *FDECL(m_carrying, (struct monst *,int));
1280 E void FDECL(m_useup, (struct monst *,struct obj *));
1281 E void FDECL(m_throw, (struct monst *,int,int,int,int,int,struct obj *));
1282 E boolean FDECL(hits_bars, (struct obj **,int,int,int,int));
1283
1284 /* ### muse.c ### */
1285
1286 E boolean FDECL(find_defensive, (struct monst *));
1287 E int FDECL(use_defensive, (struct monst *));
1288 E int FDECL(rnd_defensive_item, (struct monst *));
1289 E boolean FDECL(find_offensive, (struct monst *));
1290 #ifdef USE_TRAMPOLI
1291 E int FDECL(mbhitm, (struct monst *,struct obj *));
1292 #endif
1293 E int FDECL(use_offensive, (struct monst *));
1294 E int FDECL(rnd_offensive_item, (struct monst *));
1295 E boolean FDECL(find_misc, (struct monst *));
1296 E int FDECL(use_misc, (struct monst *));
1297 E int FDECL(rnd_misc_item, (struct monst *));
1298 E boolean FDECL(searches_for_item, (struct monst *,struct obj *));
1299 E boolean FDECL(mon_reflects, (struct monst *,const char *));
1300 E boolean FDECL(ureflects, (const char *,const char *));
1301 E boolean FDECL(munstone, (struct monst *,BOOLEAN_P));
1302
1303 /* ### music.c ### */
1304
1305 E void NDECL(awaken_soldiers);
1306 E int FDECL(do_play_instrument, (struct obj *));
1307
1308 /* ### nhlan.c ### */
1309 #ifdef LAN_FEATURES
1310 E void NDECL(init_lan_features);
1311 E char *NDECL(lan_username);
1312 # ifdef LAN_MAIL
1313 E boolean NDECL(lan_mail_check);
1314 E void FDECL(lan_mail_read, (struct obj *));
1315 E void NDECL(lan_mail_init);
1316 E void NDECL(lan_mail_finish);
1317 E void NDECL(lan_mail_terminate);
1318 # endif
1319 #endif
1320
1321 /* ### nttty.c ### */
1322
1323 #ifdef WIN32CON
1324 E void NDECL(get_scr_size);
1325 E int NDECL(nttty_kbhit);
1326 E void NDECL(nttty_open);
1327 E void NDECL(nttty_rubout);
1328 E int NDECL(tgetch);
1329 E int FDECL(ntposkey,(int *, int *, int *));
1330 E void FDECL(set_output_mode, (int));
1331 E void NDECL(synch_cursor);
1332 #endif
1333
1334 /* ### o_init.c ### */
1335
1336 E void NDECL(init_objects);
1337 E int NDECL(find_skates);
1338 E void NDECL(oinit);
1339 E void FDECL(savenames, (int,int));
1340 E void FDECL(restnames, (int));
1341 E void FDECL(discover_object, (int,BOOLEAN_P,BOOLEAN_P));
1342 E void FDECL(undiscover_object, (int));
1343 E int NDECL(dodiscovered);
1344
1345 /* ### objects.c ### */
1346
1347 E void NDECL(objects_init);
1348
1349 /* ### objnam.c ### */
1350
1351 E char *FDECL(obj_typename, (int));
1352 E char *FDECL(simple_typename, (int));
1353 E boolean FDECL(obj_is_pname, (struct obj *));
1354 E char *FDECL(distant_name, (struct obj *,char *(*)(OBJ_P)));
1355 E char *FDECL(fruitname, (BOOLEAN_P));
1356 E char *FDECL(xname, (struct obj *));
1357 E char *FDECL(mshot_xname, (struct obj *));
1358 E boolean FDECL(the_unique_obj, (struct obj *obj));
1359 E char *FDECL(doname, (struct obj *));
1360 E boolean FDECL(not_fully_identified, (struct obj *));
1361 E char *FDECL(corpse_xname, (struct obj *,BOOLEAN_P));
1362 E char *FDECL(cxname, (struct obj *));
1363 E char *FDECL(killer_xname, (struct obj *));
1364 E const char *FDECL(singular, (struct obj *,char *(*)(OBJ_P)));
1365 E char *FDECL(an, (const char *));
1366 E char *FDECL(An, (const char *));
1367 E char *FDECL(The, (const char *));
1368 E char *FDECL(the, (const char *));
1369 E char *FDECL(aobjnam, (struct obj *,const char *));
1370 E char *FDECL(Tobjnam, (struct obj *,const char *));
1371 E char *FDECL(otense, (struct obj *,const char *));
1372 E char *FDECL(vtense, (const char *,const char *));
1373 E char *FDECL(Doname2, (struct obj *));
1374 E char *FDECL(yname, (struct obj *));
1375 E char *FDECL(Yname2, (struct obj *));
1376 E char *FDECL(ysimple_name, (struct obj *));
1377 E char *FDECL(Ysimple_name2, (struct obj *));
1378 E char *FDECL(makeplural, (const char *));
1379 E char *FDECL(makesingular, (const char *));
1380 E struct obj *FDECL(readobjnam, (char *,struct obj *,BOOLEAN_P));
1381 E int FDECL(rnd_class, (int,int));
1382 E const char *FDECL(cloak_simple_name, (struct obj *));
1383 E const char *FDECL(mimic_obj_name, (struct monst *));
1384
1385 /* ### options.c ### */
1386
1387 E boolean FDECL(match_optname, (const char *,const char *,int,BOOLEAN_P));
1388 E void NDECL(initoptions);
1389 E void FDECL(parseoptions, (char *,BOOLEAN_P,BOOLEAN_P));
1390 E int NDECL(doset);
1391 E int NDECL(dotogglepickup);
1392 E void NDECL(option_help);
1393 E void FDECL(next_opt, (winid,const char *));
1394 E int FDECL(fruitadd, (char *));
1395 E int FDECL(choose_classes_menu, (const char *,int,BOOLEAN_P,char *,char *));
1396 E void FDECL(add_menu_cmd_alias, (CHAR_P, CHAR_P));
1397 E char FDECL(map_menu_cmd, (CHAR_P));
1398 E void FDECL(assign_warnings, (uchar *));
1399 E char *FDECL(nh_getenv, (const char *));
1400 E void FDECL(set_duplicate_opt_detection, (int));
1401 E void FDECL(set_wc_option_mod_status, (unsigned long, int));
1402 E void FDECL(set_wc2_option_mod_status, (unsigned long, int));
1403 E void FDECL(set_option_mod_status, (const char *,int));
1404 #ifdef AUTOPICKUP_EXCEPTIONS
1405 E int FDECL(add_autopickup_exception, (const char *));
1406 E void NDECL(free_autopickup_exceptions);
1407 #endif /* AUTOPICKUP_EXCEPTIONS */
1408
1409 /* ### pager.c ### */
1410
1411 E int NDECL(dowhatis);
1412 E int NDECL(doquickwhatis);
1413 E int NDECL(doidtrap);
1414 E int NDECL(dowhatdoes);
1415 E char *FDECL(dowhatdoes_core,(CHAR_P, char *));
1416 E int NDECL(dohelp);
1417 E int NDECL(dohistory);
1418
1419 /* ### pcmain.c ### */
1420
1421 #if defined(MICRO) || defined(WIN32)
1422 # ifdef CHDIR
1423 E void FDECL(chdirx, (char *,BOOLEAN_P));
1424 # endif /* CHDIR */
1425 #endif /* MICRO || WIN32 */
1426
1427 /* ### pcsys.c ### */
1428
1429 #if defined(MICRO) || defined(WIN32)
1430 E void NDECL(flushout);
1431 E int NDECL(dosh);
1432 # ifdef MFLOPPY
1433 E void FDECL(eraseall, (const char *,const char *));
1434 E void FDECL(copybones, (int));
1435 E void NDECL(playwoRAMdisk);
1436 E int FDECL(saveDiskPrompt, (int));
1437 E void NDECL(gameDiskPrompt);
1438 # endif
1439 E void FDECL(append_slash, (char *));
1440 E void FDECL(getreturn, (const char *));
1441 # ifndef AMIGA
1442 E void VDECL(msmsg, (const char *,...));
1443 # endif
1444 E FILE *FDECL(fopenp, (const char *,const char *));
1445 #endif /* MICRO || WIN32 */
1446
1447 /* ### pctty.c ### */
1448
1449 #if defined(MICRO) || defined(WIN32)
1450 E void NDECL(gettty);
1451 E void FDECL(settty, (const char *));
1452 E void NDECL(setftty);
1453 E void VDECL(error, (const char *,...));
1454 #if defined(TIMED_DELAY) && defined(_MSC_VER)
1455 E void FDECL(msleep, (unsigned));
1456 #endif
1457 #endif /* MICRO || WIN32 */
1458
1459 /* ### pcunix.c ### */
1460
1461 #if defined(MICRO)
1462 E void FDECL(regularize, (char *));
1463 #endif /* MICRO */
1464 #if defined(PC_LOCKING)
1465 E void NDECL(getlock);
1466 #endif
1467
1468 /* ### pickup.c ### */
1469
1470 #ifdef GOLDOBJ
1471 E int FDECL(collect_obj_classes,
1472         (char *,struct obj *,BOOLEAN_P,boolean FDECL((*),(OBJ_P)), int *));
1473 #else
1474 E int FDECL(collect_obj_classes,
1475         (char *,struct obj *,BOOLEAN_P,BOOLEAN_P,boolean FDECL((*),(OBJ_P)), int *));
1476 #endif
1477 E void FDECL(add_valid_menu_class, (int));
1478 E boolean FDECL(allow_all, (struct obj *));
1479 E boolean FDECL(allow_category, (struct obj *));
1480 E boolean FDECL(is_worn_by_type, (struct obj *));
1481 #ifdef USE_TRAMPOLI
1482 E int FDECL(ck_bag, (struct obj *));
1483 E int FDECL(in_container, (struct obj *));
1484 E int FDECL(out_container, (struct obj *));
1485 #endif
1486 E int FDECL(pickup, (int));
1487 E int FDECL(pickup_object, (struct obj *, long, BOOLEAN_P));
1488 E int FDECL(query_category, (const char *, struct obj *, int,
1489                                 menu_item **, int));
1490 E int FDECL(query_objlist, (const char *, struct obj *, int,
1491                                 menu_item **, int, boolean (*)(OBJ_P)));
1492 E struct obj *FDECL(pick_obj, (struct obj *));
1493 E int NDECL(encumber_msg);
1494 E int NDECL(doloot);
1495 E int FDECL(use_container, (struct obj *,int));
1496 E int FDECL(loot_mon, (struct monst *,int *,boolean *));
1497 E const char *FDECL(safe_qbuf, (const char *,unsigned,
1498                                 const char *,const char *,const char *));
1499 E boolean FDECL(is_autopickup_exception, (struct obj *, BOOLEAN_P));
1500
1501 /* ### pline.c ### */
1502
1503 E void VDECL(pline, (const char *,...)) PRINTF_F(1,2);
1504 E void VDECL(Norep, (const char *,...)) PRINTF_F(1,2);
1505 E void NDECL(free_youbuf);
1506 E void VDECL(You, (const char *,...)) PRINTF_F(1,2);
1507 E void VDECL(Your, (const char *,...)) PRINTF_F(1,2);
1508 E void VDECL(You_feel, (const char *,...)) PRINTF_F(1,2);
1509 E void VDECL(You_cant, (const char *,...)) PRINTF_F(1,2);
1510 E void VDECL(You_hear, (const char *,...)) PRINTF_F(1,2);
1511 E void VDECL(pline_The, (const char *,...)) PRINTF_F(1,2);
1512 E void VDECL(There, (const char *,...)) PRINTF_F(1,2);
1513 E void VDECL(verbalize, (const char *,...)) PRINTF_F(1,2);
1514 E void VDECL(raw_printf, (const char *,...)) PRINTF_F(1,2);
1515 E void VDECL(impossible, (const char *,...)) PRINTF_F(1,2);
1516 E const char *FDECL(align_str, (ALIGNTYP_P));
1517 E void FDECL(mstatusline, (struct monst *));
1518 E void NDECL(ustatusline);
1519 E void NDECL(self_invis_message);
1520
1521 /* ### polyself.c ### */
1522
1523 E void NDECL(set_uasmon);
1524 E void NDECL(change_sex);
1525 E void FDECL(polyself, (BOOLEAN_P));
1526 E int FDECL(polymon, (int));
1527 E void NDECL(rehumanize);
1528 E int NDECL(dobreathe);
1529 E int NDECL(dospit);
1530 E int NDECL(doremove);
1531 E int NDECL(dospinweb);
1532 E int NDECL(dosummon);
1533 E int NDECL(dogaze);
1534 E int NDECL(dohide);
1535 E int NDECL(domindblast);
1536 E void FDECL(skinback, (BOOLEAN_P));
1537 E const char *FDECL(mbodypart, (struct monst *,int));
1538 E const char *FDECL(body_part, (int));
1539 E int NDECL(poly_gender);
1540 E void FDECL(ugolemeffects, (int,int));
1541
1542 /* ### potion.c ### */
1543
1544 E void FDECL(set_itimeout, (long *,long));
1545 E void FDECL(incr_itimeout, (long *,int));
1546 E void FDECL(make_confused, (long,BOOLEAN_P));
1547 E void FDECL(make_stunned, (long,BOOLEAN_P));
1548 E void FDECL(make_blinded, (long,BOOLEAN_P));
1549 E void FDECL(make_sick, (long, const char *, BOOLEAN_P,int));
1550 E void FDECL(make_vomiting, (long,BOOLEAN_P));
1551 E boolean FDECL(make_hallucinated, (long,BOOLEAN_P,long));
1552 E int NDECL(dodrink);
1553 E int FDECL(dopotion, (struct obj *));
1554 E int FDECL(peffects, (struct obj *));
1555 E void FDECL(healup, (int,int,BOOLEAN_P,BOOLEAN_P));
1556 E void FDECL(strange_feeling, (struct obj *,const char *));
1557 E void FDECL(potionhit, (struct monst *,struct obj *,BOOLEAN_P));
1558 E void FDECL(potionbreathe, (struct obj *));
1559 E boolean FDECL(get_wet, (struct obj *));
1560 E int NDECL(dodip);
1561 E void FDECL(djinni_from_bottle, (struct obj *));
1562 E struct monst *FDECL(split_mon, (struct monst *,struct monst *));
1563 E const char *NDECL(bottlename);
1564
1565 /* ### pray.c ### */
1566
1567 #ifdef USE_TRAMPOLI
1568 E int NDECL(prayer_done);
1569 #endif
1570 E int NDECL(dosacrifice);
1571 E boolean FDECL(can_pray, (BOOLEAN_P));
1572 E int NDECL(dopray);
1573 E const char *NDECL(u_gname);
1574 E int NDECL(doturn);
1575 E const char *NDECL(a_gname);
1576 E const char *FDECL(a_gname_at, (XCHAR_P x,XCHAR_P y));
1577 E const char *FDECL(align_gname, (ALIGNTYP_P));
1578 E const char *FDECL(halu_gname, (ALIGNTYP_P));
1579 E const char *FDECL(align_gtitle, (ALIGNTYP_P));
1580 E void FDECL(altar_wrath, (int,int));
1581
1582
1583 /* ### priest.c ### */
1584
1585 E int FDECL(move_special, (struct monst *,BOOLEAN_P,SCHAR_P,BOOLEAN_P,BOOLEAN_P,
1586                            XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P));
1587 E char FDECL(temple_occupied, (char *));
1588 E int FDECL(pri_move, (struct monst *));
1589 E void FDECL(priestini, (d_level *,struct mkroom *,int,int,BOOLEAN_P));
1590 E char *FDECL(priestname, (struct monst *,char *));
1591 E boolean FDECL(p_coaligned, (struct monst *));
1592 E struct monst *FDECL(findpriest, (CHAR_P));
1593 E void FDECL(intemple, (int));
1594 E void FDECL(priest_talk, (struct monst *));
1595 E struct monst *FDECL(mk_roamer, (struct permonst *,ALIGNTYP_P,
1596                                   XCHAR_P,XCHAR_P,BOOLEAN_P));
1597 E void FDECL(reset_hostility, (struct monst *));
1598 E boolean FDECL(in_your_sanctuary, (struct monst *,XCHAR_P,XCHAR_P));
1599 E void FDECL(ghod_hitsu, (struct monst *));
1600 E void NDECL(angry_priest);
1601 E void NDECL(clearpriests);
1602 E void FDECL(restpriest, (struct monst *,BOOLEAN_P));
1603
1604 /* ### quest.c ### */
1605
1606 E void NDECL(onquest);
1607 E void NDECL(nemdead);
1608 E void NDECL(artitouch);
1609 E boolean NDECL(ok_to_quest);
1610 E void FDECL(leader_speaks, (struct monst *));
1611 E void NDECL(nemesis_speaks);
1612 E void FDECL(quest_chat, (struct monst *));
1613 E void FDECL(quest_talk, (struct monst *));
1614 E void FDECL(quest_stat_check, (struct monst *));
1615 E void FDECL(finish_quest, (struct obj *));
1616
1617 /* ### questpgr.c ### */
1618
1619 E void NDECL(load_qtlist);
1620 E void NDECL(unload_qtlist);
1621 E short FDECL(quest_info, (int));
1622 E const char *NDECL(ldrname);
1623 E boolean FDECL(is_quest_artifact, (struct obj*));
1624 E void FDECL(com_pager, (int));
1625 E void FDECL(qt_pager, (int));
1626 E struct permonst *NDECL(qt_montype);
1627
1628 /* ### random.c ### */
1629
1630 #if defined(RANDOM) && !defined(__GO32__) /* djgpp has its own random */
1631 E void FDECL(srandom, (unsigned));
1632 E char *FDECL(initstate, (unsigned,char *,int));
1633 E char *FDECL(setstate, (char *));
1634 E long NDECL(random);
1635 #endif /* RANDOM */
1636
1637 /* ### read.c ### */
1638
1639 E int NDECL(doread);
1640 E boolean FDECL(is_chargeable, (struct obj *));
1641 E void FDECL(recharge, (struct obj *,int));
1642 E void FDECL(forget_objects, (int));
1643 E void FDECL(forget_levels, (int));
1644 E void NDECL(forget_traps);
1645 E void FDECL(forget_map, (int));
1646 E int FDECL(seffects, (struct obj *));
1647 #ifdef USE_TRAMPOLI
1648 E void FDECL(set_lit, (int,int,genericptr_t));
1649 #endif
1650 E void FDECL(litroom, (BOOLEAN_P,struct obj *));
1651 E void FDECL(do_genocide, (int));
1652 E void FDECL(punish, (struct obj *));
1653 E void NDECL(unpunish);
1654 E boolean FDECL(cant_create, (int *, BOOLEAN_P));
1655 #ifdef WIZARD
1656 E boolean NDECL(create_particular);
1657 #endif
1658
1659 /* ### rect.c ### */
1660
1661 E void NDECL(init_rect);
1662 E NhRect *FDECL(get_rect, (NhRect *));
1663 E NhRect *NDECL(rnd_rect);
1664 E void FDECL(remove_rect, (NhRect *));
1665 E void FDECL(add_rect, (NhRect *));
1666 E void FDECL(split_rects, (NhRect *,NhRect *));
1667
1668 /* ## region.c ### */
1669 E void NDECL(clear_regions);
1670 E void NDECL(run_regions);
1671 E boolean FDECL(in_out_region, (XCHAR_P,XCHAR_P));
1672 E boolean FDECL(m_in_out_region, (struct monst *,XCHAR_P,XCHAR_P));
1673 E void NDECL(update_player_regions);
1674 E void FDECL(update_monster_region, (struct monst *));
1675 E NhRegion *FDECL(visible_region_at, (XCHAR_P,XCHAR_P));
1676 E void FDECL(show_region, (NhRegion*, XCHAR_P, XCHAR_P));
1677 E void FDECL(save_regions, (int,int));
1678 E void FDECL(rest_regions, (int,BOOLEAN_P));
1679 E NhRegion* FDECL(create_gas_cloud, (XCHAR_P, XCHAR_P, int, int));
1680
1681 /* ### restore.c ### */
1682
1683 E void FDECL(inven_inuse, (BOOLEAN_P));
1684 E int FDECL(dorecover, (int));
1685 E void FDECL(trickery, (char *));
1686 E void FDECL(getlev, (int,int,XCHAR_P,BOOLEAN_P));
1687 E void NDECL(minit);
1688 E boolean FDECL(lookup_id_mapping, (unsigned, unsigned *));
1689 #ifdef ZEROCOMP
1690 E int FDECL(mread, (int,genericptr_t,unsigned int));
1691 #else
1692 E void FDECL(mread, (int,genericptr_t,unsigned int));
1693 #endif
1694
1695 /* ### rip.c ### */
1696
1697 E void FDECL(genl_outrip, (winid,int));
1698
1699 /* ### rnd.c ### */
1700
1701 E int FDECL(rn2, (int));
1702 E int FDECL(rnl, (int));
1703 E int FDECL(rnd, (int));
1704 E int FDECL(d, (int,int));
1705 E int FDECL(rne, (int));
1706 E int FDECL(rnz, (int));
1707
1708 /* ### role.c ### */
1709
1710 E boolean FDECL(validrole, (int));
1711 E boolean FDECL(validrace, (int, int));
1712 E boolean FDECL(validgend, (int, int, int));
1713 E boolean FDECL(validalign, (int, int, int));
1714 E int NDECL(randrole);
1715 E int FDECL(randrace, (int));
1716 E int FDECL(randgend, (int, int));
1717 E int FDECL(randalign, (int, int));
1718 E int FDECL(str2role, (char *));
1719 E int FDECL(str2race, (char *));
1720 E int FDECL(str2gend, (char *));
1721 E int FDECL(str2align, (char *));
1722 E boolean FDECL(ok_role, (int, int, int, int));
1723 E int FDECL(pick_role, (int, int, int, int));
1724 E boolean FDECL(ok_race, (int, int, int, int));
1725 E int FDECL(pick_race, (int, int, int, int));
1726 E boolean FDECL(ok_gend, (int, int, int, int));
1727 E int FDECL(pick_gend, (int, int, int, int));
1728 E boolean FDECL(ok_align, (int, int, int, int));
1729 E int FDECL(pick_align, (int, int, int, int));
1730 E void NDECL(role_init);
1731 E void NDECL(rigid_role_checks);
1732 E void NDECL(plnamesuffix);
1733 E const char *FDECL(Hello, (struct monst *));
1734 E const char *NDECL(Goodbye);
1735 E char *FDECL(build_plselection_prompt, (char *, int, int, int, int, int));
1736 E char *FDECL(root_plselection_prompt, (char *, int, int, int, int, int));
1737
1738 /* ### rumors.c ### */
1739
1740 E char *FDECL(getrumor, (int,char *, BOOLEAN_P));
1741 E void FDECL(outrumor, (int,int));
1742 E void FDECL(outoracle, (BOOLEAN_P, BOOLEAN_P));
1743 E void FDECL(save_oracles, (int,int));
1744 E void FDECL(restore_oracles, (int));
1745 E int FDECL(doconsult, (struct monst *));
1746
1747 /* ### save.c ### */
1748
1749 E int NDECL(dosave);
1750 #if defined(UNIX) || defined(VMS) || defined(__EMX__) || defined(WIN32)
1751 E void FDECL(hangup, (int));
1752 #endif
1753 E int NDECL(dosave0);
1754 #ifdef INSURANCE
1755 E void NDECL(savestateinlock);
1756 #endif
1757 #ifdef MFLOPPY
1758 E boolean FDECL(savelev, (int,XCHAR_P,int));
1759 E boolean FDECL(swapin_file, (int));
1760 E void NDECL(co_false);
1761 #else
1762 E void FDECL(savelev, (int,XCHAR_P,int));
1763 #endif
1764 E void FDECL(bufon, (int));
1765 E void FDECL(bufoff, (int));
1766 E void FDECL(bflush, (int));
1767 E void FDECL(bwrite, (int,genericptr_t,unsigned int));
1768 E void FDECL(bclose, (int));
1769 E void FDECL(savefruitchn, (int,int));
1770 E void NDECL(free_dungeons);
1771 E void NDECL(freedynamicdata);
1772
1773 /* ### shk.c ### */
1774
1775 #ifdef GOLDOBJ
1776 E long FDECL(money2mon, (struct monst *, long));
1777 E void FDECL(money2u, (struct monst *, long));
1778 #endif
1779 E char *FDECL(shkname, (struct monst *));
1780 E void FDECL(shkgone, (struct monst *));
1781 E void FDECL(set_residency, (struct monst *,BOOLEAN_P));
1782 E void FDECL(replshk, (struct monst *,struct monst *));
1783 E void FDECL(restshk, (struct monst *,BOOLEAN_P));
1784 E char FDECL(inside_shop, (XCHAR_P,XCHAR_P));
1785 E void FDECL(u_left_shop, (char *,BOOLEAN_P));
1786 E void FDECL(remote_burglary, (XCHAR_P,XCHAR_P));
1787 E void FDECL(u_entered_shop, (char *));
1788 E boolean FDECL(same_price, (struct obj *,struct obj *));
1789 E void NDECL(shopper_financial_report);
1790 E int FDECL(inhishop, (struct monst *));
1791 E struct monst *FDECL(shop_keeper, (CHAR_P));
1792 E boolean FDECL(tended_shop, (struct mkroom *));
1793 E void FDECL(delete_contents, (struct obj *));
1794 E void FDECL(obfree, (struct obj *,struct obj *));
1795 E void FDECL(home_shk, (struct monst *,BOOLEAN_P));
1796 E void FDECL(make_happy_shk, (struct monst *,BOOLEAN_P));
1797 E void FDECL(hot_pursuit, (struct monst *));
1798 E void FDECL(make_angry_shk, (struct monst *,XCHAR_P,XCHAR_P));
1799 E int NDECL(dopay);
1800 E boolean FDECL(paybill, (int));
1801 E void NDECL(finish_paybill);
1802 E struct obj *FDECL(find_oid, (unsigned));
1803 E long FDECL(contained_cost, (struct obj *,struct monst *,long,BOOLEAN_P, BOOLEAN_P));
1804 E long FDECL(contained_gold, (struct obj *));
1805 E void FDECL(picked_container, (struct obj *));
1806 E long FDECL(unpaid_cost, (struct obj *));
1807 E void FDECL(addtobill, (struct obj *,BOOLEAN_P,BOOLEAN_P,BOOLEAN_P));
1808 E void FDECL(splitbill, (struct obj *,struct obj *));
1809 E void FDECL(subfrombill, (struct obj *,struct monst *));
1810 E long FDECL(stolen_value, (struct obj *,XCHAR_P,XCHAR_P,BOOLEAN_P,BOOLEAN_P));
1811 E void FDECL(sellobj_state, (int));
1812 E void FDECL(sellobj, (struct obj *,XCHAR_P,XCHAR_P));
1813 E int FDECL(doinvbill, (int));
1814 E struct monst *FDECL(shkcatch, (struct obj *,XCHAR_P,XCHAR_P));
1815 E void FDECL(add_damage, (XCHAR_P,XCHAR_P,long));
1816 E int FDECL(repair_damage, (struct monst *,struct damage *,BOOLEAN_P));
1817 E int FDECL(shk_move, (struct monst *));
1818 E void FDECL(after_shk_move, (struct monst *));
1819 E boolean FDECL(is_fshk, (struct monst *));
1820 E void FDECL(shopdig, (int));
1821 E void FDECL(pay_for_damage, (const char *,BOOLEAN_P));
1822 E boolean FDECL(costly_spot, (XCHAR_P,XCHAR_P));
1823 E struct obj *FDECL(shop_object, (XCHAR_P,XCHAR_P));
1824 E void FDECL(price_quote, (struct obj *));
1825 E void FDECL(shk_chat, (struct monst *));
1826 E void FDECL(check_unpaid_usage, (struct obj *,BOOLEAN_P));
1827 E void FDECL(check_unpaid, (struct obj *));
1828 E void FDECL(costly_gold, (XCHAR_P,XCHAR_P,long));
1829 E boolean FDECL(block_door, (XCHAR_P,XCHAR_P));
1830 E boolean FDECL(block_entry, (XCHAR_P,XCHAR_P));
1831 E char *FDECL(shk_your, (char *,struct obj *));
1832 E char *FDECL(Shk_Your, (char *,struct obj *));
1833
1834 /* ### shknam.c ### */
1835
1836 E void FDECL(stock_room, (int,struct mkroom *));
1837 E boolean FDECL(saleable, (struct monst *,struct obj *));
1838 E int FDECL(get_shop_item, (int));
1839
1840 /* ### sit.c ### */
1841
1842 E void NDECL(take_gold);
1843 E int NDECL(dosit);
1844 E void NDECL(rndcurse);
1845 E void NDECL(attrcurse);
1846
1847 /* ### sounds.c ### */
1848
1849 E void NDECL(dosounds);
1850 E const char *FDECL(growl_sound, (struct monst *));
1851 E void FDECL(growl, (struct monst *));
1852 E void FDECL(yelp, (struct monst *));
1853 E void FDECL(whimper, (struct monst *));
1854 E void FDECL(beg, (struct monst *));
1855 E int NDECL(dotalk);
1856 #ifdef USER_SOUNDS
1857 E int FDECL(add_sound_mapping, (const char *));
1858 E void FDECL(play_sound_for_message, (const char *));
1859 #endif
1860
1861 /* ### sys/msdos/sound.c ### */
1862
1863 #ifdef MSDOS
1864 E int FDECL(assign_soundcard, (char *));
1865 #endif
1866
1867 /* ### sp_lev.c ### */
1868
1869 E boolean FDECL(check_room, (xchar *,xchar *,xchar *,xchar *,BOOLEAN_P));
1870 E boolean FDECL(create_room, (XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P,
1871                               XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P));
1872 E void FDECL(create_secret_door, (struct mkroom *,XCHAR_P));
1873 E boolean FDECL(dig_corridor, (coord *,coord *,BOOLEAN_P,SCHAR_P,SCHAR_P));
1874 E void FDECL(fill_room, (struct mkroom *,BOOLEAN_P));
1875 E boolean FDECL(load_special, (const char *));
1876
1877 /* ### spell.c ### */
1878
1879 #ifdef USE_TRAMPOLI
1880 E int NDECL(learn);
1881 #endif
1882 E int FDECL(study_book, (struct obj *));
1883 E void FDECL(book_disappears, (struct obj *));
1884 E void FDECL(book_substitution, (struct obj *,struct obj *));
1885 E void NDECL(age_spells);
1886 E int NDECL(docast);
1887 E int FDECL(spell_skilltype, (int));
1888 E int FDECL(spelleffects, (int,BOOLEAN_P));
1889 E void NDECL(losespells);
1890 E int NDECL(dovspell);
1891 E void FDECL(initialspell, (struct obj *));
1892
1893 /* ### steal.c ### */
1894
1895 #ifdef USE_TRAMPOLI
1896 E int NDECL(stealarm);
1897 #endif
1898 #ifdef GOLDOBJ
1899 E long FDECL(somegold, (long));
1900 #else
1901 E long NDECL(somegold);
1902 #endif
1903 E void FDECL(stealgold, (struct monst *));
1904 E void FDECL(remove_worn_item, (struct obj *,BOOLEAN_P));
1905 E int FDECL(steal, (struct monst *, char *));
1906 E int FDECL(mpickobj, (struct monst *,struct obj *));
1907 E void FDECL(stealamulet, (struct monst *));
1908 E void FDECL(mdrop_special_objs, (struct monst *));
1909 E void FDECL(relobj, (struct monst *,int,BOOLEAN_P));
1910 #ifdef GOLDOBJ
1911 E struct obj *FDECL(findgold, (struct obj *));
1912 #endif
1913
1914 /* ### steed.c ### */
1915
1916 #ifdef STEED
1917 E void NDECL(rider_cant_reach);
1918 E boolean FDECL(can_saddle, (struct monst *));
1919 E int FDECL(use_saddle, (struct obj *));
1920 E boolean FDECL(can_ride, (struct monst *));
1921 E int NDECL(doride);
1922 E boolean FDECL(mount_steed, (struct monst *, BOOLEAN_P));
1923 E void NDECL(exercise_steed);
1924 E void NDECL(kick_steed);
1925 E void FDECL(dismount_steed, (int));
1926 E void FDECL(place_monster, (struct monst *,int,int));
1927 #endif
1928
1929 /* ### teleport.c ### */
1930
1931 E boolean FDECL(goodpos, (int,int,struct monst *,unsigned));
1932 E boolean FDECL(enexto, (coord *,XCHAR_P,XCHAR_P,struct permonst *));
1933 E boolean FDECL(enexto_core, (coord *,XCHAR_P,XCHAR_P,struct permonst *,unsigned));
1934 E void FDECL(teleds, (int,int,BOOLEAN_P));
1935 E boolean FDECL(safe_teleds, (BOOLEAN_P));
1936 E boolean FDECL(teleport_pet, (struct monst *,BOOLEAN_P));
1937 E void NDECL(tele);
1938 E int NDECL(dotele);
1939 E void NDECL(level_tele);
1940 E void FDECL(domagicportal, (struct trap *));
1941 E void FDECL(tele_trap, (struct trap *));
1942 E void FDECL(level_tele_trap, (struct trap *));
1943 E void FDECL(rloc_to, (struct monst *,int,int));
1944 E boolean FDECL(rloc, (struct monst *, BOOLEAN_P));
1945 E boolean FDECL(tele_restrict, (struct monst *));
1946 E void FDECL(mtele_trap, (struct monst *, struct trap *,int));
1947 E int FDECL(mlevel_tele_trap, (struct monst *, struct trap *,BOOLEAN_P,int));
1948 E void FDECL(rloco, (struct obj *));
1949 E int NDECL(random_teleport_level);
1950 E boolean FDECL(u_teleport_mon, (struct monst *,BOOLEAN_P));
1951
1952 /* ### tile.c ### */
1953 #ifdef USE_TILES
1954 E void FDECL(substitute_tiles, (d_level *));
1955 #endif
1956
1957 /* ### timeout.c ### */
1958
1959 E void NDECL(burn_away_slime);
1960 E void NDECL(nh_timeout);
1961 E void FDECL(fall_asleep, (int, BOOLEAN_P));
1962 E void FDECL(attach_egg_hatch_timeout, (struct obj *));
1963 E void FDECL(attach_fig_transform_timeout, (struct obj *));
1964 E void FDECL(kill_egg, (struct obj *));
1965 E void FDECL(hatch_egg, (genericptr_t, long));
1966 E void FDECL(learn_egg_type, (int));
1967 E void FDECL(burn_object, (genericptr_t, long));
1968 E void FDECL(begin_burn, (struct obj *, BOOLEAN_P));
1969 E void FDECL(end_burn, (struct obj *, BOOLEAN_P));
1970 E void NDECL(do_storms);
1971 E boolean FDECL(start_timer, (long, SHORT_P, SHORT_P, genericptr_t));
1972 E long FDECL(stop_timer, (SHORT_P, genericptr_t));
1973 E void NDECL(run_timers);
1974 E void FDECL(obj_move_timers, (struct obj *, struct obj *));
1975 E void FDECL(obj_split_timers, (struct obj *, struct obj *));
1976 E void FDECL(obj_stop_timers, (struct obj *));
1977 E boolean FDECL(obj_is_local, (struct obj *));
1978 E void FDECL(save_timers, (int,int,int));
1979 E void FDECL(restore_timers, (int,int,BOOLEAN_P,long));
1980 E void FDECL(relink_timers, (BOOLEAN_P));
1981 #ifdef WIZARD
1982 E int NDECL(wiz_timeout_queue);
1983 E void NDECL(timer_sanity_check);
1984 #endif
1985
1986 /* ### topten.c ### */
1987
1988 E void FDECL(topten, (int));
1989 E void FDECL(prscore, (int,char **));
1990 E struct obj *FDECL(tt_oname, (struct obj *));
1991
1992 /* ### track.c ### */
1993
1994 E void NDECL(initrack);
1995 E void NDECL(settrack);
1996 E coord *FDECL(gettrack, (int,int));
1997
1998 /* ### trap.c ### */
1999
2000 E boolean FDECL(burnarmor,(struct monst *));
2001 E boolean FDECL(rust_dmg, (struct obj *,const char *,int,BOOLEAN_P,struct monst *));
2002 E void FDECL(grease_protect, (struct obj *,const char *,struct monst *));
2003 E struct trap *FDECL(maketrap, (int,int,int));
2004 E void FDECL(fall_through, (BOOLEAN_P));
2005 E struct monst *FDECL(animate_statue, (struct obj *,XCHAR_P,XCHAR_P,int,int *));
2006 E struct monst *FDECL(activate_statue_trap,
2007                         (struct trap *,XCHAR_P,XCHAR_P,BOOLEAN_P));
2008 E void FDECL(dotrap, (struct trap *, unsigned));
2009 E void FDECL(seetrap, (struct trap *));
2010 E int FDECL(mintrap, (struct monst *));
2011 E void FDECL(instapetrify, (const char *));
2012 E void FDECL(minstapetrify, (struct monst *,BOOLEAN_P));
2013 E void FDECL(selftouch, (const char *));
2014 E void FDECL(mselftouch, (struct monst *,const char *,BOOLEAN_P));
2015 E void NDECL(float_up);
2016 E void FDECL(fill_pit, (int,int));
2017 E int FDECL(float_down, (long, long));
2018 E int FDECL(fire_damage, (struct obj *,BOOLEAN_P,BOOLEAN_P,XCHAR_P,XCHAR_P));
2019 E void FDECL(water_damage, (struct obj *,BOOLEAN_P,BOOLEAN_P));
2020 E boolean NDECL(drown);
2021 E void FDECL(drain_en, (int));
2022 E int NDECL(dountrap);
2023 E int FDECL(untrap, (BOOLEAN_P));
2024 E boolean FDECL(chest_trap, (struct obj *,int,BOOLEAN_P));
2025 E void FDECL(deltrap, (struct trap *));
2026 E boolean FDECL(delfloortrap, (struct trap *));
2027 E struct trap *FDECL(t_at, (int,int));
2028 E void FDECL(b_trapped, (const char *,int));
2029 E boolean NDECL(unconscious);
2030 E boolean NDECL(lava_effects);
2031 E void FDECL(blow_up_landmine, (struct trap *));
2032 E int FDECL(launch_obj,(SHORT_P,int,int,int,int,int));
2033
2034 /* ### u_init.c ### */
2035
2036 E void NDECL(u_init);
2037
2038 /* ### uhitm.c ### */
2039
2040 E void FDECL(hurtmarmor,(struct monst *,int));
2041 E boolean FDECL(attack_checks, (struct monst *,struct obj *));
2042 E void FDECL(check_caitiff, (struct monst *));
2043 E schar FDECL(find_roll_to_hit, (struct monst *));
2044 E boolean FDECL(attack, (struct monst *));
2045 E boolean FDECL(hmon, (struct monst *,struct obj *,int));
2046 E int FDECL(damageum, (struct monst *,struct attack *));
2047 E void FDECL(missum, (struct monst *,struct attack *));
2048 E int FDECL(passive, (struct monst *,BOOLEAN_P,int,UCHAR_P));
2049 E void FDECL(passive_obj, (struct monst *,struct obj *,struct attack *));
2050 E void FDECL(stumble_onto_mimic, (struct monst *));
2051 E int FDECL(flash_hits_mon, (struct monst *,struct obj *));
2052
2053 /* ### unixmain.c ### */
2054
2055 #ifdef UNIX
2056 # ifdef PORT_HELP
2057 E void NDECL(port_help);
2058 # endif
2059 #endif /* UNIX */
2060
2061
2062 /* ### unixtty.c ### */
2063
2064 #if defined(UNIX) || defined(__BEOS__)
2065 E void NDECL(gettty);
2066 E void FDECL(settty, (const char *));
2067 E void NDECL(setftty);
2068 E void NDECL(intron);
2069 E void NDECL(introff);
2070 E void VDECL(error, (const char *,...)) PRINTF_F(1,2);
2071 #endif /* UNIX || __BEOS__ */
2072
2073 /* ### unixunix.c ### */
2074
2075 #ifdef UNIX
2076 E void NDECL(getlock);
2077 E void FDECL(regularize, (char *));
2078 # if defined(TIMED_DELAY) && !defined(msleep) && defined(SYSV)
2079 E void FDECL(msleep, (unsigned));
2080 # endif
2081 # ifdef SHELL
2082 E int NDECL(dosh);
2083 # endif /* SHELL */
2084 # if defined(SHELL) || defined(DEF_PAGER) || defined(DEF_MAILREADER)
2085 E int FDECL(child, (int));
2086 # endif
2087 #endif /* UNIX */
2088
2089 /* ### unixres.c ### */
2090
2091 #ifdef UNIX
2092 # ifdef GNOME_GRAPHICS 
2093 E int FDECL(hide_privileges, (BOOLEAN_P));
2094 # endif
2095 #endif /* UNIX */
2096
2097 /* ### vault.c ### */
2098
2099 E boolean FDECL(grddead, (struct monst *));
2100 E char FDECL(vault_occupied, (char *));
2101 E void NDECL(invault);
2102 E int FDECL(gd_move, (struct monst *));
2103 E void NDECL(paygd);
2104 E long NDECL(hidden_gold);
2105 E boolean NDECL(gd_sound);
2106
2107 /* ### version.c ### */
2108
2109 E char *FDECL(version_string, (char *));
2110 E char *FDECL(getversionstring, (char *));
2111 E int NDECL(doversion);
2112 E int NDECL(doextversion);
2113 #ifdef MICRO
2114 E boolean FDECL(comp_times, (long));
2115 #endif
2116 E boolean FDECL(check_version, (struct version_info *,
2117                                 const char *,BOOLEAN_P));
2118 E unsigned long FDECL(get_feature_notice_ver, (char *));
2119 E unsigned long NDECL(get_current_feature_ver);
2120 #ifdef RUNTIME_PORT_ID
2121 E void FDECL(append_port_id, (char *));
2122 #endif
2123
2124 /* ### video.c ### */
2125
2126 #ifdef MSDOS
2127 E int FDECL(assign_video, (char *));
2128 # ifdef NO_TERMS
2129 E void NDECL(gr_init);
2130 E void NDECL(gr_finish);
2131 # endif
2132 E void FDECL(tileview,(BOOLEAN_P));
2133 #endif
2134 #ifdef VIDEOSHADES
2135 E int FDECL(assign_videoshades, (char *));
2136 E int FDECL(assign_videocolors, (char *));
2137 #endif
2138
2139 /* ### vis_tab.c ### */
2140
2141 #ifdef VISION_TABLES
2142 E void NDECL(vis_tab_init);
2143 #endif
2144
2145 /* ### vision.c ### */
2146
2147 E void NDECL(vision_init);
2148 E int FDECL(does_block, (int,int,struct rm*));
2149 E void NDECL(vision_reset);
2150 E void FDECL(vision_recalc, (int));
2151 E void FDECL(block_point, (int,int));
2152 E void FDECL(unblock_point, (int,int));
2153 E boolean FDECL(clear_path, (int,int,int,int));
2154 E void FDECL(do_clear_area, (int,int,int,
2155                              void (*)(int,int,genericptr_t),genericptr_t));
2156
2157 #ifdef VMS
2158
2159 /* ### vmsfiles.c ### */
2160
2161 E int FDECL(vms_link, (const char *,const char *));
2162 E int FDECL(vms_unlink, (const char *));
2163 E int FDECL(vms_creat, (const char *,unsigned int));
2164 E int FDECL(vms_open, (const char *,int,unsigned int));
2165 E boolean FDECL(same_dir, (const char *,const char *));
2166 E int FDECL(c__translate, (int));
2167 E char *FDECL(vms_basename, (const char *));
2168
2169 /* ### vmsmail.c ### */
2170
2171 E unsigned long NDECL(init_broadcast_trapping);
2172 E unsigned long NDECL(enable_broadcast_trapping);
2173 E unsigned long NDECL(disable_broadcast_trapping);
2174 # if 0
2175 E struct mail_info *NDECL(parse_next_broadcast);
2176 # endif /*0*/
2177
2178 /* ### vmsmain.c ### */
2179
2180 E int FDECL(main, (int, char **));
2181 # ifdef CHDIR
2182 E void FDECL(chdirx, (const char *,BOOLEAN_P));
2183 # endif /* CHDIR */
2184
2185 /* ### vmsmisc.c ### */
2186
2187 E void NDECL(vms_abort);
2188 E void FDECL(vms_exit, (int));
2189
2190 /* ### vmstty.c ### */
2191
2192 E int NDECL(vms_getchar);
2193 E void NDECL(gettty);
2194 E void FDECL(settty, (const char *));
2195 E void FDECL(shuttty, (const char *));
2196 E void NDECL(setftty);
2197 E void NDECL(intron);
2198 E void NDECL(introff);
2199 E void VDECL(error, (const char *,...)) PRINTF_F(1,2);
2200 #ifdef TIMED_DELAY
2201 E void FDECL(msleep, (unsigned));
2202 #endif
2203
2204 /* ### vmsunix.c ### */
2205
2206 E void NDECL(getlock);
2207 E void FDECL(regularize, (char *));
2208 E int NDECL(vms_getuid);
2209 E boolean FDECL(file_is_stmlf, (int));
2210 E int FDECL(vms_define, (const char *,const char *,int));
2211 E int FDECL(vms_putenv, (const char *));
2212 E char *NDECL(verify_termcap);
2213 # if defined(CHDIR) || defined(SHELL) || defined(SECURE)
2214 E void NDECL(privoff);
2215 E void NDECL(privon);
2216 # endif
2217 # ifdef SHELL
2218 E int NDECL(dosh);
2219 # endif
2220 # if defined(SHELL) || defined(MAIL)
2221 E int FDECL(vms_doshell, (const char *,BOOLEAN_P));
2222 # endif
2223 # ifdef SUSPEND
2224 E int NDECL(dosuspend);
2225 # endif
2226
2227 #endif /* VMS */
2228
2229 /* ### weapon.c ### */
2230
2231 E int FDECL(hitval, (struct obj *,struct monst *));
2232 E int FDECL(dmgval, (struct obj *,struct monst *));
2233 E struct obj *FDECL(select_rwep, (struct monst *));
2234 E struct obj *FDECL(select_hwep, (struct monst *));
2235 E void FDECL(possibly_unwield, (struct monst *,BOOLEAN_P));
2236 E int FDECL(mon_wield_item, (struct monst *));
2237 E int NDECL(abon);
2238 E int NDECL(dbon);
2239 E int NDECL(enhance_weapon_skill);
2240 E void FDECL(unrestrict_weapon_skill, (int));
2241 E void FDECL(use_skill, (int,int));
2242 E void FDECL(add_weapon_skill, (int));
2243 E void FDECL(lose_weapon_skill, (int));
2244 E int FDECL(weapon_type, (struct obj *));
2245 E int NDECL(uwep_skill_type);
2246 E int FDECL(weapon_hit_bonus, (struct obj *));
2247 E int FDECL(weapon_dam_bonus, (struct obj *));
2248 E void FDECL(skill_init, (const struct def_skill *));
2249
2250 /* ### were.c ### */
2251
2252 E void FDECL(were_change, (struct monst *));
2253 E void FDECL(new_were, (struct monst *));
2254 E int FDECL(were_summon, (struct permonst *,BOOLEAN_P,int *,char *));
2255 E void NDECL(you_were);
2256 E void FDECL(you_unwere, (BOOLEAN_P));
2257
2258 /* ### wield.c ### */
2259
2260 E void FDECL(setuwep, (struct obj *));
2261 E void FDECL(setuqwep, (struct obj *));
2262 E void FDECL(setuswapwep, (struct obj *));
2263 E int NDECL(dowield);
2264 E int NDECL(doswapweapon);
2265 E int NDECL(dowieldquiver);
2266 E boolean FDECL(wield_tool, (struct obj *,const char *));
2267 E int NDECL(can_twoweapon);
2268 E void NDECL(drop_uswapwep);
2269 E int NDECL(dotwoweapon);
2270 E void NDECL(uwepgone);
2271 E void NDECL(uswapwepgone);
2272 E void NDECL(uqwepgone);
2273 E void NDECL(untwoweapon);
2274 E void FDECL(erode_obj, (struct obj *,BOOLEAN_P,BOOLEAN_P));
2275 E int FDECL(chwepon, (struct obj *,int));
2276 E int FDECL(welded, (struct obj *));
2277 E void FDECL(weldmsg, (struct obj *));
2278 E void FDECL(setmnotwielded, (struct monst *,struct obj *));
2279
2280 /* ### windows.c ### */
2281
2282 E void FDECL(choose_windows, (const char *));
2283 E char FDECL(genl_message_menu, (CHAR_P,int,const char *));
2284 E void FDECL(genl_preference_update, (const char *));
2285
2286 /* ### wizard.c ### */
2287
2288 E void NDECL(amulet);
2289 E int FDECL(mon_has_amulet, (struct monst *));
2290 E int FDECL(mon_has_special, (struct monst *));
2291 E int FDECL(tactics, (struct monst *));
2292 E void NDECL(aggravate);
2293 E void NDECL(clonewiz);
2294 E int NDECL(pick_nasty);
2295 E int FDECL(nasty, (struct monst*));
2296 E void NDECL(resurrect);
2297 E void NDECL(intervene);
2298 E void NDECL(wizdead);
2299 E void FDECL(cuss, (struct monst *));
2300
2301 /* ### worm.c ### */
2302
2303 E int NDECL(get_wormno);
2304 E void FDECL(initworm, (struct monst *,int));
2305 E void FDECL(worm_move, (struct monst *));
2306 E void FDECL(worm_nomove, (struct monst *));
2307 E void FDECL(wormgone, (struct monst *));
2308 E void FDECL(wormhitu, (struct monst *));
2309 E void FDECL(cutworm, (struct monst *,XCHAR_P,XCHAR_P,struct obj *));
2310 E void FDECL(see_wsegs, (struct monst *));
2311 E void FDECL(detect_wsegs, (struct monst *,BOOLEAN_P));
2312 E void FDECL(save_worm, (int,int));
2313 E void FDECL(rest_worm, (int));
2314 E void FDECL(place_wsegs, (struct monst *));
2315 E void FDECL(remove_worm, (struct monst *));
2316 E void FDECL(place_worm_tail_randomly, (struct monst *,XCHAR_P,XCHAR_P));
2317 E int FDECL(count_wsegs, (struct monst *));
2318 E boolean FDECL(worm_known, (struct monst *));
2319
2320 /* ### worn.c ### */
2321
2322 E void FDECL(setworn, (struct obj *,long));
2323 E void FDECL(setnotworn, (struct obj *));
2324 E void FDECL(mon_set_minvis, (struct monst *));
2325 E void FDECL(mon_adjust_speed, (struct monst *,int,struct obj *));
2326 E void FDECL(update_mon_intrinsics,
2327                 (struct monst *,struct obj *,BOOLEAN_P,BOOLEAN_P));
2328 E int FDECL(find_mac, (struct monst *));
2329 E void FDECL(m_dowear, (struct monst *,BOOLEAN_P));
2330 E struct obj *FDECL(which_armor, (struct monst *,long));
2331 E void FDECL(mon_break_armor, (struct monst *,BOOLEAN_P));
2332 E void FDECL(bypass_obj, (struct obj *));
2333 E void NDECL(clear_bypasses);
2334 E int FDECL(racial_exception, (struct monst *, struct obj *));
2335
2336 /* ### write.c ### */
2337
2338 E int FDECL(dowrite, (struct obj *));
2339
2340 /* ### zap.c ### */
2341
2342 E int FDECL(bhitm, (struct monst *,struct obj *));
2343 E void FDECL(probe_monster, (struct monst *));
2344 E boolean FDECL(get_obj_location, (struct obj *,xchar *,xchar *,int));
2345 E boolean FDECL(get_mon_location, (struct monst *,xchar *,xchar *,int));
2346 E struct monst *FDECL(get_container_location, (struct obj *obj, int *, int *));
2347 E struct monst *FDECL(montraits, (struct obj *,coord *));
2348 E struct monst *FDECL(revive, (struct obj *));
2349 E int FDECL(unturn_dead, (struct monst *));
2350 E void FDECL(cancel_item, (struct obj *));
2351 E boolean FDECL(drain_item, (struct obj *));
2352 E struct obj *FDECL(poly_obj, (struct obj *, int));
2353 E boolean FDECL(obj_resists, (struct obj *,int,int));
2354 E boolean FDECL(obj_shudders, (struct obj *));
2355 E void FDECL(do_osshock, (struct obj *));
2356 E int FDECL(bhito, (struct obj *,struct obj *));
2357 E int FDECL(bhitpile, (struct obj *,int (*)(OBJ_P,OBJ_P),int,int));
2358 E int FDECL(zappable, (struct obj *));
2359 E void FDECL(zapnodir, (struct obj *));
2360 E int NDECL(dozap);
2361 E int FDECL(zapyourself, (struct obj *,BOOLEAN_P));
2362 E boolean FDECL(cancel_monst, (struct monst *,struct obj *,
2363                                BOOLEAN_P,BOOLEAN_P,BOOLEAN_P));
2364 E void FDECL(weffects, (struct obj *));
2365 E int NDECL(spell_damage_bonus);
2366 E const char *FDECL(exclam, (int force));
2367 E void FDECL(hit, (const char *,struct monst *,const char *));
2368 E void FDECL(miss, (const char *,struct monst *));
2369 E struct monst *FDECL(bhit, (int,int,int,int,int (*)(MONST_P,OBJ_P),
2370                              int (*)(OBJ_P,OBJ_P),struct obj *));
2371 E struct monst *FDECL(boomhit, (int,int));
2372 E int FDECL(burn_floor_paper, (int,int,BOOLEAN_P,BOOLEAN_P));
2373 E void FDECL(buzz, (int,int,XCHAR_P,XCHAR_P,int,int));
2374 E void FDECL(melt_ice, (XCHAR_P,XCHAR_P));
2375 E int FDECL(zap_over_floor, (XCHAR_P,XCHAR_P,int,boolean *));
2376 E void FDECL(fracture_rock, (struct obj *));
2377 E boolean FDECL(break_statue, (struct obj *));
2378 E void FDECL(destroy_item, (int,int));
2379 E int FDECL(destroy_mitem, (struct monst *,int,int));
2380 E int FDECL(resist, (struct monst *,CHAR_P,int,int));
2381 E void NDECL(makewish);
2382
2383 #endif /* !MAKEDEFS_C && !LEV_LEX_C */
2384
2385 #undef E
2386
2387 #endif /* EXTERN_H */