[comp.sources.games] v02i076: umoria - single player dungeon simulation, Part11/16

games-request@tekred.TEK.COM (11/05/87)

Submitted by: "James E. Wilson" <wilson@ji.berkeley.edu>
Comp.sources.games: Volume 2, Issue 76
Archive-name: umoria/Part11




#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 11 (of 16)."
# Contents:  Makefile.ultrix create.c moria.doc.1
# Wrapped by billr@tekred on Wed Nov  4 10:00:02 1987
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f Makefile.ultrix -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"Makefile.ultrix\"
else
echo shar: Extracting \"Makefile.ultrix\" \(2453 characters\)
sed "s/^X//" >Makefile.ultrix <<'END_OF_Makefile.ultrix'
X# BINDIR is the directory where the moria binary while be put
X# LIBDIR is where the other files (scoreboard, news, hours) will be put
X#  LIBDIR must be the same directory defined in config.h
XBINDIR = /usr/public/moria
XLIBDIR = /usr/public/moriadir
X
XCFLAGS = -O -DBUGGY_CURSES -DKEY_BINDINGS=ORIGINAL
X
XSRCS = main.c misc1.c misc2.c store1.c files.c io.c create.c desc.c\
X	generate.c sets.c dungeon.c creature.c death.c eat.c help.c magic.c\
X	potions.c prayer.c save.c staffs.c wands.c scrolls.c spells.c\
X	wizard.c store2.c signals.c moria1.c moria2.c monsters.c\
X	treasure1.c treasure2.c variables.c
X
XOBJS = main.o misc1.o misc2.o store1.o files.o io.o create.o desc.o\
X	generate.o sets.o dungeon.o creature.o death.o eat.o help.o magic.o\
X	potions.o prayer.o save.o staffs.o wands.o scrolls.o spells.o\
X	wizard.o store2.o signals.o moria1.o moria2.o monsters.o\
X  	treasure1.o treasure2.o variables.o
X
Xmoria : $(OBJS)
X	cc -o moria $(CFLAGS) $(OBJS) -lm -lcurses -ltermcap
X
Xlintout : $(SRCS)
X	lint -DBUGGY_CURSES $(SRCS) -lm -lcurses -ltermcap > lintout
X
XTAGS : $(SRCS)
X	ctags -x $(SRCS) > TAGS
X
Xinstall:
X	cp moria $(BINDIR)
X	cp Moria_hours $(LIBDIR)
X	cp Moria_news $(LIBDIR)
X	cp Highscores $(LIBDIR)
X	chmod 4511 $(BINDIR)/moria
X	chmod 644 $(LIBDIR)/Highscores
X	chmod 444 $(LIBDIR)/Moria_news
X	chmod 444 $(LIBDIR)/Moria_hours
X	chmod 555 $(LIBDIR)
X
Xcreate.o: constants.h types.h externs.h
Xcreature.o: constants.h types.h externs.h
Xdeath.o: config.h constants.h types.h externs.h
Xdesc.o: constants.h types.h externs.h
Xdungeon.o: constants.h types.h externs.h
Xeat.o: constants.h types.h externs.h
Xfiles.o: config.h constants.h types.h externs.h
Xgenerate.o: constants.h types.h externs.h
Xhelp.o: constants.h types.h externs.h
Xio.o: constants.h types.h externs.h
Xmagic.o: constants.h types.h externs.h
Xmain.o: constants.h types.h 
Xmisc1.o: constants.h types.h externs.h
Xmisc2.o: config.h constants.h types.h externs.h
Xmoria1.o: constants.h types.h externs.h
Xmoria2.o: constants.h types.h externs.h
Xpotions.o: constants.h types.h externs.h
Xprayer.o: constants.h types.h externs.h
Xsave.o: constants.h types.h externs.h
Xscrolls.o: constants.h types.h externs.h
Xsets.o: constants.h
Xsignals.o: constants.h types.h externs.h
Xspells.o: constants.h types.h externs.h
Xstaffs.o: constants.h types.h externs.h
Xstore1.o: constants.h types.h externs.h
Xstore2.o: constants.h types.h externs.h
Xwands.o: constants.h types.h externs.h
Xwizard.o: constants.h types.h externs.h
END_OF_Makefile.ultrix
if test 2453 -ne `wc -c <Makefile.ultrix`; then
    echo shar: \"Makefile.ultrix\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f create.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"create.c\"
