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