-+-+-+-+-+-+-+-+ START OF PART 17 -+-+-+-+-+-+-+-+ Xextern inven_type inventory`5BINVEN_ARRAY_SIZE`5D; Xextern char *special_names`5BSN_ARRAY_SIZE`5D; Xextern int16 sorted_objects`5BMAX_DUNGEON_OBJ`5D; Xextern int16 inven_ctr;`09`09/* Total different obj's`09*/ Xextern int16 inven_weight;`09/* Cur carried weight`09*/ Xextern int16 equip_ctr;`09/* Cur equipment ctr`09*/ Xextern int16 tcptr;`09/* Cur treasure heap ptr`09*/ X X/* Following are creature arrays and variables`09`09`09*/ X#ifdef MACGAME Xextern creature_type *c_list; X#else Xextern creature_type c_list`5BMAX_CREATURES`5D; X#endif Xextern monster_type m_list`5BMAX_MALLOC`5D; Xextern int16 m_level`5BMAX_MONS_LEVEL+1`5D; Xextern m_attack_type monster_attacks`5BN_MONS_ATTS`5D; X#ifdef MAC Xextern recall_type *c_recall; X#else Xextern recall_type c_recall`5BMAX_CREATURES`5D;`09/* Monster memories. -CJS- V */ X#endif Xextern monster_type blank_monster;`09/* Blank monster values`09*/ Xextern int16 mfptr;`09/* Cur free monster ptr`09*/ Xextern int16 mon_tot_mult;`09/* # of repro's of creature`09*/ X X/* Following are arrays for descriptive pieces`09`09`09*/ X#ifdef MACGAME Xextern char **colors; Xextern char **mushrooms; Xextern char **woods; Xextern char **metals; Xextern char **rocks; Xextern char **amulets; Xextern char **syllables; X#else Xextern char *colors`5BMAX_COLORS`5D; Xextern char *mushrooms`5BMAX_MUSH`5D; Xextern char *woods`5BMAX_WOODS`5D; Xextern char *metals`5BMAX_METALS`5D; Xextern char *rocks`5BMAX_ROCKS`5D; Xextern char *amulets`5BMAX_AMULETS`5D; Xextern char *syllables`5BMAX_SYLLABLES`5D; X#endif X Xextern int8u blows_table`5B7`5D`5B6`5D; X Xextern int16u normal_table`5BNORMAL_TABLE_SIZE`5D; X X/* Initialized data which had to be moved from some other file */ X/* Since these get modified, macrsrc.c must be able to access them */ X/* Otherwise, game cannot be made restartable */ X/* dungeon.c */ Xextern char last_command; /* Memory of previous command. */ X/* moria1.c */ X/* Track if temporary light about player. */ Xextern int light_flag; X X#ifdef MSDOS Xextern int8u`09floorsym, wallsym; Xextern int`09ansi, saveprompt; Xextern char`09moriatop`5B`5D, moriasav`5B`5D; X#endif X X/* function return values */ X/* only extern functions declared here, static functions declared inside X the file that defines them */ X#if defined(LINT_ARGS) X/* these prototypes can be used by MSC and TC for type checking of arguments X WARNING: note that this does not work for all ANSI C compilers, e.g. Gnu V C, X will give error messages if you use these prototypes. X This is due to differing interpretations of the ANSI C standard, X specifically how to handle promotion of parameters. In my reading of X the standard, I believe that Gnu C's behaviour is correct. */ X X#ifdef ATARI_ST X/* atarist.c */ Xint check_input(int microsec); Xvoid user_name(char * buf); Xint access(char * name, int dum); Xvoid chmod(char * name, int mode); /* dummy function */ X#endif X X/* create.c */ Xvoid create_character(void); X X/* creature.c */ Xvoid update_mon(int); Xint multiply_monster(int, int, int, int); Xvoid creatures(int); X X/* death.c */ Xvoid display_scores(int); Xint duplicate_character(void); Xint32 total_points(void); Xvoid exit_game(void); X X/* desc.c */ Xint is_a_vowel(char); Xvoid magic_init(void); Xint16 object_offset(struct inven_type *); Xvoid known1(struct inven_type *); Xint known1_p(struct inven_type *); Xvoid known2(struct inven_type *); Xint known2_p(struct inven_type *); Xvoid clear_known2(struct inven_type *); Xvoid clear_empty(inven_type *); Xvoid store_bought(inven_type *); Xint store_bought_p(inven_type *); Xvoid sample(struct inven_type *); Xvoid identify(int *); Xvoid unmagic_name(struct inven_type *); Xvoid objdes(char *, struct inven_type *, int); Xvoid invcopy(inven_type *, int); Xvoid desc_charges(int); Xvoid desc_remain(int); X X/* dungeon.c */ Xvoid dungeon(void); X X/* eat.c */ Xvoid eat(void); X X/* files.c */ Xvoid init_scorefile(void); Xvoid read_times(void); Xvoid helpfile(char *); Xvoid print_objects(void); X#ifdef MAC Xint file_character(void); X#else Xint file_character(char *); X#endif X X/* generate.c */ Xvoid generate_cave(void); X X#ifdef VMS X/* getch.c */ Xint kbhit (void); Xvoid user_name (char *); Xvoid vms_crmode (void); Xvoid vms_nocrmode (void); Xint opengetch (void); Xint closegetch (void); Xchar vms_getch (void); X#endif X X/* help.c */ Xvoid ident_char(void); X X/* io.c */ X#ifdef SIGTSTP Xint suspend(void); X#endif Xvoid init_curses(void); Xvoid moriaterm(void); Xvoid put_buffer(char *, int, int); Xvoid put_qio(void); Xvoid restore_term(void); Xvoid shell_out(void); Xchar inkey(void); Xvoid flush(void); Xvoid erase_line(int, int); Xvoid clear_screen(void); Xvoid clear_from(int); Xvoid print(char, int, int); Xvoid move_cursor_relative(int, int); Xvoid count_msg_print(char *); Xvoid prt(char *, int, int); Xvoid move_cursor(int, int); Xvoid msg_print(char *); Xint get_check(char *); Xint get_com(char *, char *); Xint get_string(char *, int, int, int); Xvoid pause_line(int); Xvoid pause_exit(int, int); Xvoid save_screen(void); Xvoid restore_screen(void); Xvoid bell(void); Xvoid screen_map(void); X X/* magic.c */ Xvoid cast(void); X X/* main.c */ Xint main(int, char **); X X/* misc1.c */ Xvoid init_seeds(int32u); Xvoid set_seed(int32u); Xvoid reset_seed(void); Xint check_time(void); Xint randint(int); Xint randnor(int, int); Xint bit_pos(int32u *); Xint in_bounds(int, int); Xvoid panel_bounds(void); Xint get_panel(int, int, int); Xint panel_contains(int, int); Xint distance(int, int, int, int); Xint next_to_wall(int, int); Xint next_to_corr(int, int); Xint damroll(int, int); Xint pdamroll(unsigned char *); Xint los(int, int, int, int); Xunsigned char loc_symbol(int, int); Xint test_light(int, int); Xvoid prt_map(void); Xint compact_monsters(void); Xvoid add_food(int); Xint popm(void); Xint max_hp(unsigned char *); Xint place_monster(int, int, int, int); Xvoid place_win_monster(void); Xint get_mons_num(int); Xvoid alloc_monster(int, int, int); Xint summon_monster(int * ,int *, int); Xint summon_undead(int *, int *); Xint popt(void); Xvoid pusht(int8u); Xint magik(int); Xint m_bonus(int, int, int); X X/* misc2.c */ Xvoid magic_treasure(int, int); Xvoid set_options(void); X X/* misc3.c */ Xvoid place_trap(int, int, int); Xvoid place_rubble(int, int); Xvoid place_gold(int, int); Xint get_obj_num(int); Xvoid place_object(int, int); Xvoid alloc_object(int (*)(), int, int); Xvoid random_object(int, int, int); Xvoid cnv_stat(int8u, char *); Xvoid prt_stat(int); Xvoid prt_field(char *, int, int); Xint stat_adj(int); Xint chr_adj(void); Xint con_adj(void); Xchar *title_string(void); Xvoid prt_title(void); Xvoid prt_level(void); Xvoid prt_cmana(void); Xvoid prt_mhp(void); Xvoid prt_chp(void); Xvoid prt_pac(void); Xvoid prt_gold(void); Xvoid prt_depth(void); Xvoid prt_hunger(void); Xvoid prt_blind(void); Xvoid prt_confused(void); Xvoid prt_afraid(void); Xvoid prt_poisoned(void); Xvoid prt_state(void); Xvoid prt_speed(void); Xvoid prt_study(void); Xvoid prt_winner(void); Xint8u modify_stat(int, int16); Xvoid set_use_stat(int); Xint inc_stat(int); Xint dec_stat(int); Xint res_stat(int); Xvoid bst_stat(int, int); Xint tohit_adj(void); Xint toac_adj(void); Xint todis_adj(void); Xint todam_adj(void); Xvoid prt_stat_block(void); Xvoid draw_cave(void); Xvoid put_character(void); Xvoid put_stats(void); Xchar *likert(int, int); Xvoid put_misc1(void); Xvoid put_misc2(void); Xvoid put_misc3(void); Xvoid display_char(void); Xvoid get_name(void); Xvoid change_name(void); Xvoid inven_destroy(int); Xvoid take_one_item(struct inven_type *, struct inven_type *); Xvoid inven_drop(int, int); Xint inven_damage(int (*)(), int); Xint weight_limit(void); Xint inven_check_num(struct inven_type *); Xint inven_check_weight(struct inven_type *); Xvoid check_strength(void); Xint inven_carry(struct inven_type *); Xint spell_chance(int); Xvoid print_spells(int *, int, int, int); Xint get_spell(int *, int, int *, int *, char *, int); Xvoid calc_spells(int); Xvoid gain_spells(void); Xvoid calc_mana(int); Xvoid prt_experience(void); Xvoid calc_hitpoints(void); Xvoid insert_str(char *, char *, char *); Xvoid insert_lnum(char *, char *, int32, int); Xint enter_wiz_mode(void); Xint attack_blows(int, int *); Xint tot_dam(struct inven_type *, int, int); Xint critical_blow(int, int, int, int); Xint mmove(int, int *, int *); Xint player_saves(void); Xint find_range(int, int, int *, int *); Xvoid teleport(int); X X/* misc4.c */ Xvoid scribe_object(void); Xvoid add_inscribe(struct inven_type *, int8u); Xvoid inscribe(struct inven_type *, char *); Xvoid check_view(void); X X/* monsters.c */ X X/* moria1.c */ Xvoid change_speed(int); Xvoid py_bonuses(struct inven_type *, int); Xvoid calc_bonuses(void); Xint show_inven(int, int, int, int, char *); Xchar *describe_use(int); Xint show_equip(int, int); Xvoid takeoff(int, int); Xint verify(char *, int); Xvoid inven_command(char); Xint get_item(int *, char *, int, int, char *, char *); Xint no_light(void); Xint get_dir(char *, int *); Xint get_alldir(char *, int *); Xvoid move_rec(int, int, int, int); Xvoid light_room(int, int); Xvoid lite_spot(int, int); Xvoid move_light(int, int, int, int); Xvoid disturb(int, int); Xvoid search_on(void); Xvoid search_off(void); Xvoid rest(void); Xvoid rest_off(void); Xint test_hit(int, int, int, int, int); Xvoid take_hit(int, char *); X X/* moria2.c */ Xvoid change_trap(int, int); Xvoid search(int, int, int); Xvoid find_init(int); Xvoid find_run(void); Xvoid end_find(void); Xvoid area_affect(int, int, int); Xint minus_ac(int32u); Xvoid corrode_gas(char *); Xvoid poison_gas(int, char *); Xvoid fire_dam(int, char *); Xvoid cold_dam(int, char *); Xvoid light_dam(int, char *); Xvoid acid_dam(int, char *); X X/* moria3.c */ Xint cast_spell(char * ,int, int *, int *); Xvoid delete_monster(int); Xvoid fix1_delete_monster(int); Xvoid fix2_delete_monster(int); Xint delete_object(int, int); Xint32u monster_death(int, int, int32u); Xint mon_take_hit(int, int); Xvoid py_attack(int, int); Xvoid move_char(int, int); Xvoid chest_trap(int, int); Xvoid openobject(void); Xvoid closeobject(void); Xint twall(int, int, int, int); X X/* moria4.c */ Xvoid tunnel(int); Xvoid disarm_trap(void); Xvoid look(void); Xvoid throw_object(void); Xvoid bash(void); X X#ifdef MSDOS X/* ms_misc.c */ Xvoid user_name(char *); Xchar *getlogin(void); X#ifdef __TURBOC__ Xvoid sleep(unsigned); X#else Xunsigned int sleep(int); X#endif Xvoid error(char *, ...); Xvoid warn(char *, ...); Xvoid msdos_init(void); Xvoid msdos_raw(void); Xvoid msdos_noraw(void); Xint bios_getch(void); Xint msdos_getch(void); Xvoid bios_clear(void); Xvoid msdos_intro(void); Xvoid bios_clear(void); X#endif X X/* potions.c */ Xvoid quaff(void); X X/* prayer.c */ Xvoid pray(void); X X/* recall.c */ Xint bool_roff_recall(int); Xint roff_recall(int); X X/* rnd.c */ Xint32u get_rnd_seed(void); Xvoid set_rnd_seed(int32u); Xint32 rnd(void); X X/* save.c */ X#ifdef MAC Xint save_char(int); X#else Xint save_char(void); X#endif Xint _save_char(char *); Xint get_char(int *); X#if defined(STDIO_LOADED) Xvoid set_fileptr(FILE *); X#endif Xvoid wr_highscore(high_scores *); Xvoid rd_highscore(high_scores *); X X/* scrolls.c */ Xvoid read_scroll(void); X X/* sets.c */ Xint set_room(int); Xint set_corr(int); Xint set_floor(int); Xint set_corrodes(inven_type *); Xint set_flammable(inven_type *); Xint set_frost_destroy(inven_type *); Xint set_acid_affect(inven_type *); Xint set_lightning_destroy(inven_type *); Xint set_null(inven_type *); Xint set_acid_destroy(inven_type *); Xint set_fire_destroy(inven_type *); Xint general_store(int); Xint armory(int); Xint weaponsmith(int); Xint temple(int); Xint alchemist(int); Xint magic_shop(int); X#ifdef MAC Xint store_buy(int, int); X#endif X X/* signals.c */ Xvoid nosignals(void); Xvoid signals(void); Xvoid init_signals(void); Xvoid ignore_signals(void); Xvoid default_signals(void); Xvoid restore_signals(void); X X/* spells.c */ Xvoid monster_name(char *, struct monster_type *, struct creature_type *); Xvoid lower_monster_name(char *, struct monster_type *, X`09`09`09struct creature_type *); Xint sleep_monsters1(int, int); Xint detect_treasure(void); Xint detect_object(void); Xint detect_trap(void); Xint detect_sdoor(void); Xint detect_invisible(void); Xint light_area(int, int); Xint unlight_area(int, int); Xvoid map_area(void); Xint ident_spell(void); Xint aggravate_monster(int); Xint trap_creation(void); Xint door_creation(void); Xint td_destroy(void); Xint detect_monsters(void); Xvoid light_line(int, int, int); Xvoid starlite(int, int); Xint disarm_all(int, int, int); Xvoid get_flags(int, int32u *, int *, int (**)()); Xvoid fire_bolt(int, int, int, int, int, char *); Xvoid fire_ball(int, int, int, int, int, char *); Xvoid breath(int, int, int, int, char *, int); Xint recharge(int); Xint hp_monster(int, int, int, int); Xint drain_life(int, int, int); Xint speed_monster(int, int, int, int); Xint confuse_monster(int, int, int); Xint sleep_monster(int, int, int); Xint wall_to_mud(int, int, int); Xint td_destroy2(int, int, int); Xint poly_monster(int, int, int); Xint build_wall(int, int, int); Xint clone_monster(int, int, int); Xvoid teleport_away(int, int); Xvoid teleport_to(int, int); Xint teleport_monster(int, int, int); Xint mass_genocide(void); Xint genocide(void); Xint speed_monsters(int); Xint sleep_monsters2(void); Xint mass_poly(void); Xint detect_evil(void); Xint hp_player(int); Xint cure_confusion(void); Xint cure_blindness(void); Xint cure_poison(void); Xint remove_fear(void); Xvoid earthquake(void); Xint protect_evil(void); Xvoid create_food(void); Xint dispel_creature(int, int); Xint turn_undead(void); Xvoid warding_glyph(void); Xvoid lose_str(void); Xvoid lose_int(void); Xvoid lose_wis(void); Xvoid lose_dex(void); Xvoid lose_con(void); Xvoid lose_chr(void); Xvoid lose_exp(int32); Xint slow_poison(void); Xvoid bless(int); Xvoid detect_inv2(int); Xvoid destroy_area(int, int); Xint enchant(int16 *, int16); Xint remove_curse(void); Xint restore_level(void); X X/* staffs.c */ Xvoid use(void); X +-+-+-+-+-+-+-+- END OF PART 17 +-+-+-+-+-+-+-+-