else
echo shar: Extracting \"create.c\" \(10531 characters\)
sed "s/^X//" >create.c <<'END_OF_create.c'
X#include <stdio.h>
X#ifdef USG
X#include <string.h>
X#else
X#include <strings.h>
X#endif
X
X#include "constants.h"
X#include "types.h"
X#include "externs.h"
X
X#ifdef sun   /* correct SUN stupidity in the stdio.h file */
Xchar *sprintf();
X#endif
X
X/* Generates character's stats				-JWT-	*/
Xint get_stat()
X{
X  int i;
X
X  i = randint(4) + randint(4) + randint(4) + 5;
X  return(i);
X}
X
X
X/* Changes stats by given amount				-JWT-	*/
Xbyteint change_stat(cur_stat, amount)
Xbyteint cur_stat;
Xint amount;
X{
X  int i;
X
X  if (amount < 0) 
X    for (i = 0; i > amount; i--)
X      cur_stat = de_statp(cur_stat);
X  else
X    for (i = 0; i < amount; i++)
X      cur_stat = in_statp(cur_stat);
X  return(cur_stat);
X}
X
X
X/* Allows player to select a race			-JWT-	*/
Xint choose_race()
X{
X  int j, k, l, m;
X  char s;
X  int exit_flag;
X  char tmp_str[80];
X  player_type *p_ptr;
X  race_type *r_ptr;
X  int res;
X
X  j = 0;
X  k = 0;
X  l = 2;
X  m = 21;
X  clear_screen(20, 0);
X  prt("Choose a race (? for Help):", 20, 2);
X  do
X    {
X      (void) sprintf(tmp_str, "%c) %s", k+97, race[j].trace);
X      put_buffer(tmp_str, m, l);
X      k++;
X      l += 15;
X      if (l > 70) 
X	{
X	  l = 3;
X	  m++;
X	}
X      j++;
X    }
X  while (j < MAX_RACES);
X  (void) strcpy(py.misc.race, "");
X  put_buffer("", 20, 29);
X  exit_flag = FALSE;
X  do
X    {
X      inkey_flush(&s);
X      j = s - 97;
X      if ((j < MAX_RACES) && (j >= 0)) 
X	{
X	  p_ptr = &py;
X	  r_ptr = &race[j];
X	  p_ptr->misc.prace  = j;
X	  (void) strcpy(p_ptr->misc.race, r_ptr->trace);
X	  p_ptr->stats.str    = get_stat();
X	  p_ptr->stats.intel  = get_stat();
X	  p_ptr->stats.wis    = get_stat();
X	  p_ptr->stats.dex    = get_stat();
X	  p_ptr->stats.con    = get_stat();
X	  p_ptr->stats.chr    = get_stat();
X	  p_ptr->stats.str    = change_stat(p_ptr->stats.str, r_ptr->str_adj);
X	  p_ptr->stats.intel  = change_stat(p_ptr->stats.intel, r_ptr->int_adj);
X	  p_ptr->stats.wis    = change_stat(p_ptr->stats.wis, r_ptr->wis_adj);
X	  p_ptr->stats.dex    = change_stat(p_ptr->stats.dex, r_ptr->dex_adj);
X	  p_ptr->stats.con    = change_stat(p_ptr->stats.con, r_ptr->con_adj);
X	  p_ptr->stats.chr    = change_stat(p_ptr->stats.chr, r_ptr->chr_adj);
X	  p_ptr->stats.cstr   = p_ptr->stats.str;
X	  p_ptr->stats.cint   = p_ptr->stats.intel;
X	  p_ptr->stats.cwis   = p_ptr->stats.wis;
X	  p_ptr->stats.cdex   = p_ptr->stats.dex;
X	  p_ptr->stats.ccon   = p_ptr->stats.con;
X	  p_ptr->stats.cchr   = p_ptr->stats.chr;
X	  p_ptr->misc.srh    = r_ptr->srh;
X	  p_ptr->misc.bth    = r_ptr->bth;
X	  p_ptr->misc.bthb   = r_ptr->bthb;
X	  p_ptr->misc.fos    = r_ptr->fos;
X	  p_ptr->misc.stl    = r_ptr->stl;
X	  p_ptr->misc.save   = r_ptr->bsav;
X	  p_ptr->misc.hitdie = r_ptr->bhitdie;
X	  p_ptr->misc.lev    = 1;
X	  p_ptr->misc.ptodam = todam_adj();
X	  p_ptr->misc.ptohit = tohit_adj();
X	  p_ptr->misc.ptoac  = 0;
X	  p_ptr->misc.pac    = toac_adj();
X	  p_ptr->misc.expfact = r_ptr->b_exp;
X	  p_ptr->flags.see_infra = r_ptr->infra;
X	  exit_flag = TRUE;
X	  res = TRUE;
X	  put_buffer(py.misc.race, 3, 14);
X	}
X    }
X  while (!exit_flag);
X  return(res);
X}
X
X
X/* Will print the history of a character			-JWT-	*/
Xprint_history()
X{
X  int i;
X
X  put_buffer("Character Background", 13, 27);
X  for(i = 0; i < 5; i++)
X    put_buffer(py.misc.history[i], i+14, 4);
X}
X
X
X/* Get the racial history, determines social class	-RAK-	*/
X/* Assumptions:	Each race has init history beginning at 	*/
X/*		(race-1)*3+1					*/
X/*		All history parts are in ascending order	*/
Xget_history()
X{
X  int hist_ptr, cur_ptr, test_roll;
X  int start_pos, end_pos, cur_len;
X  int line_ctr, new_start, social_class;
X  char history_block[400];
X  vtype tmp_str;
X  int flag;
X  background_type *b_ptr;
X
X  /* Get a block of history text				*/
X  hist_ptr = py.misc.prace*3 + 1;
X  history_block[0] = '\0';
X  social_class = randint(4);
X  cur_ptr = 0;
X  do
X    {
X      flag = FALSE;
X      do
X	{
X	  if (background[cur_ptr].chart == hist_ptr) 
X	    {
X	      test_roll = randint(100);
X	      while (test_roll > background[cur_ptr].roll)
X		cur_ptr++;
X	      b_ptr = &background[cur_ptr];
X	      (void) strcat(history_block, b_ptr->info);
X	      social_class += b_ptr->bonus;
X	      if (hist_ptr > b_ptr->next)
X		cur_ptr = 0;
X	      hist_ptr = b_ptr->next;
X	      flag = TRUE;
X	    }
X	  else
X	    cur_ptr++;
X	}
X      while (!flag);
X    }
X  while (hist_ptr >= 1);
X
X  /* Process block of history text for pretty output	*/
X  start_pos = 0;
X  end_pos   = strlen(history_block) - 1;
X  line_ctr  = 0;
X  flag = FALSE;
X  while (history_block[end_pos] == ' ')
X    end_pos--;
X  do
X    {
X      while (history_block[start_pos] == ' ')
X	start_pos++;
X      cur_len = end_pos - start_pos + 1;
X      if (cur_len > 70)  
X	{
X	  cur_len = 70;
X	  while (history_block[start_pos+cur_len-1] != ' ')
X	    cur_len--;
X	  new_start = start_pos + cur_len;
X	  while (history_block[start_pos+cur_len-1] == ' ')
X	    cur_len--;
X	}
X      else
X	flag = TRUE;
X      (void) strncpy(tmp_str, &history_block[start_pos], cur_len);
X      tmp_str[cur_len] = '\0';
X      (void) strcpy(py.misc.history[line_ctr], tmp_str);
X      line_ctr++;
X      start_pos = new_start;
X    }
X  while (!flag);
X
X  /* Compute social class for player			*/
X  if (social_class > 100)  
X    social_class = 100;
X  else if (social_class < 1) 
X    social_class = 1;
X  py.misc.sc = social_class;
X}
X
X
X/* Gets the character's sex				-JWT-	*/
Xint get_sex()
X{
X  char s;
X  int exit_flag;
X  int sex;
X
X  py.misc.sex[0] = '\0';
X  clear_screen(20, 0);
X  prt("Choose a sex (? for Help):", 20, 2);
X  prt("m) Male       f) Female", 21, 2);
X  prt("", 20, 28);
X  do
X    {
X      inkey_flush(&s);
X      switch(s)
X	{
X	case 'f': case 'F':
X	  (void) strcpy(py.misc.sex, "Female");
X	  prt(py.misc.sex, 4, 14);
X	  exit_flag = TRUE;
X	  sex = TRUE;
X	  break;
X	case 'm': case 'M':
X	  (void) strcpy(py.misc.sex, "Male");
X	  prt(py.misc.sex, 4, 14);
X	  exit_flag = TRUE;
X	  sex = TRUE;
X	  break;
X	default:
X	  sex = FALSE;
X	  break;
X	}
X    }
X  while (!exit_flag);
X  return(sex);
X}
X
X
X/* Computes character's age, height, and weight		-JWT-	*/
Xget_ahw()
X{
X  int i;
X
X  i = py.misc.prace;
X  py.misc.age = race[i].b_age + randint((int)race[i].m_age);
X  switch(py.misc.sex[0])
X    {
X    case 'F': case 'f':
X      py.misc.ht = randnor((int)race[i].f_b_ht, (int)race[i].f_m_ht);
X      py.misc.wt = randnor((int)race[i].f_b_wt, (int)race[i].f_m_wt);
X      break;
X    case 'M': case 'm':
X      py.misc.ht = randnor((int)race[i].m_b_ht, (int)race[i].m_m_ht);
X      py.misc.wt = randnor((int)race[i].m_b_wt, (int)race[i].m_m_wt);
X      break;
X    }
X  py.misc.disarm = race[i].b_dis + todis_adj();
X}
X
X
X/* Gets a character class				-JWT-	*/
Xint get_class()
X{
X  int i, j, k, l, m;
X  int cl[MAX_CLASS];
X  char s;
X  int exit_flag;
X  int res;
X  struct misc *m_ptr;
X  player_type *p_ptr;
X  char tmp_str[80];
X
X  for (j = 0; j < MAX_CLASS; j++)
X    cl[j] = 0;
X  i = py.misc.prace;
X  j = 0;
X  k = 0;
X  l = 2;
X  m = 21;
X  clear_screen(20, 0);
X  prt("Choose a class (? for Help):", 20, 2);
X  do
X    {
X      if (race[i].tclass & bit_array[j])
X	{
X	  (void) sprintf(tmp_str, "%c) %s", k+97, class[j].title);
X	  put_buffer(tmp_str, m, l);
X	  cl[k] = j;
X	  l += 15;
X	  if (l > 70) 
X	    {
X	      l = 3;
X	      m++;
X	    }
X	  k++;
X	}
X      j++;
X    }
X  while (j < MAX_CLASS);
X  py.misc.pclass = 0;
X  put_buffer("", 20, 30);
X  exit_flag = FALSE;
X  do
X    {
X      inkey_flush(&s);
X      j = s - 97;
X      if ((j < k) && (j >= 0)) 
X	{
X	  (void) strcpy(py.misc.tclass, class[cl[j]].title);
X	  py.misc.pclass = cl[j];
X	  exit_flag = TRUE;
X	  res = TRUE;
X	  clear_screen(20, 0);
X	  put_buffer(py.misc.tclass, 5, 14);
X	  m_ptr = &py.misc;
X	  m_ptr->hitdie += class[m_ptr->pclass].adj_hd;
X	  m_ptr->mhp = con_adj() + m_ptr->hitdie;
X	  m_ptr->chp = (double)m_ptr->mhp;
X	  m_ptr->bth += class[m_ptr->pclass].mbth;
X	  m_ptr->bthb += class[m_ptr->pclass].mbthb;	/*RAK*/
X	  m_ptr->srh += class[m_ptr->pclass].msrh;
X	  m_ptr->disarm += class[m_ptr->pclass].mdis;
X	  m_ptr->fos += class[m_ptr->pclass].mfos;
X	  m_ptr->stl += class[m_ptr->pclass].mstl;
X	  m_ptr->save += class[m_ptr->pclass].msav;
X	  (void) strcat(m_ptr->title, player_title[m_ptr->pclass][0]);
X	  m_ptr->expfact += class[m_ptr->pclass].m_exp;
X
X	  /* Adjust the stats for the class adjustment		-RAK-	*/
X	  p_ptr = &py;
X	  p_ptr->stats.str  = change_stat(p_ptr->stats.str, 
X					 class[p_ptr->misc.pclass].madj_str);
X	  p_ptr->stats.intel= change_stat(p_ptr->stats.intel,
X					 class[p_ptr->misc.pclass].madj_int);
X	  p_ptr->stats.wis  = change_stat(p_ptr->stats.wis,
X					 class[p_ptr->misc.pclass].madj_wis);
X	  p_ptr->stats.dex  = change_stat(p_ptr->stats.dex,
X					 class[p_ptr->misc.pclass].madj_dex);
X	  p_ptr->stats.con  = change_stat(p_ptr->stats.con,
X					 class[p_ptr->misc.pclass].madj_con);
X	  p_ptr->stats.chr  = change_stat(p_ptr->stats.chr,
X					 class[p_ptr->misc.pclass].madj_chr);
X	  p_ptr->stats.cstr = p_ptr->stats.str;
X	  p_ptr->stats.cint = p_ptr->stats.intel;
X	  p_ptr->stats.cwis = p_ptr->stats.wis;
X	  p_ptr->stats.cdex = p_ptr->stats.dex;
X	  p_ptr->stats.ccon = p_ptr->stats.con;
X	  p_ptr->stats.cchr = p_ptr->stats.chr;
X	  p_ptr->misc.ptodam = todam_adj();	/* Real values		*/
X	  p_ptr->misc.ptohit = tohit_adj();
X	  p_ptr->misc.ptoac  = toac_adj();
X	  p_ptr->misc.pac    = 0;
X	  p_ptr->misc.dis_td = p_ptr->misc.ptodam; /* Displayed values	*/
X	  p_ptr->misc.dis_th = p_ptr->misc.ptohit;
X	  p_ptr->misc.dis_tac= p_ptr->misc.ptoac;
X	  p_ptr->misc.dis_ac = p_ptr->misc.pac;
X	}
X    }
X  while (!exit_flag);
X  return(res);
X}
X
X
Xget_money()
X{
X  int tmp;
X  struct stats *p_ptr;
X  struct misc *m_ptr;
X  
X  p_ptr = &py.stats;
X  tmp = p_ptr->cstr + p_ptr->cint + p_ptr->cwis +
X    p_ptr->cdex + p_ptr->ccon + p_ptr->cchr;
X  m_ptr = &py.misc;
X  m_ptr->au = m_ptr->sc*6 + randint(25) + 325;	/* Social Class adj	*/
X  m_ptr->au = m_ptr->au - tmp;			/* Stat adj		*/
X  m_ptr->au = m_ptr->au + py.stats.cchr;		/* Charisma adj		*/
X  if (m_ptr->au < 80)  m_ptr->au = 80;		/* Minimum		*/
X}
X
X
X/* ---------- M A I N  for Character Creation Routine ---------- */
X/*							-JWT-	*/
Xcreate_character()
X{
X  do
X    {
X      put_character();
X    }
X  while (!choose_race());
X  while (!get_sex())
X    put_character();
X  get_history();
X  get_ahw();
X  print_history();
X  put_misc1();
X  put_stats();
X  while (!get_class())
X    {
X      put_character();
X      print_history();
X      put_misc1();
X      put_stats();
X    }
X  get_money();
X  put_stats();
X  put_misc2();
X  put_misc3();
X  get_name();
X
X  /* This delay may be reduced, but is recommended to keep players	*/
X  /* from continuously rolling up characters, which can be VERY	*/
X  /* expensive CPU wise.						*/
X  pause_exit(23, PLAYER_EXIT_PAUSE);
X}
X
END_OF_create.c
if test 10531 -ne `wc -c <create.c`; then
    echo shar: \"create.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f moria.doc.1 -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"moria.doc.1\"
