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