-+-+-+-+-+-+-+-+ 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 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 X#endif X X#ifdef __TURBOC__ X#include`09 X#include`09 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 Xchar *strcat(); X#endif X X#ifdef VMS X#include X#include X#else X#ifdef USG X#ifndef ATARIST_MWC X#include X#ifndef ATARIST_TC X#include X#endif X#endif X#else X#include X#include 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 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 +-+-+-+-+-+-+-+-