-+-+-+-+-+-+-+-+ START OF PART 9 -+-+-+-+-+-+-+-+ Xcharacter appearing on your map. See the section on commands for Xfurther help. X X XFeatures : 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 `5E 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 XObjects : X ! A flask or potion. ? A scroll. X " An amulet. `5B Hard armor. X $ Money (Can be imbedded). \ A hafted weapon. X & A chest. `5D Misc. armor. X ( Soft armor. _ A staff. X ) A shield. `7B Missile (arrow, bolt, pebble). X * Gems (Can be imbedded). `7C Sword or dagger. X - A wand. `7D Missile arm (Bow, crossbow, sling). X / A pole-arm. `7E Misc. X = A ring. , Food. X s A skeleton. X XMonsters : X a Giant Ant. A Giant Ant Lion. X b Giant Bat. B Giant Beetle. X c Giant Centipede. C Gelatinous Cube. X d Dragon D Demon (The Balrog) 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 `20 X l Giant Lice. L Lich. X m Mold. M Mummy. X n Naga. N `20 X o Orc or Ogre. O Ooze. X p Human(iod). P Giant Human(iod). X q Quasit. Q `20 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 `20 X $ Creeping Coins. , Mushroom Patch. X X1 TOWN X The town level is where you will begin your adventure. The Xtown consists of six buildings each with an entrance, some towns X'people', and a wall which surrounds the town. The first time Xyou are in town it will be daytime, but you may return to find Xthat darkness has fallen. (Note that some spells may act Xdifferently in the town level.) X X2 Buildings X You may enter any of the stores, if they are open, and Xbarter with the owner for items you can afford. But be warned Xthat the owners can easily be insulted, and may even throw you Xout for a while if you insult them too often. To enter a store, Xsimply move onto the entrance represented by the numbers 1 Xthrough 6. X X Once inside a store, his inventory will appear on the screen Xalong with a set of options for your character. You may browse Xthe store's inventory if it takes more than one page to display, Xand you may sell or purchase items in his inventory. You can Xexecute your inventory and equipment commands to see what you are Xcarrying. Not shown with the options are the wear, take-off, and Xexchange commands which will also work, but were excluded to keep Xthe options simple. X X Stores do not always have everything in stock. As the game Xprogresses, they may get new items so check from time to time. XAlso, if you sell them an item, it may get sold to a customer Xwhile you are adventuring so don't always expect to be able to Xget back anything you have sold. X X Store owners will not buy harmful or useless items. If an Xobject is unidentified, they will pay you some base price for it. XOnce they have bought it they will immediately identify the Xobject. If it is a good object, they will add it to their Xinventory. If it was a bad bargain, they simply throw the item Xaway. In any case, you may receive some knowledge of the if Xanother is encountered. X X3 Alchemy shop X The Alchemy Shop deals in all manner of potions and scrolls. XThe entrance to the Alchemy Shop is a '5'. X X3 Armory X The Armory is where the town's armor is fashioned. All Xsorts of protective gear may be bought and sold here. The Xentrance to the Armory is a '2'. X X3 General Store X The General Store sells foods, drinks, some clothing, Xtorches, lamps, oil, and spikes. All of these items, and others, Xcan be sold back to the General store for money. The entrance to Xthe General Store is a '1'. X X3 Magic User's Shop X The Magic User's Shop is the most expensive of all the Xstores. It deals in all sorts of rings, wands, amulets, and Xstaves. The entrance to the Magic Shop is a '6'. X X3 Temple X The Temple deals in healing and restoration potions, as well Xas bless scrolls, word-of-recall scrolls, some approved priestly Xweapons, etc. The entrance to the Temple is a '4'. X X3 Weaponsmith's Shop X The Weaponsmith's Shop is where the town's weapons are Xfashioned. Hand and missile weapons may be purchased and sold Xhere, along with arrows, bolts, and shots. The entrance to the XWeaponsmiths is a '3'. X X2 Supplies X Your character will begin his adventure with some supplies Xalready on him. Use the Inventory 'i' command to check what Xthese supplies are. It will be necessary to buy other supplies Xbefore continuing into the dungeon, however, so be sure to enter Xeach of the stores. X X2 Townsmen X The town contains many different kinds of people. There are Xthe street urchins, young children who will mob an adventurer for Xmoney, and seem to come out of the woodwork when excited. XBlubbering Idiots which are a constant anoyance, but not harmful. XPublic drunks which wander about the town singing, and are of no Xthreat to anyone. Sneaky rogues, which hang about watching for a Xlikely victim to mug. And finally, what town would be complete Xwithout a swarm of half drunk warriors, who take offense or Xbecome annoyed just for the fun of it. X X Most of the towns people should be avoided by the largest Xpossible distance when you wander from store to store. Fights Xwill break out though, so be prepared. Since your character grew Xup in this world of intrigue, no experience is awarded for Xkilling on the town level. $ CALL UNPACK [.EXECUTE]MORIAHLP.HLP;1 1210322776 $ create 'f' X`7B Moria Version 5.0 COPYRIGHT (c) Robert Alan Koeneke X Public Domain X Modified EXTENSIVELY by: X Matthew W. Koch -MWK X Kendall R. Sears -Opusii X with minor help from: X Russell E. Billings -REB X David G. Strubel -DGS X X I lovingly dedicate this game to hackers and adventurers X everywhere... X X Designer and Programmer : Robert Alan Koeneke X University of Oklahoma X Assitant Programmer : Jimmey Wayne Todd X University of Oklahoma X `20 X Moria may be copied and modified freely as long as the above X credits are retained. No one who-so-ever may sell or market X this software in any form without the expressed written consent X of the author Robert Alan Koeneke.`7D X X`7B`5Benvironment('moria.env')`5D`7D program moria(input,output,Opusii,Matt) V; X `20 X `7B Globals `7D X %INCLUDE 'MOR_INCLUDE:CONSTANTS.INC' X %INCLUDE 'MOR_INCLUDE:TYPES.INC' X %INCLUDE 'MOR_INCLUDE:VARIABLES.INC' X %INCLUDE 'MOR_INCLUDE:VALUES.INC' X %INCLUDE 'MOR_INCLUDE:SPELL_VALUES.INC' X `20 X `7B Libraries of routines `7D X %INCLUDE 'MOR_INCLUDE:IO.INC' X %INCLUDE 'MOR_INCLUDE:MISC.INC' X %INCLUDE 'MOR_INCLUDE:DEATH.INC' X %INCLUDE 'MOR_INCLUDE:HELP.INC' X %INCLUDE 'MOR_INCLUDE:DESC.INC' X %INCLUDE 'MOR_INCLUDE:USERID.INC' `7B-MWK`7D X %INCLUDE 'MOR_INCLUDE:BLACK_MARKET.INC' `7B-WLP`7D X %INCLUDE 'MOR_INCLUDE:FILES.INC' X %INCLUDE 'MOR_INCLUDE:STORE1.INC' X %INCLUDE 'MOR_INCLUDE:SAVE.INC' X %INCLUDE 'MOR_INCLUDE:CREATE.INC' X %INCLUDE 'MOR_INCLUDE:GENERATE.INC' X %INCLUDE 'MOR_INCLUDE:MORIA.INC' X %INCLUDE 'MOR_INCLUDE:DATAFILES.INC' X %INCLUDE 'MOR_INCLUDE:TERMDEF.INC' X`20 X`7B Initialize, restore, and get the ball rolling. X `20 XRead in the critters' flags and convert them. -Opusii`7D X X X X BEGIN X`20 X `7B SYSPRV stays off except when needed...`7D X priv_switch(0); X`20 X `7B Check the terminal type and see if it is supported`7D X termdef; X`20 X `7B Get the directory location of the image`7D X get_paths; X`20 X `7B Setup pause time for IO X setup_io_pause; X`20 X Some neccesary initializations `7D X msg_line := 1; X quart_height := trunc(screen_height/4); X quart_width := trunc(screen_width /4); X dun_level := 0; X`20 X`7B Init an IO channel for QIO `7D X init_channel; X`20 X`7B Grab a random seed from the clock `7D X seed := get_seed; X X X`09read_data; X `20 X X`7B Sort the objects by level `7D X sort_objects; X`20 X `7B Init monster and treasure levels for allocate `7D X init_m_level; X init_t_level; X`20 X `7B Init the store inventories `7D X store_init; X if (cost_adj <> 1.00) then price_adjust; X`20 X`7B The Wizard and God Passwords have been removed. Valid Wizards are determ Vined X based on acct. name. `7D X `20 X `7B Check operating hours`20 X If not wizard then No_Control_Y `7D X get_foreign(finam); X`20 X `7B Check or create hours.dat, print message `7D X intro(finam); X`20 X `7B Generate a character, or retrieve old one... `7D X if (length(finam) > 0) then X BEGIN `7B Retrieve character `7D X generate := get_char(finam); X change_name; X magic_init(randes_seed) X END X else X BEGIN `7B Create character `7D X create_character; X char_inven_init; X if (class`5Bpy.misc.pclass`5D.mspell) then X BEGIN `7B Magic realm `7D X learn_spell(msg_flag); X gain_mana(int_adj) X END X else if (class`5Bpy.misc.pclass`5D.pspell) then X BEGIN `7B Clerical realm`7D X learn_prayer; X gain_mana(wis_adj) X END; X`09if (class`5Bpy.misc.pclass`5D.espell) then X`09 BEGIN X`09 learn_extra(msg_flag); X`09 gain_mana(wis_adj) X`09 END; X X py.misc.cmana := py.misc.mana; X randes_seed := seed; `7B Description seed `7D X town_seed := seed; `7B Town generation seed `7D X magic_init(randes_seed); X generate := true X END; X`20 X`7B begin the game `7D X with py.misc do `7B This determines the maximum player level `7D X player_max_exp := trunc(player_exp`5Bmax_player_level-1`5D*expfact); X clear(1,1); `20 X prt_stat_block; X`20 X`7B Loop till dead, or exit `7D X repeat X if (generate) then generate_cave; `7B New level `7D X dungeon; `7B Dungeon logic `7D X generate := true; X until (death); X upon_death; `7B Character gets buried `7D X END. X `20 X `20 $ CALL UNPACK [.SOURCE]MORIA.PAS;1 1936606098 $ create 'f' X`7BAdd magical plusses`7D X`5Bpsect(misc$code)`5D procedure add_tohit(a,b,c,i:integer;var r:integer); XBEGIN X r := randint(a) + randint(b) + randint(c); X store`5B7`5D.store_inven`5Bi`5D.sitem.tohit := r; XEND; X X`7BAdd magical plusses`7D X`5Bpsect(misc$code)`5D procedure add_todam(a,b,c,i:integer;var r:integer); XBEGIN X r := randint(a) + randint(b) + randint(c); X store`5B7`5D.store_inven`5Bi`5D.sitem.todam := r; XEND; X X`7BAdd magical plusses`7D X`5Bpsect(misc$code)`5D procedure add_ac(a,b,c,i:integer;var r:integer); XBEGIN X r := randint(a) + randint(b) + randint(c); X store`5B7`5D.store_inven`5Bi`5D.sitem.ac := r; XEND; X X`7BAdd magical plusses`7D X`5Bpsect(misc$code)`5D procedure add_toac(a,b,c,i:integer;var r:integer); XBEGIN X r := randint(a) + randint(b) + randint(c); X store`5B7`5D.store_inven`5Bi`5D.sitem.toac := r; XEND; X X`7BAdd magical plusses`7D X`5Bpsect(misc$code)`5D procedure add_p1(a,b,c,i:integer;var r:integer); XBEGIN X r := a + randint(b) + randint(c); X store`5B7`5D.store_inven`5Bi`5D.sitem.p1 := r; XEND; X X`5Bpsect(misc$code)`5D procedure add_p1_rods(a,b,c,i:integer;var r:integer); XBEGIN X r := a + randint(b) + c; X store`5B7`5D.store_inven`5Bi`5D.sitem.p1 := r; XEND; X X`7B Soup-up the Black Market inventory - mwk`7D X`5Bpsect(store$code)`5D Xprocedure soup_up_black_market(indx:integer); Xvar X r1,r2,r3,r4,r5 : integer; XBEGIN X with store`5B7`5D.store_inven`5Bindx`5D do X BEGIN X case sitem.tval of `20 X 10,11,12: `7BSling ammo, bolts and arrows`7D X BEGIN `20 X case randint(10) of X 1,2,3: BEGIN X sitem.name := sitem.name + ' of Slaying'; X add_tohit(5,5,1,indx,r1); X add_todam(5,5,1,indx,r2); X sitem.cost := sitem.cost + 1250*r1 + 1250*r2 X END; X 4,5 : BEGIN +-+-+-+-+-+-+-+- END OF PART 9 +-+-+-+-+-+-+-+-