else
echo shar: Extracting \"moria.doc.1\" \(40313 characters\)
sed "s/^X//" >moria.doc.1 <<'END_OF_moria.doc.1'
X           The Dungeons of MORIA
X
X
X             __________
X
X               Moria is intended for Public Domain, and may not be sold  or
X          marketed  IN  ANY  FORM without the permission and written consent
X          from the author Robert Alan Koeneke.  I retain all copyrights  to
X          this  program,  in  either the original or modified forms, and no
X          violation,  deletion,  or  change  of  the  copyright  notice  is
X          allowed.   Furthermore,  I will have no liability or responsibility
X          to any user with respect to loss or  damage  caused  directly  or
X          indirectly by this program.
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X                                       1
X
X           The Dungeons of MORIA
X
X
X             MORIA
X
X                           MORIA
X          player  may  choose  from  a  number  of  races  and classes when
X          creating their character, and then 'run' that  character  over  a
X          period of days, weeks, even months; attempting to win the game by
X          defeating the Balrog which lurks in the deeper levels.
X
X               The player will begin his adventure on the town level  where
X          he  may  acquire supplies, weapons, armor, and magical devices by
X          bartering with various shop  owners.   After  preparing  for  his
X                                                                      MORIA
X          where fantastic adventures await his coming!
X
X               Before beginning your first adventure, you should read  this
X                                           MORIA
X          will require a dedicated player to win.
X
X
X
X
X
X
X
X
X               ___ _________
X
X               All characters have six main attributes which  modify  their
X          basic   abilities.   These  six  attributes,  called  stats,  are
X          STRENGTH,  INTELLIGENCE,  WISDOM,  DEXTERITY,  CONSTITUTION,  and
X          CHARISMA.   Stats  may  vary  from  3 as a minimum to 18/100 as a
X          maximum.  Because adventurers of interest tend to be better  than
X                               MORIA
X          further  adjusted  by  race  and  class.   Some  races  are  just
X          naturally  better  at  being  certain  classes,  as will be shown
X          later.
X
X               In addition to the more visible stats,  each  character  has
X          certain  abilities  which  are  mainly determined by his race and
X          class, but are also modified by his  stats.   The  abilities  are
X          FIGHTING,   THROWING/BOWS,   SAVING  THROW,  STEALTH,  DISARMING,
X          MAGICAL DEVICES, PERCEPTION, SEARCHING, and INFRA-VISION.
X
X               Characters will be assigned an early history, with money and
X          a social class based on that history.  Starting money is assigned
X          based on history, charisma, and somewhat upon the  average  of  a
X          character's  stats.   A  character  with below average stats will
X          receive extra money to help him survive the first adventure.
X
X               Each character will also have physical attributes such as  a
X          race, a height, weight, sex, and a physical description.  None of
X          these, except weight, play any part in the  game  other  than  to
X          give  the  player  a "feeling" for his character.  Weight is used
X          for computing carrying capacity and also for BASHING.
X
X               Finally each character is assigned HIT POINTS based on their
X          race,  class,  and constitution.  Spell casters will also receive
X          "MANA" which is expended when casting spells.  MANA is  based  on
X          Wisdom for Priests and Intelligence for Mages.
X
X                                       2
X
X           The Dungeons of MORIA
X
X
X          2.1.1  Character Stats -
X
X
X          STR - Strength
X
X               Strength is important in fighting with weapons, or  hand  to
X          hand.   A  high strength can improve your chances of hitting, and
X          the amount of damage done with each  hit.   Characters  with  low
X          strengths  may  receive  penalties.   Strength  is also useful in
X          tunneling, body and shield bashing, and in the carrying of  heavy
X          items.
X
X
X          INT - Intelligence
X
X               Intelligence is the prime stat of a mage,  or  magician.   A
X          high  intelligence  increases a mages chances of learning spells,
X          and in gaining mana.  No spell  may  be  learned  by  mages  with
X          intelligences  under 8.  Intelligence also modifies a character's
X          chance of disarming traps and picking locks.
X
X
X          WIS - Wisdom
X
X               Wisdom is the  prime  stat  of  a  priest.   A  high  wisdom
X          increases  the  chance  of  receiving  new spells from a priest's
X          diety, and in the  gaining  of  mana.   Wisdom  also  modifies  a
X          character's  chance  of  resisting  magical  spells cast upon his
X          person.
X
X
X          DEX - Dexterity
X
X               Dexterity is the combination of agility  and  quickness.   A
X          high  dexterity  may allow a character to get multiple blows with
X          lighter weapons, thus greatly increasing his kill power, and  may
X          increase  his  chances  of hitting with any weapon.  Dexterity is
X          also useful in picking locks and disarming traps.
X
X
X          CON - Constitution
X
X               Constitution is a characters ability  to  resist  damage  to
X          their  body,  and  to  recover from damage received.  Therefore a
X          character with a high constitution will receive more hit  points,
X          and be more resistant to poisons.
X
X
X          CHR - Charisma
X
X               Charisma represents a character's personality,  as  well  as
X          physical  looks.   A  character with a high charisma will receive
X          better prices from store owners, whereas a character with a  very
X          low  charisma  will  be  robbed blind.  A high charisma will also
X          mean more starting money for the character.
X
X
X
X
X
X                                       3
X
X           The Dungeons of MORIA
X
X
X          2.1.2  Character Sex -
X
X               You may choose to be either a male or  a  female  character.
X          Only height and weight are affected by a character's sex.  Female
X          characters tend to be somewhat smaller  and  lighter  then  their
X          male counterparts.  No adjustments to stats or abilities are made
X          because of the sex of a character.
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X                                       4
X
X           The Dungeons of MORIA
X
X
X          2.1.3  Character Abilities -
X
X               Characters possess nine different abilities which  can  help
X          them to survive.  The starting abilities of a character are based
X          upon race and class.  Abilities may be adjusted by  high  or  low
X          stats, and may increase with the level of the character.
X
X
X            - Fighting
X
X               Fighting is the ability to hit and do damage with weapons or
X          fists.   Normally a character gets a single blow from any weapon,
X          but if his dexterity and strength are high enough, he may receive
X          more   blows  per  round  with  lighter  weapons.   Strength  and
X          dexterity both  modify  the  ability  to  hit  an  opponent.   In
X          addition this skill increases with the level of the character.
X
X
X            - Throwing/Bows
X
X               Using stand-off missile  weapons  and  throwing  objects  is
X          included  in  this  skill.   Different  stats  apply to different
X          weapons, but may modify the distance an object  is  thrown/fired,
X          the  amount  of  damage  done, and the ability to hit a creature.
X          This skill increases with the level of the character.
X
X
X            - Saving Throw
X
X               A Saving Throw is the ability of a character to  resist  the
X          effects  of a spell cast on him by another person/creature.  Note
X          that this does not include spells cast on the player by  his  own
X          stupidity,  such  as  quaffing  a  nasty  potion.   This  ability
X          increases with the level of the character,  but  then  most  high
X          level creatures are better at casting spells, so it tends to even
X          out.
X
X
X            - Stealth
X
X               The  ability  to  move  silently  about  is   very   useful.
X          Characters   with   good   stealth  can  usually  surprise  their
X          opponents, gaining the first blow.  Also, creatures may  fail  to
X          notice  a stealthy character entirely, allowing a player to avoid
X          certain fights.
X
X
X            - Disarming
X
X               Disarming is the  ability  to  remove  traps  (safely),  and
X          includes   picking  locks  on  traps  and  doors.   Note  that  a
X          successful disarming will gain  the  character  some  experience.
X          The  character  must have found a trap before it can be disarmed.
X          Dexterity and intelligence both modify the ability to disarm, and
X          this ability increases with the level of the character.
X
X
X
X
X
X                                       5
X
X           The Dungeons of MORIA
X
X
X            - Using Magical Devices
X
X               Using a magical device such as  a  wand  or  staff  requires
X          experience  and knowledge.  Spell users such as mages and priests
X          are therefore much better at using a magical device  than  say  a
X          fighter.   This  skill is modified by intelligence, and increases
X          with the level of the character.
X
X
X            - Perception
X
X               Perception  is  the  ability  to  notice  something  without
X          actively  seeking it out.  This skill is based entirely upon race
X          and class, and will never improve unless magically enhanced.
X
X
X            - Searching
X
X               To search is to actively look for secret doors, floor traps,
X          and  traps  on  chests.   Rogues  are  the best at searching, but
X          mages,  rangers,  and  priests  are  good  at  it.   Intelligence
X          modifies  your  ability  at searching, and your ability will also
X          increase with your level.
X
X
X            - Infra Vision
X
X               Infra-vision is the ability to see heat sources.  Since most
X          of  the  dungeon is cool or cold, infra-vision will not allow the
X          player to see walls  and  objects.   Infra-vision  will  allow  a
X          character  to  see  any  warm-blooded  creatures  up to a certain
X          distance.  This ability works equally well with  or  with  out  a
X                                                      MORIA
X          cold blooded, and will not be detected unless lit up by  a  light
X          source.
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X                                       6
X
X           The Dungeons of MORIA
X
X
X                 ________ _ ____
X
X               There are eight different races that you can choose from  in
X          MORIA
X          be, and each race has it's own adjustments to a character's stats
X          and abilities.
X
X
X            - Human
X
X               The human  is  the  base  character,  all  other  races  are
X          compared  to  him.  Human's can choose any class, and are average
X          at everything.  Humans tend to go up levels faster than any other
X          race, because of their shorter life-spans.  No racial adjustments
X          occur to character's choosing human.
X
X
X            - Half-Elf
X
X               Half-elves tend to be smarter and faster than a  human,  but
X          not  as  strong.   Half-elves  are  slightly better at searching,
X          disarming, perception, stealth, and magic, but they  are  not  as
X          good at hand weapons.  Half-elves may choose any class.
X
X
X            - Elf
X
X               Elves are better magicians then humans, but not as  good  at
X          fighting.   They tend to be smarter and faster than either humans
X          or half-elves, and also have better wisdom.  Elves are better  at
X          searching,  disarming,  perception,  stealth, and magic, but they
X          are not as good at hand weapons.   Elves  may  choose  any  class
X          except Paladin.
X
X
X            - Halfling
X
X               Halflings, or Hobbits, are very good at bows, throwing,  and
X          have  good  saving throws.  They also are very good at searching,
X          disarming,  perception,  and  stealth;  so  they  make  excellent
X          thieves (but prefer to be called burglars...).  They will be much
X          weaker than humans, and no good at bashing.  Halflings have  fair
X          infra-vision,  so  can  detect  warm  creatures  at  a  distance.
X          Halflings can choose between being a fighter, mage, or rogue.
X
X
X            - Gnome
X
X               Gnomes are smaller than dwarfs, but larger  than  halflings.
X          They, like the halflings, live in the earth in burrow-like homes.
X          Gnomes are practical jokers, so if they can kill something  in  a
X          humorous  way,  so much the better.  Gnomes make excellent mages,
X          and have very good saving throws.  They are  good  at  searching,
X          disarming,  perception,  and  stealth.  They have lower strengths
X          and constitutions then humans  so  they  are  not  very  good  at
X          fighting  with  hand  weapons.  Gnomes have fair infra-vision, so
X          can detect warm creatures at a  distance.   A  gnome  may  choose
X          between being a fighter, mage, priest, or rogue.
X
X
X                                       7
X
X           The Dungeons of MORIA
X
X
X            - Dwarf
X
X               Dwarves are the headstrong miners and  fighters  of  legend.
X          Since  dungeons  are  the  natural  home  of  a  dwarf,  they are
X          excellent choices for a warrior or priest.  Dwarves  tend  to  be
X          stronger,  have  higher  constitutions,  but  are slower and less
X          intelligent than humans.  Because they are so headstrong and  are
X          somewhat  wise,  they  resist  spells  which  are  cast  on them.
X          Dwarves  also  have   good   infra-vision   because   they   live
X          underground.  They do have one big draw-back though.  Dwarves are
X          loud-mouthed and proud, singing  in  loud  voices,  arguing  with
X          themselves  for  no  good  reason,  screaming  out  challenges at
X          imagined foes.  In other words, dwarves have a miserable stealth.
X
X
X            - Half-Orc
X
X               Half-Orcs make excellent fighters, and decent  priests,  but
X          are  terrible  at  magic.  They are as bad as dwarves at stealth,
X          and horrible at searching, disarming, and perception.   Half-Orcs
X          are;  let's  face  it,  ugly.  They tend to pay more for goods in
X          town.  Half-Orcs do make good priest's and rogues, for the simple
X          reason  that  Half-Orcs tend to have great constitutions and lots
X          of hit points.
X
X
X            - Half-Troll
X
X               Half-Trolls are incredibly strong, and have the highest  hit
X          points  of  any  character  race.   They are also very stupid and
X          slow.  They will make great fighters and iffy priests.  They  are
X          bad  at  searching, disarming, perception, and stealth.  They are
X          so ugly that a Half-Orc grimaces in their  presence.   They  also
X          happen to be fun to run...
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X                                       8
X
X           The Dungeons of MORIA
X
X
X          2.1.4.1  Chart 1 :  Race VS Skills And Stats -
X
X
X
X                  Stat Modifications due to race: (This chart needs
X          updating)
X
X                                                   Hit   Required
X          Race       Str  Int  Wis  Dex  Con  Chr  Dice  EXP/level
X
X          Human
X          Half-Elf
X          Elf
X          Halfling
X          Gnome
X          Dwarf
X          Half-Orc
X          Half-Troll
X
X
X
X
X
X
X                      Abilities as compared to each other:
X                      1 is lowest, or worst; 10 is highest, or best.
X                |                                            |
X          Race    Disarm Search Stealt Percep Fight  Bows   Save   Infra
X
X          Human
X          Half-Elf
X          Elf
X          Halfling
X          Gnome
X          Dwarf
X          Half-Orc
X          Half-Troll
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X                                       9
X
X           The Dungeons of MORIA
X
X
X                 ________ _ _____
X
X               Once a race has been chosen, you will need to pick a  class.
X          Some classes will not be available to certain races; for instance
X          a  Half-Troll  cannot  become  a  Paladin.   For  the  first  few
X          adventures  it  is  suggested  that  you  run a warrior or rogue.
X          Spell casting generally requires a more experienced  player  that
X          is familiar with survival techniques.
X
X
X            - Warrior
X
X               A Warrior is a hack-and-slash character, who solves most  of
X          his  problems  by  cutting  them to pieces, but will occasionally
X          fall back on the help of a magical device.  His prime  stats  are
X          Strength  and  Constitution, and a good Dexterity can really help
X          at times.  A Warrior will be good at Fighting and  Throwing/Bows,
X          but bad at most other skills.
X
X
X            - Mage
X
X               A Mage must live by his wits.  He cannot hope to simply hack
X          his  way through the dungeon, and so must therefore use his magic
X          to defeat, deceive, confuse, and to escape with.  A mage  is  not
X          really  complete without a golf-cart of magical devices to use in
X          addition to his spells.  He can master the higher  level  magical
X          devices  far  easier  than  anyone  else, and has the best saving
X          throw to resist effects of spells cast at him.  Intelligence  and
X          Dexterity  are  his  primary stats.  There is no rule that says a
X          mage cannot become a good fighter, but spells are his true realm.
X
X
X            - Priest
X
X               A Priest is a character of holy devotion.  They explore  the
X          dungeon  only  to  destroy  the  evil  that  lurks within, and if
X          treasure just happens to fall into their  packs;  well,  so  much
X          more  to the glory of their church!  Priests receive their spells
X          from a diety, and therefore do not choose which spells they  will
X          learn.   He  is familiar with magical devices, preferring to call
X          them instruments of god, but is not as good as a  mage  in  their
X          use.   Priests have good saving throws, and make decent fighters,
X          preferring blunt weapons over edged ones.   Wisdom  and  Charisma
X          are the priests primary stats.
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X                                       10
X
X           The Dungeons of MORIA
X
X
X            - Rogue
X
X               A Rogue is a character that prefers to live by his  cunning,
X          but  is  capable  of fighting his way out of a tight spot.  He is
X          the master of traps and locks, no device being impossible for him
X          to  over-come.   A rogue has a high stealth allowing him to sneak
X          around many creatures without having to fight, or  sneak  up  and
X          get  the  first  blow.   A  rogue's perception is higher than any
X          other class, and many times he will notice a trap or secret  door
X          before  having  to  search.   A  rogue is better than warriors or
X          paladins with magical devices, but still can not  rely  on  their
X          performance.   A  rogue's  primary  stats  are  Intelligence  and
X          Dexterity.
X
X
X            - Ranger
X
X               A Ranger is a fighter/mage.  He is a good fighter,  and  the
X          best  of  the  classes  with a missile weapon such as a bow.  The
X          ranger learns spells much more slowly than a mage, but is capable
X          of learning all but the most powerful spell.  Because a ranger is
X          really a dual class character, it  requires  more  experience  to
X          advance  him.  A ranger has a good stealth, good perception, good
X          searching, a good saving throw, and is good with magical devices.
X          His primary stats are Intelligence and Dexterity.
X
X
X            - Paladin
X
X               A Paladin is a fighter/priest.  He is a very  good  fighter,
X          second  only  to  the warrior class, but not very good at missile
X          weapons.  He receives prayers at a slower pace then  the  priest,
X          and  can  receive  all  but  the most powerful prayer.  Because a
X          paladin is really  a  dual  class  character,  it  requires  more
X          experience  to  advance  him.  A paladin lacks much in the way of
X          abilities.  He is poor at  stealth,  perception,  searching,  and
X          magical  devices.  He has a decent saving throw due to his divine
X          alliance.  His primary stats are Strength and Charisma.
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X                                       11
X
X           The Dungeons of MORIA
X
X
X          2.1.5.1  Chart 2 :  Race VS Class -
X
X
X                                              CLASS
X
X          Race        Warrior Mage... Priest. Rogue.. Ranger. Paladin
X
X          Human
X          Half-Elf
X          Elf
X          Halfling
X          Gnome
X          Dwarf
X          Half-Orc
X          Half-Troll
X
X
X
X
X
X
X
X
X
X          2.1.5.2  Chart 3 :  Class VS Skills -
X
X
X                   Abilities as compared to each other:
X                   1 is lowest, or worst; 10 is highest, or best.
X                |                                                |
X                           Save               Magic               Required
X          Race  Fight Bows Throw Stlth Disarm Device Percep Search  Exp.
X
X          Warrior
X          Mage
X          Priest
X          Rogue
X          Ranger
X          Paladin
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X                                       12
X
X           The Dungeons of MORIA
X
X
X               ___________
X
X               After you have created your character, you will  begin  your
X          MORIA
X          the  dungeon's  walls  and  floor,  objects  and  features,   and
X          creatures  lurking  about.   In  order  to  direct your character
X          through his adventure, you will enter single character commands.
X
X               MORIA
X          to  them.   You should review these sections before attempting an
X          adventure.  Finally, a description of the  town  level  and  some
X          general help on adventuring are included.
X
X
X
X                 _______ __ ____ ___
X
X               Symbols  on  your  map  can  be  broken  down   into   three
X          categories;  Features of the dungeon such as walls, floor, doors,
X          and traps; Objects which can  be  picked  up  such  as  treasure,
X          weapons,  magical devices, etc; and Monsters which may or may not
X          move  about  the  dungeon,  but  are  mostly  harmful   to   your
X          character's well being.
X
X               Note that some symbols can be in  more  than  one  category.
X          Also  note  that treasure may be imbedded in a wall, and the wall
X          must be removed before the treasure can be picked up.
X
X               It will not be necessary to remember all of the symbols  and
X          their  meanings.   A  simple  command; the '/'; will identify any
X          character appearing on your map.  See the section on commands for
X          further help.
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X                                       13
X
X           The Dungeons of MORIA
X
X
X
X          Features :
X            .  A floor space, or hidden trap. 1  Entrance to General Store.
X            #  A wall.                        2  Entrance to Armory.
X            '  An open door.                  3  Entrance to Weapon Smith.
X            +  A closed door.                 4  Entrance to Temple.
X            ^  A trap.                        5  Entrance to Alchemy Shop.
X            <  A staircase up.                6  Entrance to Magic Shop.
X            >  A staircase down.              :  Obstructing rubble.
X            ;  A loose floor stone.              An open pit. (Blank)
X
X          Objects  :
X            !  A flask or potion.             ?  A scroll.
X            "  An amulet.                     [  Hard armor.
X            $  Money (Can be imbedded).       \  A hafted weapon.
X            &  A chest.                       ]  Misc. armor.
X            (  Soft armor.                    _  A staff.
X            )  A shield.                      {  Missile (arrow, bolt, pebble).
X            *  Gems (Can be imbedded).        |  Sword or dagger.
X            -  A wand.                        }  Missile arm (Bow, crossbow, sling).
X            /  A pole-arm.                    ~  Misc.
X            =  A ring.                        ,  Food.
X            s  A skeleton.
X
X          Monsters :
X            a  Giant Ant.                     A  Giant Ant Lion.
X            b  Giant Bat.                     B  The Balrog.
X            c  Giant Centipede.               C  Gelatinous Cube.
X            d  Dragon                         D  Ancient Dragon.
X            e  Floating Eye.                  E  Elemental.
X            f  Giant Frog.                    F  Fly.
X            g  Golem.                         G  Ghost.
X            h  Harpy.                         H  Hob-Goblin.
X            i  Icky-Thing.                    I  Invisible Stalker.
X            j  Jackal.                        J  Jelly.
X            k  Kobold.                        K  Killer Beetle.
X            l  Giant Lice.                    L  Lich.
X            m  Mold.                          M  Mummy.
X            n  Naga.                          N
X            o  Orc or Ogre.                   O  Ooze.
X            p  Human(iod).                    P  Giant Human(iod).
X            q  Quasit.                        Q  Quythulg.
X            r  Rodent.                        R  Reptile.
X            s  Skeleton.                      S  Scorpion.
X            t  Giant Tick.                    T  Troll.
X            u                                 U  Umber Hulk.
X            v                                 V  Vampire.
X            w  Worm or Worm Mass.             W  Wight or Wraith.
X            x                                 X  Xorn.
X            y  Yeek.                          Y  Yeti.
X            z  Zombie.                        Z
X            $  Creeping Coins.                ,  Mushroom Patch.
X
X
X
X
X
X
X
X
X                                       14
X
X           The Dungeons of MORIA
X
X
X                 ________
X
X               All commands are  entered  by  pressing  a  single  key,  or
X          control  sequence  (holding down the control key while pressing a
X          key).  If a particular command  requires  additional  action,  it
X          will  be  prompted  for, with one exception.  When a direction is
X          required, no prompt is given unless and until an illegal response
X          is given.
X
X
X
X          2.2.2.1  Note On <Dir> -
X
X               In the following instructions, the symbol <Dir> refers to  a
X          numeric  direction  based on your keypad.  It is not valid to use
X          the number '5' in this context.  One exception to  this  is  with
X          movement, in which case '5' will rest the character for one turn.
X
X               Commands which require a direction will not prompt  you  for
X          one,  unless  you  input  an  illegal  direction.   Just  enter a
X          direction after the entering the command.
X
X                   Directions
X
X                 \     |     /
X                  7    8    9
X
X                - 4         6 -
X
X                  1    2    3
X                 /     |     \
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X                                       15
X
X           The Dungeons of MORIA
X
X
X            Movement
X
X               Movement is  accomplished  by  using  your  numeric  keypad.
X          Simply  press  a  number and your character will move one step in
X          that direction.  Pressing a '5' is equivalent to waiting for  one
X          round  (More  efficient  resting  over  long  periods  of time is
X          accomplished by using the Rest command).  You can only move  onto
X          and through floor spots, and only if they contain no creatures or
X          obstructing objects such as a closed door.
X
X               Moving your character  one  step  at  a  time  can  be  time
X          consuming  and  boring, so a faster method has been supplied.  By
X          using the Move command '.', you may move  in  a  direction  until
X          something  interesting  happens.   For  instance, by pressing the
X          period key '.' followed by the direction 8, your character  would
X          continue  to  move  up the screen, only coming to a stop after at
X          least one condition is satisfied.  These conditions are:
X
X          1.  A creature appears upon the screen, or a creature already  on
X              the screen moves.
X
X          2.  You move next to an  object,  or  feature  such  as  a  door,
X              staircase, or trap.
X
X          3.  You come to  a  wall,  and  have  more  than  one  choice  of
X              directions  from  which  to  continue,  or  are  in a dead in
X              passage.
X
X          4.  You come to a junction of several passages.
X
X
X                    Movement
X
X                 \     |     /
X                  7    8    9
X                - 4         6 -         5 rests the character for one turn.
X                  1    2    3
X                 /     |     \
X
X
X
X            B <Dir> - Bash
X
X               The Bash command includes breaking open doors and chests, or
X          bashing an opponent.  Two main factors determine the ability of a
X          character to bash; their weight and their strength.  In addition,
X          when bashing an opponent, you will either perform a body bash, or
X          if wielding a  shield,  perform  a  shield  bash  which  is  more
X          effective.
X
X               Bashing a door can throw the character off-balance, but this
X          will  not  generally  be  a problem.  Doors that have been jammed
X          closed with spikes can only be opened by bashing.   Locked  doors
X          may  also  be  bashed  open.   Note that bashing a door open will
X          permanently break it.
X
X               Bashing a creature has effects on both the  player  and  his
X          opponent.   Depending  on  a character's dexterity, he may or may
X          not be thrown off-balance allowing free moves to  his  opponents.
X
X                                       16
X
X           The Dungeons of MORIA
X
X
X          If   the   bash  is  successful,  the  opponent  will  be  thrown
X          off-balance for 1 to 3 turns, thus allowing  the  character  free
X          hits or a chance to run.
X
X               A player automatically performs a shield bash instead  of  a
X          body  bash,  if  he is currently wearing a shield.  A shield bash
X          adds the damage of a shield to that  of  the  bash,  so  is  more
X          effective.   Note  that  size and material both affect the damage
X          that a shield will do.
X
X
X            C       - Print character (to screen or file)
X
X               This  command  allows  the  player  to  either  display  his
X          character on the terminal screen, or to print an entire character
X          info listing to a file.  If printed to a file, history, equipment
X          list, and an inventory list are included.
X
X
X            D <Dir> - Disarm a trap.
X
X               You can attempt to disarm floor traps,  or  trapped  chests.
X          If  you fail to disarm a trap, there is a chance that you blunder
X          and set it off.  You can only disarm a  trap  on  a  chest  after
X          finding it with the search command.
X
X
X            E       - Eat some food.
X
X               A character must eat occasionally to remain effective.  As a
X          character  grows  hungry,  a message will appear at the bottom of
X          the screen saying "Hungry".  If a character remains  hungry  long
X          enough, he will become weak and eventually start fainting.
X
X
X            F       - Fill a lamp or lantern with oil.
X
X               If your character is currently using a lamp for  light,  and
X          if  he has a flask of oil in inventory, he may refill the lamp by
X          using this command.  A lamp is capable of a maximum of 5500 turns
X          of light, and each flask has 5000 turns of oil contained in it.
X
X
X            L       - Display map co-ordinates.
X
X               The Location command will display your  character's  current
X          co-ordinates  as  shown  on  a  printed map (printed with the 'P'
X          command).  Sectors contain up to 44 rows by 99 columns each.  The
X          Location  command  will  display  the character's current row and
X          column map co-ordinates, as well as the sector number.
X
X
X            P       - Print map to file.
X
X               The Print command will write an entire map  of  the  dungeon
X          floor  explored to a file.  Since the dungeon floor is large, the
X          map is broken up into sectors, each containing up to 44  rows  by
X          99 columns.
X
X
X                                       17
X
END_OF_moria.doc.1
if test 40313 -ne `wc -c <moria.doc.1`; then
    echo shar: \"moria.doc.1\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of archive 11 \(of 16\).
cp /dev/null ark11isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 16 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0