-+-+-+-+-+-+-+-+ START OF PART 18 -+-+-+-+-+-+-+-+
X/* store1.c */
Xint32 item_value(struct inven_type *);
Xint32 sell_price(int, int32 *, int32 *, struct inven_type *);
Xint store_check_num(struct inven_type *, int);
Xvoid store_carry(int, int *, struct inven_type *);
Xvoid store_destroy(int, int, int);
Xvoid store_init(void);
Xvoid store_maint(void);
Xint noneedtobargain(int, int32);
Xvoid updatebargain(int, int32, int32);
X
X/* store2.c */
Xvoid enter_store(int);
X
X/* treasur1.c */
X
X/* treasur2.c */
X
X#ifdef VMS
X/* uexit.c */
Xvoid uexit (int);
X#endif
X
X#ifdef unix
X/* unix.c */
Xint check_input(int);
X#if 0
Xint system_cmd(char *);
X#endif
Xvoid user_name(char *);
Xint tilde(char *, char *);
X/* only declare this if stdio.h has been previously included, STDIO_LOADED
X   is defined after stdio.h is included */
X#if defined(STDIO_LOADED)
XFILE *tfopen(char *, char *);
X#endif
Xint topen(char *, int, int);
X#endif
X
X/* variable.c */
X
X/* wands.c */
Xvoid aim(void);
X
X/* wizard.c */
Xvoid wizard_light(void);
Xvoid change_character(void);
Xvoid wizard_create(void);
X
X#else
X/* !defined (LINT_ARGS) */
X
X#ifdef ATARI_ST
X/* atarist.c */
Xint check_input ();
Xvoid user_name ();
Xint access ();
Xvoid chmod ();
X#endif
X
X/* create.c */
Xvoid create_character();
X
X/* creature.c */
Xvoid update_mon();
Xint multiply_monster();
Xvoid creatures();
X
X/* death.c */
Xvoid display_scores();
Xint duplicate_character();
Xint32 total_points();
Xvoid exit_game();
X
X/* desc.c */
Xint is_a_vowel();
Xvoid magic_init();
Xint16 object_offset();
Xvoid known1();
Xint known1_p();
Xvoid known2();
Xint known2_p();
Xvoid clear_known2();
Xvoid clear_empty();
Xvoid store_bought();
Xint store_bought_p();
Xvoid sample();
Xvoid identify();
Xvoid unmagic_name();
Xvoid objdes();
Xvoid invcopy();
Xvoid desc_charges();
Xvoid desc_remain();
X
X/* dungeon.c */
Xvoid dungeon();
X
X/* eat.c */
Xvoid eat();
X
X/* files.c */
Xvoid init_scorefile();
Xvoid read_times();
Xvoid helpfile();
Xvoid print_objects();
Xint file_character();
X
X/* generate.c */
Xvoid generate_cave();
X
X#ifdef VMS
X/* getch.c */
Xint kbhit ();
Xvoid user_name ();
Xvoid vms_crmode ();
Xvoid vms_nocrmode ();
Xint opengetch ();
Xint closegetch ();
Xchar vms_getch ();
X#endif
X
X/* help.c */
Xvoid ident_char();
X
X/* io.c */
X#ifdef SIGTSTP
Xint suspend();
X#endif
Xvoid init_curses();
Xvoid moriaterm();
Xvoid put_buffer();
Xvoid put_qio();
Xvoid restore_term();
Xvoid shell_out();
Xchar inkey();
Xvoid flush();
Xvoid erase_line();
Xvoid clear_screen();
Xvoid clear_from();
Xvoid print();
Xvoid move_cursor_relative();
Xvoid count_msg_print();
Xvoid prt();
Xvoid move_cursor();
Xvoid msg_print();
Xint get_check();
Xint get_com();
Xint get_string();
Xvoid pause_line();
Xvoid pause_exit();
Xvoid save_screen();
Xvoid restore_screen();
Xvoid bell();
Xvoid screen_map();
X
X/* magic.c */
Xvoid cast();
X
X/* main.c */
Xint main();
X
X/* misc1.c */
Xvoid init_seeds();
Xvoid set_seed();
Xvoid reset_seed();
Xint check_time();
Xint randint();
Xint randnor();
Xint bit_pos();
Xint in_bounds();
Xvoid panel_bounds();
Xint get_panel();
Xint panel_contains();
Xint distance();
Xint next_to_walls();
Xint next_to_corr();
Xint damroll();
Xint pdamroll();
Xint los();
Xunsigned char loc_symbol();
Xint test_light();
Xvoid prt_map();
Xint compact_monsters();
Xvoid add_food();
Xint popm();
Xint max_hp();
Xint place_monster();
Xvoid place_win_monster();
Xint get_mons_num();
Xvoid alloc_monster();
Xint summon_monster();
Xint summon_undead();
Xint popt();
Xvoid pusht();
Xint magik();
Xint m_bonus();
X
X/* misc2.c */
Xvoid magic_treasure();
Xvoid set_options();
X
X/* misc3.c */
Xvoid place_trap();
Xvoid place_rubble();
Xvoid place_gold();
Xint get_obj_num();
Xvoid place_object();
Xvoid alloc_object();
Xvoid random_object();
Xvoid cnv_stat();
Xvoid prt_stat();
Xvoid prt_field();
Xint stat_adj();
Xint chr_adj();
Xint con_adj();
Xchar *title_string();
Xvoid prt_title();
Xvoid prt_level();
Xvoid prt_cmana();
Xvoid prt_mhp();
Xvoid prt_chp();
Xvoid prt_pac();
Xvoid prt_gold();
Xvoid prt_depth();
Xvoid prt_hunger();
Xvoid prt_blind();
Xvoid prt_confused();
Xvoid prt_afraid();
Xvoid prt_poisoned();
Xvoid prt_state();
Xvoid prt_speed();
Xvoid prt_study();
Xvoid prt_winner();
Xint8u modify_stat();
Xvoid set_use_stat();
Xint inc_stat();
Xint dec_stat();
Xint res_stat();
Xvoid bst_stat();
Xint tohit_adj();
Xint toac_adj();
Xint todis_adj();
Xint todam_adj();
Xvoid prt_stat_block();
Xvoid draw_cave();
Xvoid put_character();
Xvoid put_stats();
Xchar *likert();
Xvoid put_misc1();
Xvoid put_misc2();
Xvoid put_misc3();
Xvoid display_char();
Xvoid get_name();
Xvoid change_name();
Xvoid inven_destroy();
Xvoid take_one_item();
Xvoid inven_drop();
Xint inven_damage();
Xint weight_limit();
Xint inven_check_num();
Xint inven_check_weight();
Xvoid check_strength();
Xint inven_carry();
Xint spell_chance();
Xvoid print_spells();
Xint get_spell();
Xvoid calc_spells();
Xvoid gain_spells();
Xvoid calc_mana();
Xvoid prt_experience();
Xvoid calc_hitpoints();
Xvoid insert_str();
Xvoid insert_lnum();
Xint enter_wiz_mode();
Xint attack_blows();
Xint tot_dam();
Xint critical_blow();
Xint mmove();
Xint player_saves();
Xint find_range();
Xvoid teleport();
X
X/* misc4.c */
Xvoid scribe_object();
Xvoid add_inscribe();
Xvoid inscribe();
Xvoid check_view();
X
X/* monsters.c */
X
X/* moria1.c */
Xvoid change_speed();
Xvoid py_bonuses();
Xvoid calc_bonuses();
Xint show_inven();
Xchar *describe_use();
Xint show_equip();
Xvoid takeoff();
Xint verify();
Xvoid inven_command();
Xint get_item();
Xint no_light();
Xint get_dir();
Xint get_alldir();
Xvoid move_rec();
Xvoid light_room();
Xvoid lite_spot();
Xvoid move_light();
Xvoid disturb();
Xvoid search_on();
Xvoid search_off();
Xvoid rest();
Xvoid rest_off();
Xint test_hit();
Xvoid take_hit();
X
X/* moria2.c */
Xvoid change_trap();
Xvoid search();
Xvoid find_init();
Xvoid find_run();
Xvoid end_find();
Xvoid area_affect();
Xint minus_ac();
Xvoid corrode_gas();
Xvoid poison_gas();
Xvoid fire_dam();
Xvoid cold_dam();
Xvoid light_dam();
Xvoid acid_dam();
X
X/* moria3.c */
Xint cast_spell();
Xvoid delete_monster();
Xvoid fix1_delete_monster();
Xvoid fix2_delete_monster();
Xint delete_object();
Xint32u monster_death();
Xint mon_take_hit();
Xvoid py_attack();
Xvoid move_char();
Xvoid chest_trap();
Xvoid openobject();
Xvoid closeobject();
Xint twall();
X
X/* moria4.c */
Xvoid tunnel();
Xvoid disarm_trap();
Xvoid look();
Xvoid throw_object();
Xvoid bash();
X
X#ifdef MSDOS
X/* ms_misc.c */
Xvoid user_name();
Xchar *getlogin();
X#ifdef __TURBOC__
Xvoid sleep();
X#else
Xunsigned int sleep();
X#endif
X#if 0
Xvoid error();
Xvoid warn();
X#else
X/* Because an empty parameter list in a declaration can not match a paramete
Vr
X   list with an elipsis in a definition.  */
Xvoid error (char *fmt, ...);
Xvoid warn (char *fmt, ...);
X#endif
Xvoid msdos_init();
Xvoid msdos_raw();
Xvoid msdos_noraw();
Xint bios_getch();
Xint msdos_getch();
Xvoid bios_clear();
Xvoid msdos_intro();
Xvoid bios_clear();
X#endif
X
X/* potions.c */
Xvoid quaff();
X
X/* prayer.c */
Xvoid pray();
X
X/* recall.c */
Xint bool_roff_recall();
Xint roff_recall();
X
X/* rnd.c */
Xint32u get_rnd_seed();
Xvoid set_rnd_seed();
Xint32 rnd();
X
X/* save.c */
Xint save_char();
Xint _save_char();
Xint get_char();
X#if defined(STDIO_LOADED)
Xvoid set_fileptr();
X#endif
Xvoid wr_highscore();
Xvoid rd_highscore();
X
X/* scrolls.c */
Xvoid read_scroll();
X
X/* sets.c */
Xint set_room();
Xint set_corr();
Xint set_floor();
Xint set_corrodes();
Xint set_flammable();
Xint set_frost_destroy();
Xint set_acid_affect();
Xint set_lightning_destroy();
Xint set_null();
Xint set_acid_destroy();
Xint set_fire_destroy();
Xint general_store();
Xint armory();
Xint weaponsmith();
Xint temple();
Xint alchemist();
Xint magic_shop();
X#ifdef MAC
Xint store_buy();
X#endif
X
X/* signals.c */
Xvoid nosignals();
Xvoid signals();
Xvoid init_signals();
Xvoid ignore_signals();
Xvoid default_signals();
Xvoid restore_signals();
X
X/* spells.c */
Xvoid monster_name();
Xvoid lower_monster_name();
Xint sleep_monsters1();
Xint detect_treasure();
Xint detect_object();
Xint detect_trap();
Xint detect_sdoor();
Xint detect_invisible();
Xint light_area();
Xint unlight_area();
Xvoid map_area();
Xint ident_spell();
Xint aggravate_monster();
Xint trap_creation();
Xint door_creation();
Xint td_destroy();
Xint detect_monsters();
Xvoid light_line();
Xvoid starlite();
Xint disarm_all();
Xvoid get_flags();
Xvoid fire_bolt();
Xvoid fire_ball();
Xvoid breath();
Xint recharge();
Xint hp_monster();
Xint drain_life();
Xint speed_monster();
Xint confuse_monster();
Xint sleep_monster();
Xint wall_to_mud();
Xint td_destroy2();
Xint poly_monster();
Xint build_wall();
Xint clone_monster();
Xvoid teleport_away();
Xvoid teleport_to();
Xint teleport_monster();
Xint mass_genocide();
Xint genocide();
Xint speed_monsters();
Xint sleep_monsters2();
Xint mass_poly();
Xint detect_evil();
Xint hp_player();
Xint cure_confusion();
Xint cure_blindness();
Xint cure_poison();
Xint remove_fear();
Xvoid earthquake();
Xint protect_evil();
Xvoid create_food();
Xint dispel_creature();
Xint turn_undead();
Xvoid warding_glyph();
Xvoid lose_str();
Xvoid lose_int();
Xvoid lose_wis();
Xvoid lose_dex();
Xvoid lose_con();
Xvoid lose_chr();
Xvoid lose_exp();
Xint slow_poison();
Xvoid bless();
Xvoid detect_inv2();
Xvoid destroy_area();
Xint enchant();
Xint remove_curse();
Xint restore_level();
X
X/* staffs.c */
Xvoid use();
X
X/* store1.c */
Xint32 item_value();
Xint32 sell_price();
Xint store_check_num();
Xvoid store_carry();
Xvoid store_destroy();
Xvoid store_init();
Xvoid store_maint();
Xint noneedtobargain();
Xvoid updatebargain();
X
X/* store2.c */
Xvoid enter_store();
X
X/* treasur1.c */
X
X/* treasur2.c */
X
X#ifdef VMS
X/* uexit.c */
Xvoid uexit ();
X#endif
X
X#ifdef unix
X/* unix.c */
Xint check_input();
X#if 0
Xint system_cmd();
X#endif
Xvoid user_name();
Xint tilde();
X/* only declare this if stdio.h has been previously included, STDIO_LOADED
X   is defined after stdio.h is included  */
X#if defined(STDIO_LOADED)
XFILE *tfopen();
X#endif
Xint topen();
X#endif
X
X/* variable.c */
X
X/* wands.c */
Xvoid aim();
X
X/* wizard.c */
Xvoid wizard_light();
Xvoid change_character();
Xvoid wizard_create();
X
X#endif
X
X#ifdef unix
X/* call functions which expand tilde before calling open/fopen */
X#define open topen
X#define fopen tfopen
X#endif
X
X/* st-stuff.c for the atari ST */
X#if defined(atarist) && defined(__GNUC__)
Xextern char extended_file_name`5B80`5D;
X#endif
$ CALL UNPACK EXTERNS.H;1 438741904
$ create 'f'
X/* source/files.c: misc code to access files used by Moria
X
X   Copyright (c) 1989-92 James E. Wilson, Robert A. Koeneke
X
X   This software may be copied and distributed for educational, research, an
Vd
X   not for profit purposes provided that this copyright and statement are
X   included in all such copies. */
X
X#include <stdio.h>
X
X#ifndef STDIO_LOADED
X#define STDIO_LOADED
X#endif
X
X#if 0
X/* moved to externs.h to avoid VMS 'psect' problem */
X#include <errno.h>
X#endif
X
X#ifdef __TURBOC__
X#include`09<io.h>
X#include`09<stdlib.h>
X#endif /* __TURBOC__ */
X`20
X#include "config.h"
X#include "constant.h"
X#include "types.h"
X
X#if defined(GEMDOS) && (__STDC__ == 0) && !defined(ATARIST_TC)
X#include <access.h>
Xchar *strcat();
X#endif
X
X#ifdef VMS
X#include <string.h>
X#include <file.h>
X#else
X#ifdef USG
X#ifndef ATARIST_MWC
X#include <string.h>
X#ifndef ATARIST_TC
X#include <fcntl.h>
X#endif
X#endif
X#else
X#include <strings.h>
X#include <sys/file.h>
X#endif
X#if defined(ultrix) `7C`7C defined(USG)
Xvoid exit();
X#endif
X#endif
X
X/* This must be included after fcntl.h, which has a prototype for `60open'
X   on some systems.  Otherwise, the `60open' prototype conflicts with the
X   `60topen' declaration.  */
X#include "externs.h"
X
X#ifdef ATARIST_TC
X/* Include this to get prototypes for standard library functions.  */
X#include <stdlib.h>
X#endif
X
X#ifdef MAC
X#include "ScrnMgr.h"
X#define GNRL_ALRT`091024
X#endif
X
X/*
X *  init_scorefile
X *  Open the score file while we still have the setuid privileges.  Later
X *  when the score is being written out, you must be sure to flock the file
X *  so we don't have multiple people trying to write to it at the same time.
X *  Craig Norborg (doc)`09`09Mon Aug 10 16:41:59 EST 1987
X */
Xvoid init_scorefile()
X`7B
X#ifdef MAC
X  appldirectory ();
X#endif
X
X#if defined(atarist) `7C`7C defined(ATARI_ST) `7C`7C defined(MAC)
X  highscore_fp = fopen(MORIA_TOP, "rb+");
X#else
X  highscore_fp = fopen(MORIA_TOP, "r+");
X#endif
X
X  if (highscore_fp == NULL)
X    `7B
X#ifdef MAC
X      highscore_fp = fopen (MORIA_TOP, "wb");`09/* Create it if not there.
V  */
X      if (highscore_fp == NULL)
X`09`7B
X`09  ParamText ("\pCan't create score file!", NULL, NULL, NULL);
X`09  DoScreenALRT (GNRL_ALRT, akStop, fixHalf, fixThird);
X`09  ExitToShell ();
X`09`7D
X      setfileinfo (MORIA_TOP, currentdirectory (), SCORE_FTYPE);
X#else
X      (void) fprintf (stderr, "Can't open score file \"%s\"\n", MORIA_TOP);
X      exit(1);
X#endif
X    `7D
X#if defined(MSDOS) `7C`7C defined(VMS) `7C`7C defined(MAC)
X  /* can't leave it open, since this causes problems on networked PCs and VM
VS,
X     we DO want to check to make sure we can open the file, though */
X  fclose (highscore_fp);
X#endif
X
X#ifdef MAC
X  restoredirectory ();
X#endif
X`7D
X
X#ifndef MAC
X/* Attempt to open the intro file`09`09`09-RAK-`09 */
X/* This routine also checks the hours file vs. what time it is`09-Doc */
Xvoid read_times()
X`7B
X  vtype in_line;
X  register int i;
X  FILE *file1;
X
X#ifdef MORIA_HOU
X  /* Attempt to read hours.dat.`09 If it does not exist,`09   */
X  /* inform the user so he can tell the wizard about it`09 */
X  if ((file1 = fopen(MORIA_HOU, "r")) != NULL)
X    `7B
+-+-+-+-+-+-+-+-  END  OF PART 18 +-+-+-+-+-+-+-+-
