OSDN Git Service

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