1 /* File: externs.h */
2 
3 /* Purpose: extern declarations (variables and functions) */
4 
5 /*
6  * Note that some files have their own header files
7  * (z-virt.h, z-util.h, z-form.h, term.h, random.h)
8  */
9 
10 
11 /*
12  * Automatically generated "variable" declarations
13  */
14 
15 /* tables.c */
16 extern const s16b ddd[9];
17 extern const s16b ddx[10];
18 extern const s16b ddy[10];
19 extern const s16b ddx_ddd[9];
20 extern const s16b ddy_ddd[9];
21 extern const s16b cdd[8];
22 extern const s16b ddx_cdd[8];
23 extern const s16b ddy_cdd[8];
24 extern const char hexsym[16];
25 extern cptr color_char;
26 extern const byte adj_mag_study[];
27 extern const byte adj_mag_mana[];
28 extern const byte adj_mag_fail[];
29 extern const byte adj_mag_stat[];
30 extern const byte adj_chr_gold[];
31 extern const byte adj_int_dev[];
32 extern const byte adj_wis_sav[];
33 extern const byte adj_dex_dis[];
34 extern const byte adj_int_dis[];
35 extern const byte adj_dex_ta[];
36 extern const byte adj_str_td[];
37 extern const byte adj_dex_th[];
38 extern const byte adj_str_wgt[];
39 extern const byte adj_str_hold[];
40 extern const byte adj_str_dig[];
41 extern const byte adj_str_blow[];
42 extern const byte adj_dex_blow[];
43 extern const byte adj_dex_safe[];
44 extern const byte adj_con_fix[];
45 extern const byte adj_con_mhp[];
46 extern const byte blows_table[12][12];
47 extern cptr owner_names[];
48 extern cptr owner_suffix[];
49 extern const byte extract_energy[200];
50 extern const s32b player_exp[PY_MAX_LEVEL];
51 extern player_sex sex_info[MAX_SEXES];
52 extern player_race race_info[MAX_RACES];
53 extern player_class class_info[MAX_CLASS];
54 extern player_magic magic_info[MAX_CLASS];
55 extern const u32b fake_spell_flags[4];
56 extern const byte realm_choices1[];
57 extern const byte realm_choices2[];
58 extern cptr realm_names[];
59 extern cptr spell_names[7][32];
60 extern const byte chest_traps[64];
61 extern cptr player_title[MAX_CLASS][PY_MAX_LEVEL / 5];
62 extern cptr color_names[16];
63 extern cptr color_seq[16];
64 extern cptr msg_names[MSG_MAX];
65 extern cptr stat_names[A_MAX];
66 extern cptr stat_names_reduced[A_MAX];
67 extern cptr window_flag_desc[WINDOW_CHOICE_MAX];
68 extern const int birth_options[OPT_BIRTH + 1];
69 extern const int server_options[OPT_BIRTH + 1];
70 extern cptr chaos_patrons[MAX_PATRON];
71 extern const int chaos_stats[MAX_PATRON];
72 extern const int chaos_rewards[MAX_PATRON][20];
73 extern const martial_arts ma_blows[MAX_MA];
74 extern cptr game_inscriptions[FEEL_MAX];
75 extern cptr silly_attacks[MAX_SILLY_ATTACK];
76 extern const rbm_type rbm_info[MAX_RBM];
77 extern const mutation_type mutations[MUT_SETS_MAX * MUT_PER_SET];
78 extern const mutation_type race_powers[MAX_RACE_POWERS];
79 
80 /* variable.c */
81 extern cptr copyright[5];
82 extern byte version_major;
83 extern byte version_minor;
84 extern byte version_patch;
85 extern byte version_extra;
86 extern byte sf_extra;
87 extern u32b sf_version;
88 extern u32b sf_xtra;
89 extern byte z_major;
90 extern byte z_minor;
91 extern byte z_patch;
92 extern u32b sf_when;
93 extern u16b sf_lives;
94 extern u16b sf_saves;
95 extern bool arg_fiddle;
96 extern bool arg_wizard;
97 extern bool arg_sound;
98 extern byte arg_graphics;
99 extern bool arg_bigtile;
100 extern bool arg_monochrome;
101 extern bool arg_force_original;
102 extern bool arg_force_roguelike;
103 extern bool character_generated;
104 extern bool character_dungeon;
105 extern bool character_loaded;
106 extern bool character_saved;
107 extern bool character_icky;
108 extern bool character_xtra;
109 extern u32b seed_flavor;
110 extern bool msg_flag;
111 extern s16b num_repro;
112 extern s32b turn;
113 extern s32b old_turn;
114 extern bool use_sound;
115 extern byte use_graphics;
116 extern bool use_bigtile;
117 extern bool use_transparency;
118 extern s16b signal_count;
119 extern s16b o_max;
120 extern s16b o_cnt;
121 extern s16b m_max;
122 extern s16b m_cnt;
123 extern s16b q_max;
124 extern s16b fld_max;
125 extern s16b fld_cnt;
126 extern s16b rg_max;
127 extern s16b rg_cnt;
128 extern s16b hack_m_idx;
129 extern int total_friends;
130 extern s32b total_friend_levels;
131 extern s32b friend_align;
132 extern s16b store_cache_num;
133 extern store_type **store_cache;
134 extern char summon_kin_type;
135 extern bool track_follow;
136 extern bool track_target;
137 extern byte hitpoint_warn;
138 extern byte delay_factor;
139 extern s16b autosave_freq;
140 extern byte autosave_t;
141 extern byte autosave_l;
142 extern bool cheat_peek;
143 extern bool cheat_hear;
144 extern bool cheat_room;
145 extern bool cheat_xtra;
146 extern bool cheat_know;
147 extern bool cheat_live;
148 extern bool fake_monochrome;
149 extern byte *mp_a;
150 extern char *mp_c;
151 extern byte *mp_ta;
152 extern char *mp_tc;
153 extern int player_uid;
154 extern int player_egid;
155 extern char player_name[32];
156 extern char player_base[32];
157 extern char savefile[1024];
158 extern s16b view_n;
159 extern s16b view_y[VIEW_MAX];
160 extern s16b view_x[VIEW_MAX];
161 extern s16b temp_n;
162 extern s16b temp_y[TEMP_MAX];
163 extern s16b temp_x[TEMP_MAX];
164 extern s16b lite_n;
165 extern s16b lite_y[LITE_MAX];
166 extern s16b lite_x[LITE_MAX];
167 extern s16b macro__num;
168 extern cptr *macro__pat;
169 extern cptr *macro__act;
170 extern bool *macro__cmd;
171 extern char *macro__buf;
172 extern option_type option_info[OPT_MAX];
173 extern u32b window_flag[ANGBAND_TERM_MAX];
174 extern u32b window_mask[ANGBAND_TERM_MAX];
175 extern u32b option_mask[ANGBAND_TERM_MAX];
176 extern term *angband_term[ANGBAND_TERM_MAX];
177 extern char angband_term_name[ANGBAND_TERM_MAX][16];
178 extern byte angband_color_table[256][4];
179 extern char angband_sound_name[SOUND_MAX][16];
180 extern cave_type *(*area_aux) (int, int);
181 extern pcave_type *(*parea_aux) (int, int);
182 extern u16b *temp_block[WILD_BLOCK_SIZE + 1];
183 extern blk_ptr *wild_cache;
184 extern int **wild_refcount;
185 extern u32b wc_cnt;
186 extern blk_ptr **wild_grid;
187 extern wild_type **wild;
188 extern u32b wild_seed;
189 extern wild_gen_data_type *wild_gen_data;
190 extern wild_choice_tree_type *wild_choice_tree;
191 extern bool (*in_bounds) (int, int);
192 extern bool (*in_bounds2) (int, int);
193 extern bool (*in_boundsp) (int, int);
194 extern region_type cave_data;
195 extern int cur_region;
196 extern maxima *z_info;
197 extern object_type *o_list;
198 extern monster_type *m_list;
199 extern field_type *fld_list;
200 extern region_type *rg_list;
201 extern region_info *ri_list;
202 extern u16b place_count;
203 extern place_type *place;
204 extern s16b alloc_kind_size;
205 extern alloc_entry *alloc_kind_table;
206 extern s16b alloc_race_size;
207 extern alloc_entry *alloc_race_table;
208 extern s16b alloc_ego_size;
209 extern alloc_entry *alloc_ego_table;
210 extern byte misc_to_attr[256];
211 extern char misc_to_char[256];
212 extern byte tval_to_attr[128];
213 extern char tval_to_char[128];
214 extern cptr keymap_act[KEYMAP_MODES][256];
215 extern player_type *p_ptr;
216 extern player_sex *sp_ptr;
217 extern player_race *rp_ptr;
218 extern player_class *cp_ptr;
219 extern player_magic *mp_ptr;
220 extern server_type *svr_ptr;
221 extern vault_type *v_info;
222 extern char *v_name;
223 extern char *v_text;
224 extern feature_type *f_info;
225 extern char *f_name;
226 extern char *f_text;
227 extern object_kind *k_info;
228 extern char *k_name;
229 extern char *k_text;
230 extern artifact_type *a_info;
231 extern char *a_name;
232 extern char *a_text;
233 extern ego_item_type *e_info;
234 extern char *e_name;
235 extern char *e_text;
236 extern monster_race *r_info;
237 extern char *r_name;
238 extern char *r_text;
239 extern field_thaum *t_info;
240 extern quest_type *quest;
241 extern cptr ANGBAND_SYS;
242 extern cptr ANGBAND_DIR;
243 extern cptr ANGBAND_DIR_APEX;
244 extern cptr ANGBAND_DIR_BONE;
245 extern cptr ANGBAND_DIR_DATA;
246 extern cptr ANGBAND_DIR_EDIT;
247 extern cptr ANGBAND_DIR_SCRIPT;
248 extern cptr ANGBAND_DIR_FILE;
249 extern cptr ANGBAND_DIR_HELP;
250 extern cptr ANGBAND_DIR_INFO;
251 extern cptr ANGBAND_DIR_PREF;
252 extern cptr ANGBAND_DIR_SAVE;
253 extern cptr ANGBAND_DIR_USER;
254 extern cptr ANGBAND_DIR_XTRA;
255 extern bool item_tester_full;
256 extern byte item_tester_tval;
257 extern bool (*item_tester_hook) (const object_type *o_ptr);
258 extern bool (*ang_sort_comp) (const vptr u, const vptr v, int a, int b);
259 extern void (*ang_sort_swap) (const vptr u, const vptr v, int a, int b);
260 extern s32b max_wild;
261 extern cptr gf_color[MAX_GF];
262 extern int owner_names_max;
263 extern int owner_suffix_max;
264 
265 /* birth.c */
266 extern void player_birth(void);
267 
268 /* cave.c */
269 extern int distance(int x1, int y1, int x2, int y2);
270 extern bool is_build(const cave_type *c_ptr);
271 extern bool is_trap(const cave_type *c_ptr);
272 extern bool is_visible_trap(const cave_type *c_ptr);
273 extern bool los(int x1, int y1, int x2, int y2);
274 extern void mmove_init(int x1, int y1, int x2, int y2);
275 extern void mmove(int *x, int *y, int x1, int y1);
276 extern bool projectable(int x1, int y1, int x2, int y2);
277 extern sint project_path(coord *gp, int x1, int y1, int x2, int y2, u16b flg);
278 extern bool in_ball_range(int x1, int y1, int x2, int y2);
279 extern bool in_disintegration_range(int x1, int y1, int x2, int y2);
280 extern void scatter(int *xp, int *yp, int x, int y, int d);
281 extern bool player_can_see_bold(int x, int y);
282 extern bool cave_valid_grid(const cave_type *c_ptr);
283 extern bool no_lite(void);
284 extern void move_cursor_relative(int col, int row);
285 extern void print_rel(char c, byte a, int x, int y);
286 extern void note_spot(int x, int y);
287 extern void do_cmd_view_map(void);
288 extern void forget_view(void);
289 extern errr vinfo_init(void);
290 extern void update_view(void);
291 extern void update_mon_lite(void);
292 extern void clear_mon_lite(void);
293 extern void forget_flow(void);
294 extern void update_flow(void);
295 extern void map_area(void);
296 extern void wiz_lite(void);
297 extern void change_wiz_lite(void);
298 extern void wiz_dark(void);
299 extern void cave_set_feat(int x, int y, int feat);
300 
301 /* cmd1.c */
302 extern int deadliness_calc(int attack_power);
303 extern long avg_dam(int attack_power, int dice_num, int dice_sides);
304 extern bool test_hit_fire(int chance, int ac, int vis);
305 extern bool test_hit_norm(int chance, int ac, int vis);
306 extern int tot_dam_aux(const object_type *o_ptr, const monster_type *m_ptr);
307 extern void search(void);
308 extern bool auto_pickup_okay(const object_type *o_ptr);
309 extern void py_pickup_aux(object_type *o_ptr);
310 extern void carry(int pickup);
311 extern void py_attack(int x, int y);
312 extern void move_player(int dir, int do_pickup);
313 extern void run_step(int dir);
314 
315 /* cmd2.c */
316 extern void do_cmd_go_up(void);
317 extern void do_cmd_go_down(void);
318 extern void do_cmd_search(void);
319 extern void do_cmd_toggle_search(void);
320 extern int count_traps(int *x, int *y, bool under);
321 extern void do_cmd_open(void);
322 extern void do_cmd_close(void);
323 extern void do_cmd_tunnel(void);
324 extern void do_cmd_disarm(void);
325 extern void do_cmd_alter(void);
326 extern void do_cmd_spike(void);
327 extern void do_cmd_walk(int pickup);
328 extern void do_cmd_stay(int pickup);
329 extern void do_cmd_run(void);
330 extern void do_cmd_rest(void);
331 extern void do_cmd_fire(void);
332 extern void do_cmd_fire_aux(int mult, object_type *o_ptr, const object_type *j_ptr);
333 extern void do_cmd_throw(void);
334 extern void do_cmd_throw_aux(int mult);
335 extern bool do_cmd_open_aux(int x, int y);
336 extern bool do_cmd_disarm_aux(cave_type *c_ptr, int dir);
337 
338 /* cmd3.c */
339 extern void do_cmd_inven(void);
340 extern void do_cmd_equip(void);
341 extern void do_cmd_wield(void);
342 extern void do_cmd_takeoff(void);
343 extern void do_cmd_drop(void);
344 extern bool destroy_item_aux(object_type *o_ptr, int amt);
345 extern void do_cmd_destroy(void);
346 extern void do_cmd_observe(void);
347 extern void do_cmd_uninscribe(void);
348 extern void do_cmd_inscribe(void);
349 extern void do_cmd_refill(void);
350 extern void do_cmd_target(void);
351 extern void do_cmd_look(void);
352 extern void do_cmd_locate(void);
353 extern bool ang_sort_comp_hook(const vptr u, const vptr v, int a, int b);
354 extern void ang_sort_swap_hook(const vptr u, const vptr v, int a, int b);
355 extern void do_cmd_query_symbol(void);
356 extern bool research_mon(void);
357 
358 /* cmd4.c */
359 extern void do_cmd_redraw(void);
360 extern void resize_map(void);
361 extern void redraw_window(void);
362 extern void do_cmd_messages(void);
363 extern void init_options(byte flags);
364 extern void do_cmd_options(byte flags);
365 extern void do_cmd_pref(void);
366 extern errr macro_dump(cptr fname);
367 extern errr keymap_dump(cptr fname);
368 extern void do_cmd_macros(void);
369 extern void do_cmd_visuals(void);
370 extern void do_cmd_colors(void);
371 extern void do_cmd_note(void);
372 extern void do_cmd_version(void);
373 extern void do_cmd_feeling(void);
374 extern void do_cmd_load_screen(void);
375 extern void do_cmd_save_screen(void);
376 extern bool do_cmd_knowledge_pets(int dummy);
377 extern void dump_town_info(FILE *fff, int town, bool ignore);
378 extern void do_cmd_knowledge(void);
379 extern void plural_aux(char *Name);
380 extern void do_cmd_checkquest(void);
381 extern void do_cmd_time(void);
382 
383 /* cmd5.c */
384 extern void do_cmd_browse(void);
385 extern void do_cmd_browse_aux(const object_type *o_ptr);
386 extern void do_cmd_study(void);
387 extern void do_cmd_cast(void);
388 extern void do_cmd_pray(void);
389 extern void do_cmd_pet(void);
390 
391 /* cmd6.c */
392 extern void do_cmd_eat_food(void);
393 extern void do_cmd_quaff_potion(void);
394 extern void do_cmd_read_scroll(void);
395 extern void do_cmd_aim_wand(void);
396 extern void do_cmd_use_staff(void);
397 extern void do_cmd_zap_rod(void);
398 extern void do_cmd_activate(void);
399 extern void do_cmd_rerate(void);
400 extern void ring_of_power(int dir);
401 
402 /* dungeon.c */
403 extern void sense_item(object_type *o_ptr, bool heavy, bool wield, bool msg);
404 extern void notice_lite_change(object_type *o_ptr);
405 extern bool psychometry(void);
406 extern void play_game(bool new_game);
407 
408 /* files.c */
409 extern s16b tokenize(char *buf, s16b num, char **tokens, int mode);
410 extern void display_player(int mode);
411 extern void do_cmd_character(void);
412 extern errr file_character(cptr name, bool full);
413 extern errr process_pref_file_command(char *buf);
414 extern errr process_pref_file(cptr fmt, ...);
415 extern void print_equippy(void);
416 extern errr check_load_init(void);
417 extern void likert(char *buf, uint max, cptr fmt, va_list *vp);
418 extern void player_flags(object_flags *of_ptr);
419 extern bool show_file(cptr name, cptr what, int line, int mode);
420 extern void do_cmd_help(void);
421 extern void process_player_name(bool sf);
422 extern void change_player_name(void);
423 extern void do_cmd_suicide(void);
424 extern void do_cmd_save_game(int is_autosave);
425 extern void do_cmd_save_and_exit(void);
426 extern errr get_rnd_line(cptr file_name, int entry, char *output);
427 extern void get_character_name(void);
428 
429 /* generate.c */
430 extern void place_closed_door(int x, int y);
431 extern void map_panel_size(void);
432 extern void inc_rating(int delta_rating);
433 extern void set_special(void);
434 extern void del_region(int rg_idx);
435 extern int unref_region(int rg_idx);
436 extern void incref_region(int rg_idx);
437 extern void set_region(int rg_idx);
438 extern void wipe_rg_list(void);
439 extern void create_region_aux(s16b *region, int x, int y, byte flags);
440 extern void generate_cave(void);
441 
442 /* init1.c */
443 extern errr init_w_info_txt(FILE *fp, char *buf);
444 extern errr init_t_info_txt(FILE *fp, char *buf);
445 
446 /* init2.c */
447 extern errr init_w_info(void);
448 extern errr init_t_info(void);
449 extern void init_file_paths(char *path);
450 extern void init_angband(void);
451 extern void cleanup_angband(void);
452 extern errr check_modification_date(int fd, cptr template_file);
453 
454 /* load.c */
455 extern errr rd_savefile_new(void);
456 
457 /* melee1.c */
458 /* melee2.c */
459 extern void flee_message(cptr m_name, u16b r_idx);
460 extern bool make_attack_normal(int m_idx);
461 extern bool make_attack_spell(int m_idx);
462 extern void process_monsters(int min_energy);
463 extern void reset_monsters(void);
464 extern void curse_equipment(int chance, int heavy_chance);
465 extern void mon_take_hit_mon(int m_idx, int dam, bool *fear, cptr note);
466 
467 /* monster1.c */
468 extern monster_race *monst_race(int r_idx);
469 extern cptr mon_race_name(const monster_race *r_ptr);
470 extern bool mon_name_cont(const monster_race *r_ptr, cptr str);
471 extern void roff_mon_top(int r_idx);
472 extern void screen_roff_mon(int r_idx, int remember);
473 extern void display_roff_mon(int r_idx);
474 extern void display_visible(void);
475 
476 /* monster2.c */
477 extern cptr horror_desc[MAX_SAN_HORROR];
478 extern cptr funny_desc[MAX_SAN_FUNNY];
479 extern cptr funny_comments[MAX_SAN_COMMENT];
480 extern void delete_monster_idx(int i);
481 extern void delete_monster(int x, int y);
482 extern void compact_monsters(int size);
483 extern void wipe_m_list(void);
484 extern void wipe_monsters(int rg_idx);
485 extern s16b m_pop(void);
486 extern void get_mon_num_prep(monster_hook_type monster_hook);
487 extern s16b get_mon_num(int level);
488 extern s16b get_filter_mon_num(int level, monster_hook_type monster_hook);
489 extern void monster_desc(char *desc, const monster_type *m_ptr, int mode,
490 						 int max);
491 extern void monster_fmt(char *buf, uint max, cptr fmt, va_list *vp);
492 extern void lore_do_probe(int m_idx);
493 extern void lore_treasure(int m_idx, int num_item, int num_gold);
494 extern void update_mon_vis(u16b r_idx, int increment);
495 extern void update_mon(int m_idx, bool full);
496 extern void update_monsters(bool full);
497 extern bool test_monster_square(cave_type *c_ptr, monster_race *r_ptr);
498 extern monster_type *place_monster_aux(int x, int y, int r_idx, bool slp, bool grp,
499 							  bool friendly, bool pet, bool summon);
500 extern bool place_monster(int x, int y, bool slp, bool grp, int deltalevel);
501 extern bool alloc_horde(int x, int y);
502 extern bool alloc_monster(int dis, bool slp, int delta_level);
503 extern bool summon_specific(int who, int x1, int y1, int lev, int type,
504 							bool group, bool friendly, bool pet);
505 extern monster_type *summon_named_creature(int x1, int y1, int r_idx, bool slp,
506 								  bool group_ok, bool pet);
507 extern monster_type *summon_cloned_creature(int x1, int y1, int r_idx, bool pet);
508 extern monster_type *multiply_monster(int m_idx, bool clone, bool friendly, bool pet);
509 extern void update_smart_learn(int m_idx, int what);
510 extern monster_type *place_monster_one(int x, int y, int r_idx, bool slp, bool friendly,
511 							  bool pet);
512 
513 /* monster3.c (currently in monster1.c) */
514 extern void set_friendly(monster_type *m_ptr);
515 extern void set_pet(monster_type *m_ptr);
516 extern void set_hostile(monster_type *m_ptr);
517 extern void anger_monster(monster_type *m_ptr);
518 extern bool are_enemies(const monster_type *m_ptr1, const monster_type *m_ptr2);
519 extern bool monster_living(const monster_race *r_ptr);
520 extern void change_shimmer(void);
521 extern void change_repair(void);
522 
523 /* flavor.c */
524 extern void get_table_name(char *out_string, bool quotes);
525 extern void flavor_init(void);
526 extern void object_desc(char *buf, const object_type *o_ptr, int pref,
527 						int mode, int size);
528 extern void object_fmt(char *buf, uint max, cptr fmt, va_list *vp);
529 extern void object_desc_store(char *buf, const object_type *o_ptr, int pref,
530 							  int mode, int size);
531 extern void object_store_fmt(char *buf, uint max, cptr fmt, va_list *vp);
532 
533 /* object1.c */
534 /* object2.c */
535 
536 extern void reset_visuals(void);
537 extern void object_flags_known(const object_type *o_ptr, object_flags *of_ptr);
538 extern void identify_fully_aux(const object_type *o_ptr);
539 extern s16b wield_slot(const object_type *o_ptr);
540 extern cptr mention_use(int i);
541 extern cptr describe_use(int i);
542 extern bool item_tester_hook_weapon(const object_type *o_ptr);
543 extern bool item_tester_hook_melee_weapon(const object_type *o_ptr);
544 extern bool item_tester_hook_nonsword(const object_type *o_ptr);
545 extern bool item_tester_hook_ammo(const object_type *o_ptr);
546 extern bool item_tester_hook_fletcher(const object_type *o_ptr);
547 extern bool item_tester_hook_armour(const object_type *o_ptr);
548 extern bool item_tester_hook_armour_no_acid(const object_type *o_ptr);
549 extern bool item_tester_hook_soft_armour(const object_type *o_ptr);
550 extern bool item_tester_hook_hard_armour(const object_type *o_ptr);
551 extern bool item_tester_hook_helm(const object_type *o_ptr);
552 extern bool item_tester_hook_pure_hard_armour(const object_type *o_ptr);
553 extern bool item_tester_hook_weapon_armour(const object_type *o_ptr);
554 extern bool item_tester_hook_wear(const object_type *o_ptr);
555 extern bool item_tester_hook_recharge(const object_type *o_ptr);
556 extern bool item_tester_hook_jewel(const object_type *o_ptr);
557 extern bool item_tester_hook_tval(const object_type *o_ptr, byte tval);
558 extern bool item_tester_hook_is_blessed(const object_type *o_ptr);
559 extern bool item_tester_hook_is_good(const object_type *o_ptr);
560 extern bool item_tester_hook_is_great(const object_type *o_ptr);
561 extern bool item_tester_hook_is_book(const object_type *o_ptr);
562 extern bool item_tester_okay(const object_type *o_ptr);
563 extern void display_inven(void);
564 extern void display_equip(void);
565 extern void show_list(s16b o_list_ptr, bool store);
566 extern void show_equip(bool store);
567 extern void toggle_inven_equip(void);
568 extern object_type *get_item(cptr pmt, cptr str, int mode);
569 extern void delete_held_object(s16b *o_idx_ptr, object_type *o_ptr);
570 extern void delete_dungeon_object(object_type *o_ptr);
571 extern void delete_object(int x, int y);
572 extern void delete_object_list(s16b *o_idx_ptr);
573 extern void drop_object_list(s16b *o_idx_ptr, int x, int y);
574 extern void compact_objects(int size);
575 extern void wipe_o_list(void);
576 extern void wipe_objects(int rg_idx);
577 extern object_type *add_object_list(s16b *o_idx_ptr, object_type *o_ptr);
578 extern void move_object(s16b *tgt_list_ptr, s16b *cur_list_ptr,
579 						object_type *o_ptr);
580 extern void swap_objects(object_type *o1_ptr, object_type *o2_ptr);
581 extern void get_obj_num_prep(object_hook_type object_hook);
582 extern s16b get_obj_num(int level, int min_level);
583 extern void object_known(object_type *o_ptr);
584 extern void object_aware(object_type *o_ptr);
585 extern void object_tried(object_type *o_ptr);
586 extern void object_mental(object_type *o_ptr);
587 extern s32b flag_cost(const object_type *o_ptr, int plusses);
588 extern s32b object_value(const object_type *o_ptr);
589 extern s32b object_value_real(const object_type *o_ptr);
590 extern void distribute_charges(object_type *o_ptr, object_type *q_ptr, int amt);
591 extern void reduce_charges(object_type *o_ptr, int amt);
592 extern bool object_similar(const object_type *o_ptr, const object_type *j_ptr);
593 extern void object_absorb(object_type *o_ptr, const object_type *j_ptr);
594 extern bool object_equal(const object_type *o_ptr, const object_type *j_ptr);
595 extern s16b lookup_kind(int tval, int sval);
596 extern s16b *look_up_list(object_type *o_ptr);
597 extern void object_wipe(object_type *o_ptr);
598 extern object_type *object_prep(int k_idx);
599 extern object_type *object_dup(const object_type *o_ptr);
600 extern void add_ego_flags(object_type *o_ptr, byte ego);
601 extern void add_ego_power(int power, object_type *o_ptr);
602 extern s16b m_bonus(int max, int level);
603 extern void apply_magic(object_type *o_ptr, int lev, int lev_dif, byte flags);
604 extern void init_match_hook(byte tval, byte sval);
605 extern byte kind_is_match(int k_idx);
606 extern void init_match_theme(obj_theme theme);
607 extern byte kind_is_theme(int k_idx);
608 extern object_type *make_object(int level, int delta_level, obj_theme *theme);
609 extern void place_specific_object(int x, int y, int level, int k_idx);
610 extern void place_object(int x, int y, bool good, bool great, int delta_level);
611 extern object_type *make_gold(int level, int coin_type);
612 extern void place_gold(int x, int y);
613 extern void drop_near(object_type *o_ptr, int chance, int x, int y);
614 extern void acquirement(int x1, int y1, int num, bool great, bool known);
615 extern object_type *get_list_item(s16b list_start, int number);
616 extern int get_item_position(s16b list_start, object_type *o_ptr);
617 extern int get_list_length(s16b list_start);
618 extern bool floor_item(object_type *o_ptr);
619 extern bool player_item(object_type *o_ptr);
620 extern void item_charges(object_type *o_ptr);
621 extern void item_describe(object_type *o_ptr);
622 extern void item_describe_roff(object_type *o_ptr);
623 extern void item_describe_faux(object_type *o_ptr);
624 extern object_type *item_split(object_type *o_ptr, int num);
625 extern void item_increase(object_type *o_ptr, int num);
626 extern void item_increase_silent(object_type *o_ptr, int num);
627 extern bool inven_carry_okay(const object_type *o_ptr);
628 extern object_type *reorder_objects_aux(object_type *q_ptr,
629 										object_comp comp_func, u16b o_idx);
630 extern object_type *inven_carry(object_type *o_ptr);
631 extern object_type *inven_takeoff(object_type *o_ptr);
632 extern void inven_drop(object_type *o_ptr, int amt);
633 extern cptr item_activation(const object_type *o_ptr);
634 extern void combine_pack(void);
635 extern void reorder_pack(void);
636 extern object_type *combine_pack_watch(object_type *o_ptr);
637 extern object_type *reorder_pack_watch(object_type *o_ptr);
638 extern bool can_player_destroy_object(object_type *o_ptr);
639 extern void display_koff(int k_idx);
640 extern object_type *test_floor(int *num, cave_type *c_ptr, int mode);
641 extern void show_floor(int x, int y);
642 
643 /* racial.c */
644 extern bool racial_aux(s16b min_level, int cost, int use_stat, int difficulty);
645 extern void do_cmd_racial_power(void);
646 
647 /* save.c */
648 extern bool save_player(void);
649 extern bool load_player(void);
650 
651 /* spells1.c */
652 extern void take_hit(int damage, cptr kb_str);
653 extern int dist_to_line(int x, int y, int x1, int y1, int x2, int y2);
654 extern bool project(int who, int rad, int x, int y, int dam, int typ, u16b flg);
655 
656 /* spells2.c */
657 extern void message_pain(int m_idx, int dam);
658 extern void self_knowledge(void);
659 extern bool detect_traps(bool ident);
660 extern void create_closed_door(int x, int y);
661 extern bool detect_doors(void);
662 extern bool detect_stairs(void);
663 extern bool detect_treasure(void);
664 extern bool detect_objects_gold(void);
665 extern bool detect_objects_normal(void);
666 extern bool detect_objects_magic(void);
667 extern bool detect_monsters_normal(void);
668 extern bool detect_monsters_invis(void);
669 extern bool detect_monsters_evil(void);
670 extern bool detect_monsters_xxx(u32b match_flag);
671 extern bool detect_monsters_string(cptr match);
672 extern bool detect_monsters_nonliving(void);
673 extern bool detect_monsters_living(void);
674 extern bool detect_all(void);
675 extern bool wall_stone(void);
676 extern bool speed_monsters(void);
677 extern bool slow_monsters(void);
678 extern bool sleep_monsters(void);
679 extern void aggravate_monsters(int who);
680 extern bool genocide(int player_cast);
681 extern bool mass_genocide(int player_cast);
682 extern bool probing(void);
683 extern bool banish_evil(int dist);
684 extern bool dispel_evil(int dam);
685 extern bool dispel_good(int dam);
686 extern bool dispel_undead(int dam);
687 extern bool dispel_monsters(int dam);
688 extern bool dispel_living(int dam);
689 extern bool dispel_demons(int dam);
690 extern bool raise_dead(int y, int x, bool pet);
691 extern bool turn_undead(void);
692 extern bool destroy_area(int x1, int y1, int r);
693 extern bool earthquake(int cx, int cy, int r);
694 extern void lite_room(int x1, int y1);
695 extern void unlite_room(int x1, int y1);
696 extern bool lite_area(int dam, int rad);
697 extern bool unlite_area(int dam, int rad);
698 extern bool fire_ball(int typ, int dir, int dam, int rad);
699 extern bool fire_bolt(int typ, int dir, int dam);
700 extern void call_chaos(void);
701 extern bool fire_beam(int typ, int dir, int dam);
702 extern bool fire_bolt_or_beam(int prob, int typ, int dir, int dam);
703 extern bool lite_line(int dir, int dam);
704 extern bool drain_life(int dir, int dam);
705 extern bool drain_gain_life(int dor, int dam);
706 extern bool death_ray(int dir, int plev);
707 extern bool wall_to_mud(int dir);
708 extern bool destroy_door(int dir);
709 extern bool disarm_trap(int dir);
710 extern bool wizard_lock(int dir);
711 extern bool heal_monster(int dir);
712 extern bool speed_monster(int dir);
713 extern bool slow_monster(int dir);
714 extern bool sleep_monster(int dir);
715 extern bool stasis_monster(int dir);	/* Like sleep, affects undead as well */
716 extern bool confuse_monster(int dir, int plev);
717 extern bool stun_monster(int dir, int plev);
718 extern bool fear_monster(int dir, int plev);
719 extern bool poly_monster(int dir);
720 extern bool clone_monster(int dir);
721 extern bool teleport_monster(int dir);
722 extern bool door_creation(void);
723 extern bool trap_creation(void);
724 extern bool glyph_creation(void);
725 extern bool destroy_doors_touch(void);
726 extern bool sleep_monsters_touch(void);
727 extern bool activate_ty_curse(bool stop_ty, int *count);
728 extern int activate_hi_summon(void);
729 extern int summon_cyber(int who, int x, int y);
730 extern void wall_breaker(void);
731 extern bool confuse_monsters(int dam);
732 extern bool charm_monsters(int dam);
733 extern bool charm_animals(int dam);
734 extern bool stun_monsters(int dam);
735 extern bool stasis_monsters(int dam);
736 extern bool banish_monsters(int dist);
737 extern bool turn_monsters(int dam);
738 extern bool turn_evil(int dam);
739 extern bool deathray_monsters(void);
740 extern bool charm_monster(int dir, int plev);
741 extern bool control_one_undead(int dir, int plev);
742 extern bool charm_animal(int dir, int plev);
743 extern bool starlite(void);
744 extern bool scatter_ball(int num, int typ, int dam, int rad);
745 extern void create_food(void);
746 extern void whirlwind_attack(void);
747 extern bool mindblast_monsters(int dam);
748 extern void report_magics(void);
749 extern bool teleport_swap(int dir);
750 extern bool project_hook(int typ, int dir, int dam, u16b flg);
751 extern bool project_hack(int typ, int dam);
752 
753 /* spells3.c */
754 extern bool teleport_away(int m_idx, int dis);
755 extern void teleport_to_player(int m_idx);
756 extern void teleport_player(int dis);
757 extern void teleport_player_to(int nx, int ny);
758 extern void teleport_player_level(void);
759 extern bool check_down_wild(void);
760 extern void recall_player(int turns);
761 extern void word_of_recall(void);
762 extern bool apply_disenchant(void);
763 extern void mutate_player(void);
764 extern void apply_nexus(const monster_type *m_ptr);
765 extern void phlogiston(void);
766 extern void brand_weapon(int brand_type);
767 extern void call_the_(void);
768 extern void fetch(int dir, int wgt, bool require_los);
769 extern void alter_reality(void);
770 extern bool warding_glyph(void);
771 extern bool explosive_rune(void);
772 extern void identify_pack(void);
773 extern bool remove_curse(void);
774 extern bool remove_all_curse(void);
775 extern bool alchemy(void);
776 extern void stair_creation(void);
777 extern bool enchant(object_type *o_ptr, int n, int eflag);
778 extern bool enchant_spell(int num_hit, int num_dam, int num_ac);
779 extern bool artifact_scroll(void);
780 extern bool ident_spell(void);
781 extern bool ident_scroll(int k_idx);
782 extern bool mundane_spell(void);
783 extern void identify_item(object_type *o_ptr);
784 extern bool identify_fully(void);
785 extern bool recharge(int num);
786 extern bool bless_weapon(void);
787 extern bool potion_smash_effect(int who, int x, int y, object_type *o_ptr);
788 extern void display_spell_list(void);
789 extern s16b spell_chance(int spell, int realm);
790 extern int spell_mana(int spell, int realm);
791 extern bool spell_okay(int spell, bool known, int realm);
792 extern void spell_info(char *p, int spell, int realm);
793 extern void print_spells(byte *spells, int num, int x, int y, int realm);
794 extern bool hates_acid(const object_type *o_ptr);
795 extern bool hates_elec(const object_type *o_ptr);
796 extern bool hates_fire(const object_type *o_ptr);
797 extern bool hates_cold(const object_type *o_ptr);
798 extern int set_acid_destroy(object_type *o_ptr);
799 extern int set_elec_destroy(object_type *o_ptr);
800 extern int set_fire_destroy(object_type *o_ptr);
801 extern int set_cold_destroy(object_type *o_ptr);
802 extern int inven_damage(inven_func typ, int perc);
803 extern bool rustproof(void);
804 extern bool curse_armor(void);
805 extern bool curse_weapon(void);
806 extern bool brand_bolts(void);
807 extern bool polymorph_monster(int x, int y);
808 extern bool dimension_door(void);
809 extern void map_wilderness(int radius, s32b x, s32b y);
810 extern void sanity_blast(const monster_type *m_ptr);
811 
812 /* store.c */
813 extern s32b price_item(object_type *o_ptr, bool flip);
814 extern bool allocate_store(store_type *st_ptr);
815 extern store_type *get_current_store(void);
816 extern void do_cmd_store(const field_type *f_ptr);
817 extern void store_init(int town_num, int store_num, byte store);
818 extern void place_sb(int greed, int max_cost);
819 extern bool do_standard_command(s16b c);
820 
821 /* bldg.c */
822 extern bool get_nightmare(int r_idx);
823 extern void have_nightmare(void);
824 extern bool test_gold(s32b cost);
825 extern bool build_has_quest(void);
826 extern void build_cmd_quest(int level);
827 extern void display_build(const field_type *f_ptr);
828 extern void do_cmd_bldg(const field_type *f_ptr);
829 extern bool compare_weapons(void);
830 extern bool enchant_item(s32b cost, bool to_hit, bool to_dam, bool to_ac, bool weap);
831 extern void building_recharge(s32b cost);
832 extern bool building_healer(void);
833 extern void record_aura(void);
834 extern bool building_magetower(int factor, bool display);
835 extern void gamble_help(void);
836 extern void gamble_in_between(void);
837 extern void gamble_craps(void);
838 extern void gamble_spin_wheel(void);
839 extern void gamble_dice_slots(void);
840 extern bool inn_rest(void);
841 extern void build_init(int town_num, int build_num, byte build_type);
842 
843 /* util.c */
844 extern void safe_setuid_drop(void);
845 extern void safe_setuid_grab(void);
846 extern void init_setuid(void);
847 extern void signals_ignore_tstp(void);
848 extern void signals_handle_tstp(void);
849 extern void signals_init(void);
850 extern bool assert_helper(cptr expr, cptr file, int line, bool result);
851 extern errr path_parse(char *buf, int max, cptr file);
852 extern void path_build(char *buf, int max, cptr path, cptr file);
853 extern FILE *my_fopen(cptr file, cptr mode);
854 extern FILE *my_fopen_temp(char *buf, int max);
855 extern errr my_fgets(FILE *fff, char *buf, huge n);
856 extern errr my_raw_fgets(FILE *fff, char *buf, huge n);
857 extern void my_fclose(FILE *fff);
858 extern errr fd_kill(cptr file);
859 extern errr fd_move(cptr file, cptr what);
860 extern int fd_make(cptr file, int mode);
861 extern int fd_open(cptr file, int flags);
862 extern errr fd_lock(int fd, int what);
863 extern errr fd_seek(int fd, huge n);
864 extern errr fd_read(int fd, char *buf, huge n);
865 extern errr fd_write(int fd, cptr buf, huge n);
866 extern errr fd_close(int fd);
867 extern int count_bits(u32b x);
868 extern sint macro_find_exact(cptr pat);
869 extern void macro_add(cptr pat, cptr act);
870 extern void flush(void);
871 extern void text_to_ascii(char *buf, cptr str);
872 extern void ascii_to_text(char *buf, cptr str);
873 extern char inkey(void);
874 extern s16b quark_add(cptr str);
875 extern s16b quark_fmt(cptr str, ...);
876 extern void quark_remove(s16b *i);
877 extern void quark_dup(s16b i);
878 extern cptr quark_str(s16b i);
879 extern errr quarks_init(void);
880 extern errr quarks_free(void);
881 extern byte get_msg_type_color(byte a);
882 extern s16b message_num(void);
883 extern cptr message_str(s16b age);
884 extern u16b message_type(s16b age);
885 extern byte message_color(s16b age);
886 extern errr message_color_define(u16b type, byte color);
887 extern void message_add(cptr str, u16b type);
888 extern errr messages_init(void);
889 extern void messages_free(void);
890 extern void set_message_type(char *buf, uint max, cptr fmt, va_list *vp);
891 extern void msgf(cptr fmt, ...);
892 extern void msg_effect(u16b type, s16b extra);
893 extern void message_flush(void);
894 extern bool is_a_vowel(int ch);
895 extern void request_command(int shopping);
896 extern void repeat_push(int what);
897 extern bool repeat_pull(int *what);
898 extern void repeat_clear(void);
899 extern void repeat_check(void);
900 
901 #ifdef PRIVATE_USER_PATH
902 extern void create_user_dirs(void);
903 #endif /* PRIVATE_USER_PATH */
904 
905 /* xtra1.c */
906 extern s16b modify_stat_value(int value, int amount);
907 extern void stat_format(char *buf, uint max, cptr fmt, va_list *vp);
908 extern void notice_stuff(void);
909 extern void update_stuff(void);
910 extern void redraw_stuff(void);
911 extern void window_stuff(void);
912 extern void handle_stuff(void);
913 extern void change_stuff(void);
914 bool player_save(int power);
915 extern void object_bonuses(const object_type *o_ptr, bonuses_type *b);
916 extern void object_bonuses_known(const object_type *o_ptr, bonuses_type *b);
917 
918 
919 /* effects.c */
920 extern bool inc_blind(int v);
921 extern bool clear_blind(void);
922 extern bool inc_confused(int v);
923 extern bool clear_confused(void);
924 extern bool inc_poisoned(int v);
925 extern bool clear_poisoned(void);
926 extern bool inc_afraid(int v);
927 extern bool clear_afraid(void);
928 extern bool inc_paralyzed(int v);
929 extern bool clear_paralyzed(void);
930 extern bool inc_image(int v);
931 extern bool clear_image(void);
932 extern bool inc_fast(int v);
933 extern bool clear_fast(void);
934 extern bool inc_slow(int v);
935 extern bool clear_slow(void);
936 extern bool inc_shield(int v);
937 extern bool inc_blessed(int v);
938 extern bool inc_hero(int v);
939 extern bool inc_shero(int v);
940 extern bool inc_protevil(int v);
941 extern bool inc_wraith_form(int v);
942 extern bool inc_tim_esp(int v);
943 extern bool clear_tim_esp(void);
944 extern bool inc_invuln(int v);
945 extern bool inc_tim_invis(int v);
946 extern bool inc_tim_infra(int v);
947 extern bool inc_oppose_acid(int v);
948 extern bool inc_oppose_elec(int v);
949 extern bool inc_oppose_fire(int v);
950 extern bool inc_oppose_cold(int v);
951 extern bool inc_oppose_pois(int v);
952 extern int res_acid_lvl(void);
953 extern int res_elec_lvl(void);
954 extern int res_fire_lvl(void);
955 extern int res_cold_lvl(void);
956 extern int res_pois_lvl(void);
957 extern int resist(int dam, int (*f_func) (void));
958 extern bool acid_dam(int dam, cptr kb_str);
959 extern bool elec_dam(int dam, cptr kb_str);
960 extern bool fire_dam(int dam, cptr kb_str);
961 extern bool cold_dam(int dam, cptr kb_str);
962 extern bool pois_dam(int dam, cptr kb_str, int pois);
963 extern bool inc_stun(int v);
964 extern bool clear_stun(void);
965 extern bool inc_cut(int v);
966 extern bool clear_cut(void);
967 extern bool set_food(int v);
968 extern bool inc_stat(int stat);
969 extern bool dec_stat(int stat, int amount, int permanent);
970 extern bool res_stat(int stat);
971 extern bool hp_player(int num);
972 extern bool do_dec_stat(int stat);
973 extern bool do_res_stat(int stat);
974 extern bool do_inc_stat(int stat);
975 extern bool restore_level(void);
976 extern bool lose_all_info(void);
977 extern void gain_exp(s32b amount);
978 extern void lose_exp(s32b amount);
979 extern void do_poly_self(void);
980 extern void make_noise(byte amount);
981 
982 extern void disturb(bool stop_search);
983 extern void notice_inven(void);
984 extern void notice_equip(void);
985 extern void notice_item(void);
986 
987 
988 /* xtra2.c */
989 extern void check_experience(void);
990 extern bool monster_death(int m_idx, bool explode);
991 extern bool mon_take_hit(int m_idx, int dam, bool *fear, cptr note);
992 extern void get_map_size(int *x, int *y);
993 extern bool panel_center(int x, int y);
994 extern bool change_panel(int dx, int dy);
995 extern void verify_panel(void);
996 extern cptr look_mon_desc(int m_idx);
997 extern void ang_sort_aux(vptr u, vptr v, int p, int q);
998 extern void ang_sort(vptr u, vptr v, int n);
999 extern bool target_able(int m_idx);
1000 extern bool target_okay(void);
1001 extern bool target_set(int mode);
1002 extern bool get_aim_dir(int *dp);
1003 extern bool get_hack_dir(int *dp);
1004 extern bool get_rep_dir(int *dp);
1005 extern int get_chaos_patron(void);
1006 extern void gain_level_reward(int chosen_reward);
1007 extern bool tgt_pt(int *x, int *y);
1008 extern void do_poly_wounds(void);
1009 extern int mon_damage_mod(const monster_type *m_ptr, int dam, int type);
1010 extern void exp_for_kill(const monster_race *r_ptr, s32b *new_exp,
1011 						 s32b *new_exp_frac);
1012 extern int stat_cap(int stat);
1013 extern int adjust_stat(int stat, int value, int amount);
1014 extern void health_track(int m_idx);
1015 extern void monster_race_track(int r_idx);
1016 extern void object_kind_track(int k_idx);
1017 
1018 
1019 /* mspells1.c */
1020 extern bool clean_shot(int x1, int y1, int x2, int y2, bool friendly);
1021 
1022 /* mspells2.c */
1023 extern bool monst_spell_monst(int m_idx);
1024 
1025 /* artifact.c */
1026 extern bool create_artifact(object_type *o_ptr, int level, bool a_scroll);
1027 extern void create_named_art(int a_idx, int x, int y);
1028 
1029 /* scores.c */
1030 extern bool display_scores_aux(int from, int to, int note,
1031 							   const high_score *score);
1032 extern void display_scores(int from, int to);
1033 extern void enter_score(void);
1034 extern void predict_score(void);
1035 extern void race_legends(void);
1036 extern void race_score(int race_num);
1037 extern void show_highclass(void);
1038 extern void ingame_score(bool *initialized, bool game_in_progress);
1039 extern void close_game(void);
1040 extern void exit_game_panic(void);
1041 
1042 /* mind.c */
1043 extern mindcraft_power mindcraft_powers[MINDCRAFT_MAX];
1044 extern void mindcraft_info(char *p, int power);
1045 extern void do_cmd_mindcraft(void);
1046 
1047 /* mutation.c */
1048 extern bool player_has_mut(int mutation);
1049 extern bool gain_mutation(int choose_mut);
1050 extern bool lose_mutation(int choose_mut);
1051 extern void dump_mutations(FILE *OutFile);
1052 extern bool do_cmd_knowledge_mutations(int dummy);
1053 extern int count_mutations(void);
1054 extern void mutation_power_aux(const mutation_type *mut_ptr);
1055 extern void mutation_random_aux(const mutation_type *mut_ptr);
1056 extern void mutation_effect(void);
1057 
1058 
1059 /* obj_kind.c */
1060 extern errr k_info_alloc(void);
1061 extern errr k_info_free(void);
1062 extern object_kind *k_info_add(object_kind *k_info_entry);
1063 extern byte get_object_level(const object_type *o_ptr);
1064 extern cptr get_object_name(const object_type *o_ptr);
1065 extern bool object_is_potion(const object_type *o_ptr);
1066 extern errr init_object_alloc(void);
1067 extern void k_info_reset(void);
1068 
1069 /* wild1.c and wild2.c */
1070 extern void select_town_name(char *name, int pop);
1071 extern const dun_gen_type *pick_dungeon_type(void);
1072 extern void light_dark_square(int y, int x, bool daytime);
1073 extern u16b init_choice_tree(wild_bound_box_type *bound, u16b type);
1074 extern u16b add_node_tree_root(wild_bound_box_type *bound, u16b type);
1075 extern void test_decision_tree(void);
1076 extern void repopulate_wilderness(void);
1077 extern void create_wilderness(void);
1078 extern void move_wild(void);
1079 extern void shift_in_bounds(int *x, int *y);
1080 extern byte the_floor(void);
1081 extern void change_level(int);
1082 extern int base_level(void);
1083 extern void wipe_all_list(void);
1084 extern dun_type *dungeon(void);
1085 extern void move_dun_level(int direction);
1086 extern int max_dun_level_reached(void);
1087 extern cptr building_name(byte build_type);
1088 extern void building_char(byte build_type, byte *a, char *c);
1089 extern cptr dungeon_type_name(u32b dun);
1090 
1091 
1092 /* avatar.c */
1093 extern cptr virtue[MAX_VIRTUE];
1094 extern void get_virtues(void);
1095 extern void chg_virtue(int virtue, int amount);
1096 extern void dump_virtues(FILE *OutFile);
1097 
1098 /* notes.c */
1099 extern cptr notes_file(void);
1100 extern void output_note(cptr final_note, ...);
1101 extern void add_note(char code, cptr note, ...);
1102 extern void add_note_type(int note_number);
1103 
1104 /* fields.c */
1105 extern void notice_field(field_type *f_ptr);
1106 extern cptr field_name(const field_type *f_ptr);
1107 extern void excise_field_idx(int fld_idx);
1108 extern void delete_field_ptr(field_type *f_ptr);
1109 extern void delete_field(int x, int y);
1110 extern void delete_field_location(cave_type *c_ptr);
1111 extern void compact_fields(int size);
1112 extern void wipe_f_list(void);
1113 extern void wipe_fields(int rg_idx);
1114 extern s16b f_pop(void);
1115 extern void field_wipe(field_type *f_ptr);
1116 extern void field_copy(field_type *f_ptr, field_type *j_ptr);
1117 extern s16b field_add(field_type *f_ptr, cave_type *c_ptr);
1118 extern void field_prep(field_type *f_ptr, s16b t_idx);
1119 extern void init_fields(void);
1120 extern field_type *field_is_type(const cave_type *c_ptr, byte typ);
1121 extern field_type *field_first_known(const cave_type *c_ptr, byte typ);
1122 extern u16b fields_have_flags(const cave_type *c_ptr, u16b info);
1123 extern bool field_detect_type(const cave_type *c_ptr, byte typ);
1124 extern void field_destroy_type(cave_type *c_ptr, byte typ);
1125 extern field_type *place_field(int x, int y, s16b t_idx);
1126 extern bool field_script_single(field_type *f_ptr, int action, cptr format, ...);
1127 extern void field_script_const(const field_type *f_ptr, int action, cptr format, ...);
1128 extern void field_script(cave_type *c_ptr, int action, cptr format, ...);
1129 extern bool field_script_special(cave_type *c_ptr, u16b t_idx, cptr format, ...);
1130 extern field_type *field_script_find(cave_type *c_ptr, int action, cptr format, ...);
1131 extern void process_fields(void);
1132 extern void test_field_data_integrity(void);
1133 extern void set_corpse_size(field_type *f_ptr, int size);
1134 extern void place_trap(int x, int y);
1135 extern void make_lockjam_door(int x, int y, int power, bool jam);
1136 extern bool monster_can_open(monster_race *r_ptr, int power);
1137 extern bool check_trap_hit(int power);
1138 extern bool dont_save(int power);
1139 extern void hit_trap(field_type *f_ptr);
1140 extern void evil_trap(void);
1141 extern void drop_random_item(void);
1142 extern void drain_lite(void);
1143 extern void drain_food(void);
1144 extern void drain_magic(void);
1145 extern void print_building_options(cptr strings[], int num);
1146 
1147 /* compress.c */
1148 extern void test_compress_module(void);
1149 
1150 /* quest.c */
1151 extern u16b q_pop(void);
1152 extern void discover_wild_quest(int q_num);
1153 extern u16b insert_dungeon_monster_quest(u16b r_idx, u16b num, u16b level);
1154 extern cptr describe_quest_location(cptr * dirn, int x, int y, bool known);
1155 extern void dump_castle_info(FILE *fff, int place);
1156 extern errr init_quests(void);
1157 extern void init_player_quests(void);
1158 extern void quest_discovery(void);
1159 extern bool is_special_level(int level);
1160 extern void activate_quests(int level);
1161 extern void trigger_quest_create(byte c_type, vptr data);
1162 extern void trigger_quest_complete(byte x_type, vptr data);
1163 extern quest_type *lookup_quest_building(const store_type *b_ptr);
1164 extern void reward_quest(quest_type *q_ptr);
1165 extern void request_quest(const store_type *b_ptr, int scale);
1166 extern bool do_cmd_knowledge_quests(int dummy);
1167 
1168 /* maid-grf.c */
1169 extern void init_term_callbacks(void);
1170 extern void free_term_callbacks(void);
1171 extern void init_overhead_map(void);
1172 extern void del_overhead_map(void);
1173 extern void display_dungeon(void);
1174 extern void lite_spot(int x, int y);
1175 extern void prt_map(void);
1176 extern void display_map(int *cx, int *cy);
1177 extern void update_overhead_map(void);
1178 extern void Term_erase_map(void);
1179 extern void Term_move_player(void);
1180 extern void Term_write_equipment(void);
1181 extern void Term_write_list(s16b o_idx, byte list_type);
1182 
1183 /* ui.c */
1184 extern void center_string(char *buf, uint max, cptr fmt, va_list *vp);
1185 extern void binary_fmt(char *buf, uint max, cptr fmt, va_list *vp);
1186 extern void fmt_clean(char *buf);
1187 extern int get_player_choice(cptr *choices, int num, int col, int wid,
1188                              cptr helpfile, void (*hook) (cptr));
1189 extern int get_player_sort_choice(cptr *choices, int num, int col, int wid,
1190                                   cptr helpfile, void (*hook) (cptr));
1191 extern bool display_menu(menu_type *options, int select, bool scroll,
1192 						 int disp(int), cptr prompt);
1193 extern void bell(cptr reason);
1194 extern void sound(int num);
1195 extern int color_char_to_attr(char c);
1196 extern void screen_save(void);
1197 extern void screen_load(void);
1198 extern int fmt_offset(cptr str1, cptr str2);
1199 extern void put_fstr(int col, int row, cptr str, ...);
1200 extern void prtf(int col, int row, cptr str, ...);
1201 extern void roff(cptr str, ...);
1202 extern void froff(FILE *fff, cptr str, ...);
1203 extern void clear_from(int row);
1204 extern void clear_msg(void);
1205 extern void clear_row(int row);
1206 extern void clear_region(int x, int y1, int y2);
1207 extern bool askfor_aux(char *buf, int len);
1208 extern bool get_string(char *buf, int len, cptr str, ...);
1209 extern bool get_check(cptr prompt, ...);
1210 extern bool get_check_ext(bool def, bool esc, cptr prompt, ...);
1211 extern bool get_com(cptr prompt, char *command);
1212 extern s16b get_quantity(cptr prompt, int max);
1213 extern void pause_line(int row);
1214 extern int get_keymap_dir(char ch);
1215 
1216 
1217 /* borg.c */
1218 extern void do_cmd_borg(void);
1219 
1220 /* script.c */
1221 extern void deleteme(void);
1222 extern bool player_res(u32b flag);
1223 
1224 /*
1225  * Hack -- conditional (or "bizarre") externs
1226  */
1227 
1228 #ifdef SET_UID
1229 # ifndef HAS_USLEEP
1230 /* util.c */
1231 extern int usleep(huge usecs);
1232 # endif	/* HAS_USLEEP */
1233 extern void user_name(char *buf, int id);
1234 #endif /* SET_UID */
1235 
1236 #if defined(MAC_MPW) || defined(MACH_O_CARBON)
1237 /* main-mac.c, or its derivatives */
1238 extern u32b _fcreator;
1239 extern u32b _ftype;
1240 # if defined(MAC_MPW) && defined(CARBON)
1241 extern void convert_pathname(char *path);
1242 # endif
1243 # if defined(MACH_O_CARBON)
1244 extern void fsetfileinfo(cptr path, u32b fcreator, u32b ftype);
1245 # endif
1246 #endif
1247 
1248