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 custom_command_type custom_commands[MAX_CUSTOM_COMMANDS];
17 extern const stream_type streams[MAX_STREAMS];
18 extern item_tester_type item_tester[MAX_ITEM_TESTERS];
19 extern const indicator_type indicators[MAX_INDICATORS];
20 extern custom_command_type priest_study_cmd;
21 extern int study_cmd_id;
22 extern byte eq_pos[INVEN_TOTAL-INVEN_WIELD+1][2];
23 extern s16b ddd[9];
24 extern s16b ddx[10];
25 extern s16b ddy[10];
26 extern s16b ddx_ddd[9];
27 extern s16b ddy_ddd[9];
28 extern char hexsym[16];
29 extern byte adj_val_min[];
30 extern byte adj_val_max[];
31 extern const int adj_mag_study[];
32 extern const int adj_mag_mana[];
33 extern byte adj_mag_fail[];
34 extern const int adj_mag_stat[];
35 extern byte adj_chr_gold[];
36 extern byte adj_int_dev[];
37 extern byte adj_wis_sav[];
38 extern byte adj_dex_dis[];
39 extern byte adj_int_dis[];
40 extern byte adj_dex_ta[];
41 extern byte adj_str_td[];
42 extern byte adj_dex_th[];
43 extern byte adj_str_th[];
44 extern byte adj_str_wgt[];
45 extern byte adj_str_hold[];
46 extern byte adj_str_dig[];
47 extern byte adj_str_blow[];
48 extern byte adj_dex_blow[];
49 extern byte adj_dex_safe[];
50 extern byte adj_con_fix[];
51 extern byte trees_in_town;
52 extern const int adj_con_mhp[];
53 extern byte blows_table[12][12];
54 extern owner_type owners[MAX_STORES][MAX_OWNERS];
55 extern u16b extract_energy[200];
56 extern u16b level_speeds[128];
57 extern s32b player_exp[PY_MAX_LEVEL];
58 extern player_race race_info[MAX_RACES];
59 extern player_magic magic_info[MAX_CLASS];
60 extern byte chest_traps[64];
61 extern cptr player_title[MAX_CLASS][PY_MAX_LEVEL/5];
62 extern cptr color_names[16];
63 extern cptr stat_names[6];
64 extern cptr stat_names_reduced[6];
65 extern cptr stat_names_full[6];
66 extern cptr ang_term_name[8];
67 extern cptr window_flag_desc[32];
68 extern cptr option_group[];
69 extern option_type option_info[];
70 extern const cptr custom_command_schemes[SCHEME_LAST+1];
71 
72 /* variable.c */
73 extern cptr copyright[6];
74 extern byte version_major;
75 extern byte version_minor;
76 extern byte version_patch;
77 extern byte version_extra;
78 extern u16b shutdown_timer;
79 extern u32b sf_xtra;
80 extern u32b sf_when;
81 extern u16b sf_lives;
82 extern u16b sf_saves;
83 extern cptr arg_config_file;
84 extern bool arg_wizard;
85 extern bool arg_fiddle;
86 extern bool arg_force_original;
87 extern bool arg_force_roguelike;
88 extern bool server_generated;
89 extern bool server_dungeon;
90 extern bool server_state_loaded;
91 extern bool server_saved;
92 extern bool character_loaded;
93 extern bool character_died;
94 extern bool character_xtra;
95 extern u32b seed_flavor;
96 extern u32b seed_town;
97 extern s16b command_cmd;
98 extern s16b command_arg;
99 /*extern s16b command_rep;*/
100 extern s16b command_dir;
101 extern s16b command_see;
102 extern s16b command_gap;
103 extern s16b command_wrk;
104 extern s16b command_new;
105 extern s16b choose_default;
106 extern bool create_up_stair;
107 extern bool create_down_stair;
108 extern bool msg_flag;
109 /*extern bool alive;
110 extern bool death;*/
111 /*extern s16b running;*/
112 extern s16b resting;
113 /*extern s16b cur_hgt;
114 extern s16b cur_wid;*/
115 /*extern s16b dun_level;*/
116 extern s16b *players_on_depth;
117 extern s16b special_levels[MAX_SPECIAL_LEVELS];
118 extern s16b num_repro;
119 extern s16b object_level;
120 extern char summon_kin_type;
121 extern s16b monster_level;
122 extern byte level_up_x[MAX_DEPTH];
123 extern byte level_up_y[MAX_DEPTH];
124 extern byte level_down_x[MAX_DEPTH];
125 extern byte level_down_y[MAX_DEPTH];
126 extern byte level_rand_x[MAX_DEPTH];
127 extern byte level_rand_y[MAX_DEPTH];
128 extern hturn turn;
129 extern hturn old_turn;
130 extern s32b player_id;
131 extern bool wizard;
132 extern bool to_be_wizard;
133 extern bool can_be_wizard;
134 /*extern u16b total_winner;*/
135 extern u16b panic_save;
136 /*extern u16b noscore;*/
137 extern s16b signal_count;
138 extern bool inkey_base;
139 extern bool inkey_xtra;
140 extern bool inkey_scan;
141 extern bool inkey_flag;
142 extern s16b coin_type;
143 extern bool opening_chest;
144 extern int use_graphics;
145 extern bool use_sound;
146 extern bool scan_monsters;
147 extern bool scan_objects;
148 /*extern s16b total_weight;*/
149 extern s16b inven_nxt;
150 /*extern s16b inven_cnt;
151 extern s16b equip_cnt;*/
152 extern s32b o_nxt;
153 extern s32b m_nxt;
154 extern s32b o_max;
155 extern s32b m_max;
156 extern s32b o_top;
157 extern s32b m_top;
158 extern s32b p_max;
159 extern maxima *z_info;
160 extern u32b eq_name_size;
161 
162 extern bool cfg_report_to_meta;
163 extern char * cfg_meta_address;
164 extern char * cfg_report_address;
165 extern char * cfg_console_password;
166 extern bool cfg_console_local_only;
167 extern char * cfg_dungeon_master;
168 extern char * cfg_load_pref_file;
169 extern bool cfg_secret_dungeon_master;
170 extern s16b cfg_fps;
171 extern s32b cfg_tcp_port;
172 extern bool cfg_safe_recharge;
173 extern bool cfg_no_steal;
174 extern bool cfg_newbies_cannot_drop;
175 extern bool cfg_ghost_diving;
176 extern s32b cfg_level_unstatic_chance;
177 extern s32b cfg_retire_timer;
178 extern bool cfg_random_artifacts;
179 extern s16b cfg_preserve_artifacts;
180 extern bool cfg_ironman;
181 extern bool cfg_more_towns;
182 extern bool cfg_town_wall;
183 extern s32b cfg_unique_respawn_time;
184 extern s32b cfg_unique_max_respawn_time;
185 extern s16b cfg_max_townies;
186 extern s16b cfg_max_trees;
187 extern s16b cfg_max_houses;
188 extern bool cfg_chardump_color;
189 extern s16b cfg_pvp_hostility;
190 extern bool cfg_pvp_notify;
191 extern s16b cfg_pvp_safehostility;
192 extern s16b cfg_pvp_safedepth;
193 extern s16b cfg_pvp_saferadius;
194 extern s16b cfg_pvp_safelevel;
195 extern bool cfg_party_share_exp;
196 extern bool cfg_party_share_quest;
197 extern bool cfg_party_share_kill;
198 extern bool cfg_party_share_win;
199 extern s16b cfg_party_sharelevel;
200 extern bool cfg_instance_closed;
201 
202 extern s16b hitpoint_warn;
203 extern s16b delay_factor;
204 extern bool dungeon_align;
205 extern s16b feeling;
206 extern s16b rating;
207 extern bool good_item_flag;
208 /*extern bool new_level_flag;*/
209 extern bool closing_flag;
210 /*extern s16b max_panel_rows, max_panel_cols;
211 extern s16b panel_row, panel_col;*/
212 /*extern s16b panel_row_min, panel_row_max;
213 extern s16b panel_col_min, panel_col_max;
214 extern s16b panel_col_prt, panel_row_prt;
215 extern s16b py;
216 extern s16b px;*/
217 /*extern s16b target_who;
218 extern s16b target_col;
219 extern s16b target_row;*/
220 /* extern s16b health_who; */
221 extern s16b recent_idx;
222 extern element_group* players;
223 extern int player_uid;
224 extern int player_euid;
225 extern int player_egid;
226 extern player_type* player_textout;
227 extern party_type parties[MAX_PARTIES];
228 extern channel_type channels[MAX_CHANNELS];
229 extern house_type houses[MAX_HOUSES];
230 extern byte spell_flags[MAX_SPELL_REALMS][PY_MAX_SPELLS];
231 extern byte spell_tests[MAX_SPELL_REALMS][PY_MAX_SPELLS];
232 extern arena_type arenas[MAX_ARENAS];
233 extern int num_houses;
234 extern int num_arenas;
235 extern int chan_audit;
236 extern int chan_debug;
237 extern int chan_cheat;
238 /*extern char player_name[32];
239 extern char player_base[32];
240 extern char died_from[80];
241 extern char history[4][60];
242 extern char savefile[1024];*/
243 /*extern s16b lite_n;
244 extern byte lite_y[LITE_MAX];
245 extern byte lite_x[LITE_MAX];
246 extern s16b view_n;
247 extern byte view_y[VIEW_MAX];
248 extern byte view_x[VIEW_MAX];
249 extern s16b temp_n;
250 extern byte temp_y[TEMP_MAX];
251 extern byte temp_x[TEMP_MAX];*/
252 extern s16b macro__num;
253 extern cptr *macro__pat;
254 extern cptr *macro__act;
255 extern bool *macro__cmd;
256 extern char *macro__buf;
257 extern s16b quark__num;
258 extern cptr *quark__str;
259 extern u16b message__next;
260 extern u16b message__last;
261 extern u16b message__head;
262 extern u16b message__tail;
263 extern u16b *message__ptr;
264 extern char *message__buf;
265 /*extern u32b option_flag[8];
266 extern u32b option_mask[8];
267 extern u32b window_flag[8];
268 extern u32b window_mask[8];*/
269 /*extern term *ang_term[8];*/
270 extern s16b o_fast[MAX_O_IDX];
271 extern s16b m_fast[MAX_M_IDX];
272 extern cave_type ***cave;
273 extern wilderness_type *wild_info;
274 extern hturn *turn_cavegen;
275 extern object_type *o_list;
276 extern monster_type *m_list;
277 extern player_type **p_list;
278 extern quest q_list[MAX_Q_IDX];
279 extern store_type *store;
280 /*extern object_type *inventory;*/
281 extern s16b alloc_kind_size;
282 extern alloc_entry *alloc_kind_table;
283 extern s16b alloc_race_size;
284 extern alloc_entry *alloc_race_table;
285 extern byte misc_to_attr[1024];
286 extern char misc_to_char[1024];
287 extern byte tval_to_attr[128];
288 extern char tval_to_char[128];
289 extern byte keymap_cmds[128];
290 extern byte keymap_dirs[128];
291 extern byte color_table[256][4];
292 extern char text_screen[MAX_TEXTFILES][TEXTFILE__WID * TEXTFILE__HGT];
293 /*extern player_type *p_ptr;*/
294 /*extern player_race *rp_ptr;
295 extern player_class *cp_ptr;
296 extern player_magic *mp_ptr;*/
297 /*extern u32b spell_learned1;
298 extern u32b spell_learned2;
299 extern u32b spell_worked1;
300 extern u32b spell_worked2;
301 extern u32b spell_forgotten1;
302 extern u32b spell_forgotten2;
303 extern byte spell_order[64];
304 extern s16b player_hp[PY_MAX_LEVEL];*/
305 extern vault_type *v_info;
306 extern char *v_name;
307 extern char *v_text;
308 extern feature_type *f_info;
309 extern char *f_name;
310 extern char *f_text;
311 extern char *f_char_s;
312 extern byte *f_attr_s;
313 extern object_kind *k_info;
314 extern char *k_name;
315 extern char *k_text;
316 extern char *k_char_s;
317 extern byte *k_attr_s;
318 extern artifact_type *a_info;
319 extern char *a_name;
320 extern char *a_text;
321 extern ego_item_type *e_info;
322 extern char *e_name;
323 extern char *e_text;
324 extern monster_race *r_info;
325 extern char *r_name;
326 extern char *r_text;
327 extern char *r_char_s;
328 extern byte *r_attr_s;
329 extern player_race *p_info;
330 extern char *p_name;
331 extern char *p_text;
332 extern player_class *c_info;
333 extern char *c_name;
334 extern char *c_text;
335 extern cptr store_names[MAX_STORES];
336 extern owner_type *b_info;
337 extern char *b_name;
338 extern char *b_text;
339 extern byte *g_info;
340 extern char *g_name;
341 extern char *g_text;
342 extern hist_type *h_info;
343 extern char *h_text;
344 extern flavor_type *flavor_info;
345 extern char *flavor_name;
346 extern char *flavor_text;
347 extern char *flavor_char_s;
348 extern byte *flavor_attr_s;
349 extern cptr ANGBAND_SYS;
350 extern cptr ANGBAND_DIR;
351 extern cptr ANGBAND_DIR_APEX;
352 extern cptr ANGBAND_DIR_BONE;
353 extern cptr ANGBAND_DIR_DATA;
354 extern cptr ANGBAND_DIR_EDIT;
355 extern cptr ANGBAND_DIR_FILE;
356 extern cptr ANGBAND_DIR_HELP;
357 extern cptr ANGBAND_DIR_INFO;
358 extern cptr ANGBAND_DIR_SAVE;
359 extern cptr ANGBAND_DIR_PREF;
360 extern cptr ANGBAND_DIR_USER;
361 extern cptr ANGBAND_DIR_XTRA;
362 extern cptr ANGBAND_DIR_GAME;
363 extern cptr ANGBAND_DIR_TEXT;
364 extern bool item_tester_full;
365 extern byte item_tester_tval;
366 extern bool (*item_tester_hook)(object_type *o_ptr);
367 extern bool (*get_mon_num_hook)(int r_idx);
368 extern bool (*get_obj_num_hook)(int k_idx);
369 extern bool (*master_move_hook)(player_type *p_ptr, char * parms);
370 extern char * cfg_bind_name;
371 extern const player_sex sex_info[MAX_SEXES];
372 
373 /*
374  * Automatically generated "function declarations"
375  */
376 
377 /* birth.c */
378 extern player_type* player_alloc(void);
379 extern void player_free(player_type *p_ptr);
380 extern void player_wipe(player_type *p_ptr);
381 extern void player_net_wipe(player_type *p_ptr, int reach);
382 extern bool player_birth(int ind, int race, int pclass, int sex, int stat_order[]);
383 extern void server_birth(void);
384 extern void player_setup(player_type *p_ptr);
385 extern void player_verify_visual(player_type *p_ptr);
386 
387 /* cave.c */
388 extern int distance(int y1, int x1, int y2, int x2);
389 extern bool los(int Depth, int y1, int x1, int y2, int x2);
390 extern bool player_can_see_bold(player_type *p_ptr, int y, int x);
391 extern bool no_lite(player_type *p_ptr);
392 extern void map_info(player_type *p_ptr, int y, int x, byte *ap, char *cp, byte *tap, char *tcp, bool server);
393 extern int color_char_to_attr(char c);
394 extern void move_cursor_relative(int row, int col);
395 extern void print_rel(char c, byte a, int y, int x);
396 extern void cave_set_feat(int Depth, int y, int x, int feat);
397 extern void spot_updates(int Depth, int y, int x, u32b updates);
398 extern void note_spot(player_type *p_ptr, int y, int x);
399 extern void note_spot_depth(int Depth, int y, int x);
400 extern void everyone_lite_spot(int Depth, int y, int x);
401 extern void everyone_forget_spot(int Depth, int y, int x);
402 extern void lite_spot(player_type *p_ptr, int y, int x);
403 extern void prt_map(player_type *p_ptr);
404 extern void display_map(player_type *p_ptr, bool quiet);
405 extern void do_cmd_view_map(player_type *p_ptr, char query);
406 extern void forget_lite(player_type *p_ptr);
407 extern void update_lite(player_type *p_ptr);
408 extern void forget_view(player_type *p_ptr);
409 extern void update_view(player_type *p_ptr);
410 extern void forget_flow(void);
411 extern void update_flow(void);
412 extern void wiz_lite(player_type *p_ptr);
413 extern void wiz_dark(player_type *p_ptr);
414 extern void mmove2(int *y, int *x, int y1, int x1, int y2, int x2);
415 extern bool projectable(int Depth, int y1, int x1, int y2, int x2);
416 extern bool projectable_wall(int Depth, int y1, int x1, int y2, int x2);
417 extern void scatter(int Depth, int *yp, int *xp, int y, int x, int d, int m);
418 extern void health_track(player_type *p_ptr, int m_idx);
419 extern void update_health(int m_idx);
420 extern void monster_race_track(player_type *p_ptr, int r_idx);
421 extern void disturb(player_type *p_ptr, int stop_search, int flush_output);
422 extern bool is_quest(int level);
423 extern bool is_quest_level(player_type *p_ptr, int level);
424 extern void update_players(void);
425 extern void update_cursor(int);
426 extern void cursor_track(player_type *p_ptr, int m_idx);
427 extern int player_pict(player_type *p_ptr, player_type *who);
428 extern player_type* player_on_cave_p(cave_type *c_ptr);
429 extern player_type* player_on_cave(int Depth, int y, int x);
430 
431 
432 /* cmd1.c */
433 extern bool test_hit_fire(int chance, int ac, int vis);
434 extern bool test_hit_norm(int chance, int ac, int vis);
435 extern s16b critical_shot(player_type *p_ptr, int weight, int plus, int dam);
436 extern s16b critical_norm(player_type *p_ptr, int weight, int plus, int dam);
437 extern s16b tot_dam_aux(player_type *p_ptr, object_type *o_ptr, int tdam, monster_type *m_ptr, bool ml);
438 extern s16b tot_dam_aux_player(object_type *o_ptr, int tdam, player_type *p_ptr);
439 extern void search(player_type *p_ptr);
440 extern void carry(player_type *p_ptr, int pickup, int confirm);
441 extern void py_attack(player_type *p_ptr, int y, int x);
442 extern void move_player(player_type *p_ptr, int dir, int do_pickup);
443 extern void run_step(player_type *p_ptr, int dir);
444 extern int see_wall(player_type *p_ptr, int dir, int y, int x);
445 
446 /* cmd2.c */
447 extern bool house_inside(player_type *p_ptr, int house);
448 extern bool house_owned(int house);
449 extern bool house_owned_by(player_type *p_ptr, int house);
450 extern bool set_house_owner(player_type *p_ptr, int house);
451 extern bool create_house(player_type *p_ptr);
452 extern int houses_owned(player_type *p_ptr);
453 extern void disown_house(int house);
454 extern void do_cmd_go_up(player_type *p_ptr);
455 extern void do_cmd_go_down(player_type *p_ptr);
456 extern void do_cmd_search(player_type *p_ptr);
457 extern void do_cmd_toggle_search(player_type *p_ptr);
458 extern void do_cmd_alter(player_type *p_ptr, int dir);
459 extern void do_cmd_open(player_type *p_ptr, int dir);
460 extern void do_cmd_close(player_type *p_ptr, int dir);
461 extern void do_cmd_tunnel(player_type *p_ptr, int dir);
462 extern void do_cmd_disarm(player_type *p_ptr, int dir);
463 extern void do_cmd_bash(player_type *p_ptr, int dir);
464 extern void do_cmd_spike(player_type *p_ptr, int dir);
465 extern void do_cmd_walk(player_type *p_ptr, int dir, int pickup);
466 extern void do_cmd_stay(player_type *p_ptr);
467 extern int do_cmd_run(player_type *p_ptr, int dir);
468 extern void do_cmd_hold(player_type *p_ptr);
469 extern void do_cmd_hold_or_stay(player_type *p_ptr, int pickup, int take_stairs);
470 extern void do_cmd_enterfeat(player_type *p_ptr);
471 extern void do_cmd_toggle_rest(player_type *p_ptr);
472 extern void do_cmd_pathfind(player_type *p_ptr, int y, int x);
473 /*extern void do_cmd_rest(void);*/
474 extern void do_cmd_fire(player_type *p_ptr, int item, int dir);
475 extern void do_cmd_throw(player_type *p_ptr, int item, int dir);
476 extern void do_cmd_purchase_house(player_type *p_ptr, int dir);
477 extern int pick_house(int Depth, int y, int x);
478 extern void do_cmd_mouseclick(player_type *p_ptr, int mod, int y, int x);
479 
480 /* cmd3.c */
481 extern void do_cmd_inven(void);
482 extern void do_cmd_equip(void);
483 extern void do_cmd_wield(player_type *p_ptr, int item);
484 extern void do_cmd_takeoff(player_type *p_ptr, int item);
485 extern void do_cmd_drop(player_type *p_ptr, int item, int quantity);
486 extern void do_cmd_drop_gold(player_type *p_ptr, s32b amt);
487 extern void do_cmd_destroy(player_type *p_ptr, int item, int quantity);
488 extern void do_cmd_observe(player_type *p_ptr, int item);
489 extern void do_cmd_uninscribe(player_type *p_ptr, int item);
490 extern void do_cmd_inscribe(player_type *p_ptr, int item, cptr inscription);
491 extern void do_cmd_steal(player_type *p_ptr, int dir);
492 extern void do_cmd_refill(player_type *p_ptr, int item);
493 extern void do_cmd_target(player_type *p_ptr, char dir);
494 extern void do_cmd_target_friendly(player_type *p_ptr, char dir);
495 extern void do_cmd_look(player_type *p_ptr, char dir);
496 extern void do_cmd_locate(player_type *p_ptr, int dir);
497 extern void do_cmd_query_symbol(player_type *p_ptr, char sym);
498 extern void do_cmd_monlist(player_type *p_ptr);
499 extern void do_cmd_itemlist(player_type *p_ptr);
500 extern void describe_floor_tile(cave_type *c_ptr, cptr out_val, player_type *p_ptr, bool active, byte cave_flag);
501 extern void do_cmd_monster_desc_aux(player_type *p_ptr, int r_idx, bool quiet);
502 extern void do_cmd_monster_desc_all(player_type *p_ptr, char sym);
503 extern bool ang_sort_comp_monsters(void *player_context, vptr u, vptr v, int a, int b);
504 extern void ang_sort_swap_u16b(void *player_context, vptr u, vptr v, int a, int b);
505 
506 /* cmd4.c */
507 extern void do_cmd_redraw(void);
508 extern void do_cmd_change_name(void);
509 extern void do_cmd_message_one(void);
510 extern void do_cmd_messages(void);
511 extern void do_cmd_options(void);
512 extern void do_cmd_pref(void);
513 extern void do_cmd_macros(void);
514 extern void do_cmd_visuals(void);
515 extern void do_cmd_colors(void);
516 extern void do_cmd_note(void);
517 extern void do_cmd_version(void);
518 extern void do_cmd_feeling(player_type *p_ptr);
519 extern void do_cmd_load_screen(void);
520 extern void do_cmd_save_screen(void);
521 extern void do_cmd_check_artifacts(player_type *p_ptr, int line);
522 extern void do_cmd_check_uniques(player_type *p_ptr, int line);
523 extern void do_cmd_check_players(player_type *p_ptr, int line);
524 extern void do_cmd_check_other(player_type *p_ptr, int line);
525 extern void do_cmd_knowledge(player_type *p_ptr, char query);
526 extern void do_cmd_interactive(player_type *p_ptr, char query);
527 extern void do_cmd_interactive_input(player_type *p_ptr, char query);
528 extern void common_peruse(player_type *p_ptr, char query);
529 
530 /* cmd5.c */
531 extern void do_cmd_browse(player_type *p_ptr, int book);
532 extern void do_cmd_study(player_type *p_ptr, int book, int spell);
533 extern void do_cmd_cast_pre(player_type *p_ptr, int book, int dir, int spell);
534 extern void do_cmd_cast(player_type *p_ptr, int book, int spell);
535 extern void do_cmd_cast_fin(player_type *p_ptr, bool tried);
536 extern void do_cmd_pray_pre(player_type *p_ptr, int book, int dir, int spell);
537 extern void do_cmd_pray(player_type *p_ptr, int book, int spell);
538 extern void show_ghost_spells(player_type *p_ptr);
539 extern void do_cmd_ghost_power_pre(player_type *p_ptr, int dir, int ability);
540 extern void do_cmd_ghost_power(player_type *p_ptr, int ability);
541 extern void do_cmd_ghost_power_fin(player_type *p_ptr);
542 
543 
544 /* cmd6.c */
545 extern void do_cmd_eat_food(player_type *p_ptr, int item);
546 extern void do_cmd_quaff_potion(player_type *p_ptr, int item);
547 extern void do_cmd_read_scroll(player_type *p_ptr, int item);
548 extern void do_cmd_read_scroll_end(player_type *p_ptr, int item, bool ident);
549 extern void do_cmd_read_scroll_on(player_type *p_ptr, int item, int item2);
550 extern void do_cmd_aim_wand(player_type *p_ptr, int item, int dir);
551 extern void do_cmd_use_staff_pre(player_type *p_ptr, int item, int item2);
552 extern void do_cmd_use_staff(player_type *p_ptr, int item);
553 extern void do_cmd_use_staff_discharge(player_type *p_ptr, int item, bool ident);
554 extern void do_cmd_zap_rod_pre(player_type *p_ptr, int item, int dir);
555 extern void do_cmd_zap_rod(player_type *p_ptr, int item);
556 extern void do_cmd_zap_rod_discharge(player_type *p_ptr, int dir, bool ident);
557 extern void do_cmd_activate(player_type *p_ptr, int item);
558 extern void do_cmd_activate_dir(player_type *p_ptr, int item, int dir);
559 extern void do_cmd_refill_potion(player_type *p_ptr, int item);
560 
561 /* pathfind.c */
562 extern bool findpath(player_type *p_ptr, int y, int x);
563 
564 /* control.c */
565 extern void console_print(char *msg, int chan);
566 
567 /* dungeon.c */
568 extern bool is_boring(byte feat);
569 extern void play_game(bool new_game);
570 extern void shutdown_server(void);
571 extern void dungeon(void);
572 extern bool check_special_level(s16b special_depth);
573 extern int find_player_name(char *name);
574 extern int find_player(s32b id);
575 extern int count_players(int Depth);
576 
577 /* files.c */
578 extern void safe_setuid_drop(void);
579 extern void safe_setuid_grab(void);
580 extern s16b tokenize(char *buf, s16b num, char **tokens);
581 extern void display_player(player_type *p_ptr);
582 extern errr file_character(cptr name, bool full);
583 extern errr process_pref_file_aux(char *buf);
584 extern errr process_pref_file(cptr name);
585 extern errr check_time_init(void);
586 extern errr check_load_init(void);
587 extern errr check_time(void);
588 extern errr check_load(void);
589 extern void read_times(void);
590 extern void show_news(void);
591 extern errr show_file(player_type *p_ptr, cptr name, cptr what, int line, int color);
592 extern int file_peruse_next(player_type *p_ptr, char query, int next);
593 extern void common_file_peruse(player_type *p_ptr, char query);
594 extern void copy_file_info(player_type *p_ptr, cptr name, int line, int color);
595 extern void do_cmd_help(player_type *p_ptr, int line);
596 extern int rewrite_player_name(char *wptr, char *bptr, const char *nick_name);
597 extern bool process_player_name(player_type *p_ptr, bool sf);
598 extern int process_player_name_aux(cptr name, cptr basename, bool sf);
599 /*extern void get_name(player_type *p_ptr);*/
600 extern void do_cmd_suicide(player_type *p_ptr);
601 extern void do_cmd_save_game(player_type *p_ptr);
602 extern long total_points(player_type *p_ptr);
603 extern void display_scores(player_type *p_ptr, int to);
604 extern void add_high_score(player_type *p_ptr);
605 extern void close_game(void);
606 extern void exit_game_panic(void);
607 extern void signals_ignore_tstp(void);
608 extern void signals_handle_tstp(void);
609 extern void signals_init(void);
610 extern void kingly(player_type *p_ptr);
611 extern void setup_exit_handler(void);
612 extern errr get_rnd_line(cptr file_name, int entry, char *output);
613 extern errr file_character_server(player_type *p_ptr, cptr name);
614 
615 /* generate.c */
616 extern void alloc_dungeon_level(int Depth);
617 extern void dealloc_dungeon_level(int Depth);
618 extern void generate_cave(player_type *p_ptr, int Depth, int auto_scum);
619 extern void build_vault(int Depth, int yval, int xval, int ymax, int xmax, cptr data);
620 extern void place_closed_door(int Depth, int y, int x);
621 
622 /* wilderness.c */
623 extern int world_index(int world_x, int world_y);
624 extern void wild_cat_depth(int Depth, char *buf);
625 extern void init_wild_info(void);
626 extern void wild_apply_day(int Depth);
627 extern void wild_apply_night(int Depth);
628 extern int determine_wilderness_type(int Depth);
629 extern void wilderness_gen(int Depth);
630 extern void wild_add_monster(int Depth);
631 extern void wild_grow_crops(int Depth);
632 extern void do_cmd_plant_seed(player_type *p_ptr, int item);
633 
634 /* init-txt.c */
635 extern errr init_v_info_txt(FILE *fp, char *buf);
636 extern errr init_f_info_txt(FILE *fp, char *buf);
637 extern errr init_k_info_txt(FILE *fp, char *buf);
638 extern errr init_a_info_txt(FILE *fp, char *buf);
639 extern errr init_e_info_txt(FILE *fp, char *buf);
640 extern errr init_r_info_txt(FILE *fp, char *buf);
641 extern errr parse_file(struct parser *p, const char *filename);
642 
643 /* init.c */
644 extern void init_file_paths(char *path, char *path_wr);
645 extern void free_file_paths(void);
646 extern void init_some_arrays(void);
647 extern void load_server_cfg(void);
648 extern void unload_server_cfg(void);
649 extern void cleanup_angband(void);
650 
651 /* load1.c */
652 /*extern errr rd_savefile_old(void);*/
653 
654 /* load2.c */
655 extern errr rd_savefile_new(player_type *p_ptr);
656 extern errr rd_server_savefile(void);
657 extern errr rd_savefile_new_scoop_aux(char *sfile, char *pass_word);
658 extern bool rd_dungeon_special_ext(int Depth, cptr levelname);
659 
660 /* melee1.c */
661 /* melee2.c */
662 extern bool make_attack_normal(player_type *p_ptr, int m_idx);
663 extern bool make_attack_spell(player_type *p_ptr, int m_idx);
664 extern void process_monsters(void);
665 
666 /* mon-desc.c */
667 extern void screen_roff(int r_idx);
668 extern void display_roff(int r_idx);
669 
670 /* monster.c */
671 extern void describe_monster(player_type *p_ptr, int m_ind, bool spoilers);
672 extern void delete_monster_idx(int i);
673 extern void delete_monster(int Depth, int y, int x);
674 extern void compact_monsters(int size);
675 extern void wipe_m_list(int Depth);
676 extern s16b m_pop(void);
677 extern errr get_mon_num_prep(void);
678 extern s16b get_mon_num(int level);
679 extern void monster_desc(player_type *p_ptr, char *desc, int m_idx, int mode);
680 extern void lore_do_probe(player_type *p_ptr, int m_idx);
681 extern void lore_treasure(player_type *p_ptr, int m_idx, int num_item, int num_gold);
682 extern void update_mon(int m_idx, bool dist);
683 extern void update_monsters(bool dist);
684 extern void update_player(player_type *p_ptr);
685 extern void update_players(void);
686 extern bool place_monster_aux(int Depth, int y, int x, int r_idx, bool slp, bool grp);
687 extern bool place_monster(int Depth, int y, int x, bool slp, bool grp);
688 extern bool alloc_monster(int Depth, int dis, int slp);
689 extern bool summon_specific(int Depth, int y1, int x1, int lev, int type);
690 extern bool multiply_monster(int m_idx);
691 extern void update_smart_learn(int m_idx, int what);
692 extern void setup_monsters(void);
693 extern int race_index(char * name);
694 extern bool summon_specific_race(int Depth, int y1, int x1, int r_idx, unsigned char num);
695 extern bool summon_specific_race_somewhere(int Depth, int r_idx, unsigned char num);
696 extern int race_index_fuzzy(char * name);
697 extern int monster_richness(int r_idx);
698 extern u16b rand_mimic_kind(int r_idx);
699 
700 /* monster2.c */
701 extern bool is_detected(u32b flag, u32b esp);
702 extern void reveal_mimic(int m_idx);
703 extern void forget_monster(player_type *p_ptr, int m_idx, bool deleted);
704 extern s16b monster_carry(player_type *p_ptr, int m_idx, object_type *j_ptr);
705 extern bool monster_can_carry(int m_idx);
706 extern bool summon_specific_okay_aux(int r_idx, int summon_type);
707 extern void display_monlist(player_type *p_ptr);
708 
709 // Transitional network hacks
710 #define Send_term_info(IND, FLAG, ARG) send_term_info(Players[Ind], FLAG, ARG)
711 #define Send_special_other(PLR, HEADER) send_term_header(PLR, NTERM_POP, HEADER)
712 #define Send_direction(IND) plog("Send_direction unimplemented\n")
713 #define Send_item_request(IND, tval_hook) plog("Send_item_request unimplemented\n")
714 #define Send_flush(IND) plog("Send_flush unimplemented\n")
715 #define Send_pause(PLR) send_term_info(PLR, NTERM_HOLD, NTERM_PAUSE)
716 
717 /* net-server.c */
718 extern void setup_network_server();
719 extern void network_loop();
720 extern void close_network_server();
721 extern void report_to_meta_die(void);
722 extern int player_leave(int p_idx);
723 extern int player_disconnect(player_type *p_ptr, cptr reason);
724 
725 /* net-game.c */
726 extern int process_player_commands(player_type *p_ptr);
727 extern int stream_char_raw(player_type *p_ptr, int st, int y, int x, byte a, char c, byte ta, char tc);
728 extern int stream_char(player_type *p_ptr, int st, int y, int x);
729 extern int stream_line_as(player_type *p_ptr, int st, int y, int x);
730 extern int send_term_info(player_type *p_ptr, byte flag, u16b line);
731 extern int send_term_header(player_type *p_ptr, byte hint, cptr header);
732 extern int send_term_writefile(connection_type *ct, byte fmode, cptr filename);
733 extern int send_term_write(player_type *p_ptr, byte fmode, cptr filename);
734 extern int send_cursor(player_type *p_ptr, byte vis, byte x, byte y);
735 extern int send_target_info(player_type *p_ptr, byte x, byte y, byte win, cptr str);
736 extern int send_character_info(player_type *p_ptr);
737 extern int send_slash_fx(player_type *p_ptr, byte y, byte x, byte dir, byte fx);
738 extern int send_air_char(player_type *p_ptr, byte y, byte x, char a, char c, u16b delay, u16b fade);
739 extern int send_floor(player_type *p_ptr, byte a, char c, byte attr, int amt, byte tval, byte flag, byte s_tester, cptr name, cptr name_one);
740 extern int send_inven(player_type *p_ptr, char pos, byte a, char c, byte attr, int wgt, int amt, byte tval, byte flag, byte s_tester, cptr name, cptr name_one);
741 extern int send_equip(player_type *p_ptr, char pos, byte attr, int wgt, byte tval, byte flag, cptr name);
742 extern int send_spell_info(player_type *p_ptr, u16b book, u16b id, byte flag, byte item_tester, cptr desc);
743 extern int send_ghost(player_type *p_ptr);
744 extern int send_inventory_info_DEPRECATED(connection_type *ct);
745 extern int send_inventory_info(connection_type *ct);
746 extern int send_objflags_info(connection_type *ct);
747 extern int send_floor_info(connection_type *ct);
748 extern int send_indication(player_type *p_ptr, int id, ...);
749 extern int send_objflags(player_type *p_ptr, int line);
750 extern int send_party_info(player_type *p_ptr);
751 extern int send_message(player_type *p_ptr, cptr msg, u16b typ);
752 extern int send_message_repeat(player_type *p_ptr, u16b typ);
753 extern int send_sound(player_type *p_ptr, u16b sound);
754 extern int send_channel(player_type *p_ptr, char mode, u16b id, cptr name);
755 extern int send_store(player_type *p_ptr, char pos, byte ga, char gc, byte attr, s16b wgt, s16b number, long price, cptr name);
756 extern int send_store_info(player_type *p_ptr, byte flag, cptr name, char *owner, int items, long purse);
757 extern int send_store_sell(player_type *p_ptr, u32b price);
758 extern int send_store_leave(player_type *p_ptr);
759 extern int send_confirm_request(player_type *p_ptr, byte type, cptr buf);
760 extern int send_pickup_check(player_type *p_ptr, cptr buf);
761 
762 
763 
764 /* obj-info.c */
765 /* object1.c */
766 /* object2.c */
767 extern void object_info_screen(const object_type *o_ptr);
768 extern void flavor_init(void);
769 extern void reset_visuals(void);
770 extern void flavor_copy(char *buf, u16b flavor, object_type *o_ptr);
771 extern void object_prep(object_type *o_ptr, int k_idx);
772 extern void object_flags(const object_type *o_ptr, u32b *f1, u32b *f2, u32b *f3);
773 extern void object_flags_known(const player_type *p_ptr, const object_type *o_ptr, u32b *f1, u32b *f2, u32b *f3);
774 extern void object_desc(const player_type *p_ptr, char *buf, size_t buflen, const object_type *o_ptr, int pref, int mode);
775 extern void object_desc_one(const player_type *p_ptr, char *buf, size_t bufsize, object_type *o_ptr, int force, int mode);
776 extern void object_desc_store(const player_type *p_ptr, char *buf, object_type *o_ptr, int pref, int mode);
777 extern bool identify_fully_aux(player_type *p_ptr, object_type *o_ptr);
778 extern char index_to_label(int i);
779 extern s16b label_to_inven(player_type *p_ptr, int c);
780 extern s16b label_to_equip(player_type *p_ptr, int c);
781 extern s16b wield_slot(player_type *p_ptr, object_type *o_ptr);
782 extern cptr mention_use(player_type *p_ptr, int i);
783 extern cptr describe_use(player_type *p_ptr, int i);
784 extern void inven_item_charges(player_type *p_ptr, int item);
785 extern void inven_item_describe(player_type *p_ptr, int item);
786 extern void inven_item_increase(player_type *p_ptr, int item, int num);
787 extern void inven_item_optimize(player_type *p_ptr, int item);
788 extern void floor_item_charges(int item);
789 extern void floor_item_describe(int item);
790 extern void floor_item_increase(int item, int num);
791 extern void floor_item_optimize(int item);
792 extern void floor_item_notify(player_type *p_ptr, s16b o_idx, bool force);
793 extern bool inven_drop_okay(player_type *p_ptr, object_type *o_ptr);
794 extern bool inven_carry_okay(player_type *p_ptr, object_type *o_ptr);
795 extern s16b inven_carry(player_type *p_ptr, object_type *o_ptr);
796 extern bool item_tester_okay(object_type *o_ptr);
797 extern void display_inven(player_type *p_ptr);
798 extern void display_equip(player_type *p_ptr);
799 /*extern void show_inven(void);
800 extern void show_equip(void);
801 extern void toggle_inven_equip(void);
802 extern bool get_item(player_type *p_ptr, int *cp, cptr pmt, bool equip, bool inven, bool floor);*/
803 extern void delete_object_idx(int i);
804 extern void delete_object_ptr(object_type * o_ptr);
805 extern void delete_object(int Depth, int y, int x);
806 extern void compact_objects(int size);
807 extern void wipe_o_list(int Depth);
808 extern s16b o_pop(void);
809 extern errr get_obj_num_prep(void);
810 extern s16b get_obj_num(int level);
811 extern bool object_is_fuel(player_type *p_ptr, object_type *o_ptr, bool *fits);
812 extern byte object_tester_flag(player_type *p_ptr, object_type *o_ptr, byte *secondary_tester);
813 extern void object_known(object_type *o_ptr);
814 extern void object_aware(player_type *p_ptr, object_type *o_ptr);
815 extern void object_tried(player_type *p_ptr, object_type *o_ptr);
816 extern s32b object_value(player_type *p_ptr, object_type *o_ptr);
817 extern bool object_similar_floor(object_type *o_ptr, object_type *j_ptr);
818 extern bool object_similar(const player_type *p_ptr, const object_type *o_ptr, const object_type *j_ptr);
819 extern void object_absorb(player_type *p_ptr, object_type *o_ptr, object_type *j_ptr);
820 extern s16b lookup_kind(int tval, int sval);
821 extern void invwipe(object_type *o_ptr);
822 extern void invcopy(object_type *o_ptr, int k_idx);
823 extern bool check_ego(object_type *o_ptr, int level, int power, int idx);
824 extern void apply_magic(int Depth, object_type *o_ptr, int lev, bool okay, bool good, bool great);
825 extern object_type* place_object(int Depth, int y, int x, bool good, bool great, byte origin);
826 extern void acquirement(int Depth, int y1, int x1, int num, bool great);
827 extern void place_trap(int Depth, int y, int x);
828 extern void place_gold(int Depth, int y, int x);
829 extern void process_objects(void);
830 extern void drop_near(object_type *o_ptr, int chance, int Depth, int y, int x);
831 extern void pick_trap(int Depth, int y, int x);
832 extern cptr item_activation(object_type *o_ptr);
833 extern void combine_pack(player_type *p_ptr);
834 extern void reorder_pack(player_type *p_ptr);
835 extern void setup_objects(void);
836 extern void distribute_charges(object_type *o_ptr, object_type *q_ptr, int amt);
837 extern void reduce_charges(object_type *o_ptr, int amt);
838 extern void object_audit(player_type *p_ptr, object_type *o_ptr, int amt);
839 extern void object_own(player_type *p_ptr, object_type *o_ptr);
840 extern void artifact_notify(player_type *p_ptr, object_type *o_ptr);
841 extern object_type* player_get_item(player_type *p_ptr, int item, int *idx);
842 extern object_type* player_get_floor_item(player_type *p_ptr, int *idx);
843 extern void player_redraw_item(player_type *p_ptr, int item);
844 extern void player_redraw_fuel_items(player_type *p_ptr);
845 extern u16b rand_tval_kind(int tval);
846 extern void display_itemlist(player_type *p_ptr);
847 
848 /* randart.c */
849 extern artifact_type *randart_make(const object_type *o_ptr);
850 extern void randart_name(const object_type *o_ptr, char *buffer);
851 
852 /* party.c */
853 extern int party_lookup(cptr name);
854 extern bool player_in_party(int party_id, player_type *p_ptr);
855 extern int party_create(player_type *p_ptr, cptr name);
856 extern int party_add(player_type *p_ptr, cptr name);
857 extern int party_remove(player_type *p_ptr, cptr name);
858 extern void party_leave(player_type *p_ptr);
859 extern void party_msg(int party_id, cptr msg);
860 extern void party_msg_format(int party_id, cptr fmt, ...);
861 extern void party_msg_format_near(player_type *p_ptr, u16b type, cptr fmt, ...);
862 extern void party_gain_exp(player_type *p_ptr, int party_id, s32b amount, int m_idx);
863 extern int party_mark_members(player_type *p_ptr, int m_idx);
864 extern void party_share_hurt(player_type *p_ptr, player_type *q_ptr);
865 extern bool add_hostility(player_type *p_ptr, cptr name);
866 extern bool remove_hostility(player_type *p_ptr, cptr name);
867 extern bool check_hostile(player_type *attacker, player_type *target);
868 extern cptr lookup_player_name(int id);
869 extern int lookup_player_id(cptr name);
870 extern void add_player_name(cptr name, int id);
871 extern void delete_player_id(int id);
872 extern void delete_player_name(cptr name);
873 extern void wipe_player_names();
874 extern int player_id_list(int **list);
875 extern bool pvp_okay(player_type *attacker, player_type *target, int mode);
876 extern int ego_kind_index_fuzzy(char * name);
877 extern int item_kind_index_fuzzy(char * name);
878 extern bool place_specific_object(int Depth, int y1, int x1, object_type *forge, int lev, int num);
879 
880 /* save.c */
881 extern bool save_player(player_type *p_ptr);
882 extern int scoop_player(char *nick, char *pass);
883 extern bool load_player(player_type *p_ptr);
884 extern bool load_server_info(void);
885 extern bool save_server_info(void);
886 extern bool wr_dungeon_special_ext(int Depth, cptr levelname);
887 
888 
889 /* spells1.c */
890 extern u16b default_bolt_pict(int typ, int dir, int *index);
891 extern s16b poly_r_idx(int r_idx);
892 extern void teleport_away(int m_idx, int dis);
893 extern void teleport_player(player_type *p_ptr, int dis);
894 extern void teleport_player_to(player_type *p_ptr, int ny, int nx);
895 extern void teleport_player_level(player_type *p_ptr);
896 extern void take_hit(player_type *p_ptr, int damage, cptr kb_str);
897 extern void acid_dam(player_type *p_ptr, int dam, cptr kb_str);
898 extern void elec_dam(player_type *p_ptr, int dam, cptr kb_str);
899 extern void fire_dam(player_type *p_ptr, int dam, cptr kb_str);
900 extern void cold_dam(player_type *p_ptr, int dam, cptr kb_str);
901 extern bool inc_stat(player_type *p_ptr, int stat);
902 extern bool dec_stat(player_type *p_ptr, int stat, int amount, int permanent);
903 extern bool res_stat(player_type *p_ptr, int stat);
904 extern bool apply_disenchant(player_type *p_ptr, int mode);
905 extern bool project(int who, int rad, int Depth, int y, int x, int dam, int typ, int flg);
906 extern bool project_hook(player_type *p_ptr, int typ, int dir, int dam, int flg);
907 
908 /* spells2.c */
909 extern void wipe_spell(int Depth, int cy, int cx, int r);
910 extern bool hp_player(player_type *p_ptr, int num);
911 extern bool hp_player_quiet(player_type *p_ptr, int num);
912 extern bool warding_glyph(player_type *p_ptr);
913 extern bool do_dec_stat(player_type *p_ptr, int stat);
914 extern bool do_res_stat(player_type *p_ptr, int stat);
915 extern bool do_inc_stat(player_type *p_ptr, int stat);
916 extern void identify_pack(player_type *p_ptr);
917 extern void message_pain(player_type *p_ptr, int m_idx, int dam);
918 extern bool remove_curse(player_type *p_ptr);
919 extern bool remove_all_curse(player_type *p_ptr);
920 extern bool restore_level(player_type *p_ptr);
921 extern void self_knowledge(player_type *p_ptr, bool spoil);
922 extern bool lose_all_info(player_type *p_ptr);
923 extern void map_area(player_type *p_ptr);
924 extern bool detect_treasure(player_type *p_ptr);
925 extern bool detect_objects_magic(player_type *p_ptr);
926 extern bool detect_invisible(player_type *p_ptr, bool pause);
927 extern bool detect_evil(player_type *p_ptr);
928 extern bool detect_creatures(player_type *p_ptr, bool pause);
929 extern bool detection(player_type *p_ptr);
930 extern bool detect_objects_normal(player_type *p_ptr);
931 extern bool detect_trap(player_type *p_ptr);
932 extern bool detect_sdoor(player_type *p_ptr);
933 extern void stair_creation(player_type *p_ptr);
934 extern bool enchant(player_type *p_ptr, object_type *o_ptr, int n, int eflag);
935 extern bool enchant_spell(player_type *p_ptr, int num_hit, int num_dam, int num_ac, bool discount);
936 extern bool enchant_spell_aux(player_type *p_ptr, int item, int num_hit, int num_dam, int num_ac, bool discount);
937 extern bool ident_spell(player_type *p_ptr);
938 extern bool ident_spell_aux(player_type *p_ptr, int item);
939 extern bool identify_fully(player_type *p_ptr);
940 extern bool identify_fully_item(player_type *p_ptr, int item);
941 extern bool recharge(player_type *p_ptr, int num);
942 extern bool recharge_aux(player_type *p_ptr, int item, int num);
943 extern bool speed_monsters(player_type *p_ptr);
944 extern bool slow_monsters(player_type *p_ptr);
945 extern bool sleep_monsters(player_type *p_ptr);
946 extern void aggravate_monsters(player_type *p_ptr, int who);
947 extern bool banishment(player_type *p_ptr);
948 extern bool mass_banishment(player_type *p_ptr);
949 extern bool probing(player_type *p_ptr);
950 extern bool banish_evil(player_type *p_ptr, int dist);
951 extern bool dispel_evil(player_type *p_ptr, int dam);
952 extern bool dispel_undead(player_type *p_ptr, int dam);
953 extern bool dispel_monsters(player_type *p_ptr, int dam);
954 extern bool turn_undead(player_type *p_ptr);
955 extern void destroy_area(int Depth, int y1, int x1, int r, bool full);
956 extern void earthquake(int Depth, int cy, int cx, int r);
957 extern void lite_room(player_type *p_ptr, int Depth, int y1, int x1);
958 extern void unlite_room(player_type *p_ptr, int Depth, int y1, int x1);
959 extern bool lite_area(player_type *p_ptr, int dam, int rad);
960 extern bool unlite_area(player_type *p_ptr, int dam, int rad);
961 extern bool fire_swarm(player_type *p_ptr, int num, int typ, int dir, int dam, int rad);
962 extern bool fire_ball(player_type *p_ptr, int typ, int dir, int dam, int rad);
963 extern bool fire_bolt(player_type *p_ptr, int typ, int dir, int dam);
964 extern bool fire_beam(player_type *p_ptr, int typ, int dir, int dam);
965 extern bool fire_bolt_or_beam(player_type *p_ptr, int prob, int typ, int dir, int dam);
966 extern bool lite_line(player_type *p_ptr, int dir);
967 extern bool strong_lite_line(player_type *p_ptr, int dir);
968 extern bool drain_life(player_type *p_ptr, int dir, int dam);
969 extern bool wall_to_mud(player_type *p_ptr, int dir);
970 extern bool destroy_door(player_type *p_ptr, int dir);
971 extern bool disarm_trap(player_type *p_ptr, int dir);
972 extern bool heal_monster(player_type *p_ptr, int dir);
973 extern bool speed_monster(player_type *p_ptr, int dir);
974 extern bool slow_monster(player_type *p_ptr, int dir);
975 extern bool sleep_monster(player_type *p_ptr, int dir);
976 extern bool confuse_monster(player_type *p_ptr, int dir, int plev);
977 extern bool fear_monster(player_type *p_ptr, int dir, int plev);
978 extern bool poly_monster(player_type *p_ptr, int dir);
979 extern bool clone_monster(player_type *p_ptr, int dir);
980 extern bool teleport_monster(player_type *p_ptr, int dir);
981 extern bool alter_reality(player_type *p_ptr, bool power);
982 extern bool heal_player_ball(player_type *p_ptr, int dir, int dam);
983 extern bool project_spell_ball(player_type *p_ptr, int dir, int spell);
984 extern bool project_prayer_ball(player_type *p_ptr, int dir, int spell);
985 extern bool door_creation(player_type *p_ptr);
986 extern bool trap_creation(player_type *p_ptr);
987 extern bool destroy_doors_touch(player_type *p_ptr);
988 extern bool sleep_monsters_touch(player_type *p_ptr);
989 extern bool create_artifact(player_type *p_ptr);
990 extern bool create_artifact_aux(player_type *p_ptr, int item);
991 extern void brand_ammo(player_type *p_ptr, int item, bool discount);
992 extern void brand_weapon(player_type *p_ptr, bool discount);
993 extern bool brand_bolts(player_type *p_ptr, bool discount);
994 extern void ring_of_power(player_type *p_ptr, int dir);
995 extern bool curse_armor(player_type *p_ptr);
996 extern bool curse_weapon(player_type *p_ptr);
997 
998 
999 /* store.c */
1000 extern bool get_store_item(player_type *p_ptr, int item, object_type *i_ptr);
1001 extern int get_player_store_name(int num, char *name);
1002 extern void store_purchase(player_type *p_ptr, int item, int amt, cptr checksum);
1003 extern void store_sell(player_type *p_ptr, int item, int amt);
1004 extern void store_confirm(player_type *p_ptr);
1005 extern void do_cmd_store(player_type *p_ptr, int pstore);
1006 extern void store_shuffle(int which);
1007 extern void store_maint(int which);
1008 extern void store_init(int which);
1009 extern s32b player_price_item(player_type *p_ptr, object_type *o_ptr);
1010 
1011 /* util.c */
1012 extern errr path_temp(char *buf, int max);
1013 extern void flush(void);
1014 extern void bell(void);
1015 extern void sound(player_type *p_ptr, int num);
1016 extern void text_to_ascii(char *buf, cptr str);
1017 extern void ascii_to_text(char *buf, cptr str);
1018 extern void keymap_init(void);
1019 extern void macro_add(cptr pat, cptr act, bool cmd_flag);
1020 extern char inkey(void);
1021 extern cptr quark_str(s16b num);
1022 extern s16b quark_add(cptr str);
1023 extern void fill_prevent_inscription(bool *arr, s16b quark);
1024 extern void update_prevent_inscriptions(player_type *p_ptr);
1025 extern bool check_guard_inscription( s16b quark, char what);
1026 extern s16b message_num(void);
1027 extern cptr message_str(s16b age);
1028 extern void message_add(cptr msg);
1029 extern void msg_print(player_type *p_ptr, cptr msg);
1030 extern void msg_print_aux(player_type *p_ptr, cptr msg, u16b type);
1031 extern void msg_broadcast(player_type *p_ptr, cptr msg);
1032 extern void msg_channel(int chan, cptr msg);
1033 extern void msg_format_p(player_type *p_ptr, cptr fmt, ...);
1034 extern void msg_format(player_type *p_ptr, cptr fmt, ...);
1035 extern void msg_format_type(player_type *p_ptr, u16b type, cptr fmt, ...);
1036 extern void msg_print_near(player_type *p_ptr, cptr msg);
1037 extern void msg_format_near(player_type *p_ptr, cptr fmt, ...);
1038 extern void msg_print_complex_near(player_type *p_ptr, player_type *q_ptr, u16b type, cptr msg);
1039 extern void msg_format_complex_near(player_type *p_ptr, player_type *q_ptr, u16b type, cptr fmt, ...);
1040 extern void msg_format_complex_far(player_type *p_ptr, player_type *q_ptr, u16b type, cptr fmt, cptr sender, ...);
1041 extern void msg_format_monster(int m_idx, player_type *q_ptr, u16b type, cptr fmt_vis, cptr fmt_inv, ...);
1042 extern void player_talk(player_type *p_ptr, char *msg);
1043 extern void channel_join(player_type *p_ptr, cptr channel, bool quiet);
1044 extern void channel_leave(player_type *p_ptr, cptr channel);
1045 extern void channel_leave_id(player_type *p_ptr, int i, bool quiet);
1046 extern void channels_leave(player_type *p_ptr);
1047 extern bool is_a_vowel(int ch);
1048 extern void log_history_event(player_type *p_ptr, char *msg, bool unique);
1049 extern void history_wipe(history_event *evt);
1050 extern cptr format_history_event(history_event *evt);
1051 extern int color_text_to_attr(cptr name);
1052 extern int color_opposite(int color);
1053 extern cptr attr_to_text(byte a);
1054 extern void send_prepared_info(player_type *p_ptr, byte win, byte stream, byte extra_params);
1055 extern void send_prepared_popup(player_type *p_ptr, cptr header);
1056 extern void monster_race_track_hack(player_type *p_ptr);
1057 extern void text_out(cptr buf);
1058 extern void text_out_c(byte a, cptr buf);
1059 extern void text_out_init(player_type *p_ptr);
1060 extern void text_out_done();
1061 extern void text_out_save();
1062 extern void text_out_load();
1063 extern void c_prt(player_type *p_ptr, byte attr, cptr str, int row, int col);
1064 extern void prt(player_type *p_ptr, cptr str, int row, int col);
1065 extern void clear_line(player_type *p_ptr, int row);
1066 extern void clear_from(player_type *p_ptr, int row);
1067 extern bool ask_for(player_type *p_ptr, char query, char *buf);
1068 extern bool askfor_aux(player_type *p_ptr, char query, char *buf, int row, int col, cptr prompt, cptr default_value, byte prompt_attr, byte input_attr);
1069 
1070 /* xtra1.c */
1071 extern void cnv_stat(int val, char *out_val);
1072 extern s16b modify_stat_value(int value, int amount);
1073 extern void notice_stuff(player_type *p_ptr);
1074 extern void update_stuff(player_type *p_ptr);
1075 extern void redraw_stuff(player_type *p_ptr);
1076 extern void window_stuff(player_type *p_ptr);
1077 extern void handle_stuff(player_type *p_ptr);
1078 extern void prt_history(player_type *p_ptr);
1079 extern void c_prt_status_line(player_type *p_ptr, cave_view_type *dest, int len);
1080 extern void player_flags(player_type *p_ptr, u32b *f1, u32b * f2, u32b *f3);
1081 
1082 /* xtra2.c */
1083 extern int get_player(player_type *p_ptr, object_type *o_ptr);
1084 extern void describe_player(player_type *p_ptr, player_type *who);
1085 extern bool set_blind(player_type *p_ptr, int v);
1086 extern bool set_confused(player_type *p_ptr, int v);
1087 extern bool set_poisoned(player_type *p_ptr, int v);
1088 extern bool set_afraid(player_type *p_ptr, int v);
1089 extern bool set_paralyzed(player_type *p_ptr, int v);
1090 extern bool set_image(player_type *p_ptr, int v);
1091 extern bool set_fast(player_type *p_ptr, int v);
1092 extern bool set_slow(player_type *p_ptr, int v);
1093 extern bool set_shield(player_type *p_ptr, int v);
1094 extern bool set_blessed(player_type *p_ptr, int v);
1095 extern bool set_hero(player_type *p_ptr, int v);
1096 extern bool set_shero(player_type *p_ptr, int v);
1097 extern bool set_protevil(player_type *p_ptr, int v);
1098 extern bool set_invuln(player_type *p_ptr, int v);
1099 extern bool set_tim_invis(player_type *p_ptr, int v);
1100 extern bool set_tim_infra(player_type *p_ptr, int v);
1101 extern bool set_oppose_acid(player_type *p_ptr, int v);
1102 extern bool set_oppose_elec(player_type *p_ptr, int v);
1103 extern bool set_oppose_fire(player_type *p_ptr, int v);
1104 extern bool set_oppose_cold(player_type *p_ptr, int v);
1105 extern bool set_oppose_pois(player_type *p_ptr, int v);
1106 extern bool set_stun(player_type *p_ptr, int v);
1107 extern bool set_cut(player_type *p_ptr, int v);
1108 extern bool set_food(player_type *p_ptr, int v);
1109 extern void set_recall(player_type *p_ptr, object_type * o_ptr);
1110 extern bool set_noise(player_type *p_ptr, int v);
1111 extern void check_experience(player_type *p_ptr);
1112 extern void gain_exp(player_type *p_ptr, s32b amount);
1113 extern void lose_exp(player_type *p_ptr, s32b amount);
1114 extern void monster_death(player_type *p_ptr, int m_idx);
1115 extern void player_death(player_type *p_ptr);
1116 extern void resurrect_player(player_type *p_ptr);
1117 extern bool mon_take_hit(player_type *p_ptr, int m_idx, int dam, bool *fear, cptr note);
1118 extern bool adjust_panel(player_type *p_ptr, int y, int x);
1119 extern void panel_bounds(player_type *p_ptr);
1120 extern void verify_panel(player_type *p_ptr);
1121 extern void setup_panel(player_type *p_ptr, bool adjust);
1122 extern cptr look_mon_desc(int m_idx);
1123 extern int pick_arena(int Depth, int y, int x);
1124 extern int pick_arena_opponent(player_type *p_ptr, int a);
1125 extern void access_arena(player_type *p_ptr, int y, int x);
1126 extern void ang_sort_swap_distance(void *player_context, vptr u, vptr v, int a, int b);
1127 extern bool ang_sort_comp_distance(void *player_context, vptr u, vptr v, int a, int b);
1128 extern bool ang_sort_comp_value(void *player_context, vptr u, vptr v, int a, int b);
1129 extern void ang_sort_swap_value(void *player_context, vptr u, vptr v, int a, int b);
1130 extern bool target_able(player_type *p_ptr, int m_idx);
1131 extern bool target_okay(player_type *p_ptr);
1132 extern s16b target_pick(player_type *p_ptr, int y1, int x1, int dy, int dx);
1133 extern bool target_set_interactive(player_type *p_ptr, int mode, char query);
1134 extern bool target_set_interactive_mouse(player_type *p_ptr, int mod, int y, int x);
1135 extern bool get_aim_dir(player_type *p_ptr, int *dp);
1136 extern bool get_item(player_type *p_ptr, int *cp, byte tval_hook);
1137 extern bool confuse_dir(bool confused, int *dp);
1138 extern int motion_dir(int y1, int x1, int y2, int x2);
1139 extern bool do_scroll_life(player_type *p_ptr);
1140 extern bool do_restoreXP_other(player_type *p_ptr);
1141 extern u32b level_speed(int Depth);
1142 extern int time_factor(player_type *p_ptr);
1143 extern int base_time_factor(player_type *p_ptr, int slowest);
1144 extern void show_motd(player_type *p_ptr);
1145 extern void show_tombstone(player_type *p_ptr);
1146 extern void wipe_socials();
1147 extern void boot_socials();
1148 extern void show_socials(player_type *p_ptr);
1149 extern void do_cmd_social(player_type *p_ptr, int dir, int i);
1150 extern void do_cmd_dungeon_master(player_type *p_ptr, char query);
1151 
1152 extern void master_new_hook(player_type *p_ptr, char hook_q, s16b oy, s16b ox);
1153 
1154 extern bool master_level(player_type *p_ptr, char * parms);
1155 extern bool master_build(player_type *p_ptr, char * parms);
1156 extern bool master_summon(player_type *p_ptr, char * parms);
1157 extern bool master_generate(player_type *p_ptr, char * parms);
1158 extern bool master_acquire(player_type *p_ptr, char * parms);
1159 extern bool master_player(player_type *p_ptr, char * parms);
1160 
1161 /*extern bool get_rep_dir(int *dp);*/
1162 
1163 extern bool c_get_item(int *cp, cptr pmt, bool equip, bool inven, bool floor);
1164 
1165 /* x-spell.c */
1166 extern cptr spell_names[MAX_SPELL_REALMS][PY_MAX_SPELLS];
1167 extern magic_type ghost_spells[8];
1168 extern void spells_init();
1169 extern int get_spell_index(const player_type *p_ptr, const object_type *o_ptr, int index);
1170 extern cptr get_spell_name(int tval, int index);
1171 extern cptr get_spell_info(player_type *p_ptr, int index);
1172 extern byte get_spell_flag(int tval, int spell, byte player_flag, byte *item_tester);
1173 extern bool cast_spell(player_type *p_ptr, int tval, int index);
1174 extern bool cast_spell_hack(player_type *p_ptr, int tval, int index);
1175 
1176 /* use-obj.c */
1177 extern bool use_object(player_type *p_ptr, object_type *o_ptr, int item, bool *ident);
1178 extern bool use_object_current(player_type *p_ptr);
1179 
1180 /*
1181  * Hack -- conditional (or "bizarre") externs
1182  */
1183 
1184 
1185 #ifndef HAVE_MEMSET
1186 /* util.c */
1187 extern void *memset(void*, int, size_t);
1188 #endif
1189 
1190 #ifndef HAVE_STRICMP
1191 /* util.c */
1192 extern int stricmp(cptr a, cptr b);
1193 #endif
1194 
1195 #ifdef MACINTOSH
1196 /* main-mac.c */
1197 /* extern void main(void); */
1198 #endif
1199 
1200 #ifdef WINDOWS
1201 /* main-win.c */
1202 /* extern int FAR PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, ...); */
1203 #endif
1204