--- moria-5.6.orig/Makefile +++ moria-5.6/Makefile @@ -0,0 +1,48 @@ +# DEBIAN NOTE: This file is (obviously) just a simple stub. It did not +# exist in any form in the original. + +# The below can be customized for taste. +builddir = build +make = make + +# This target forwards the make to the build directory (unless it is one of +# those below, of course) +.DEFAULT moria: + @if ( test \! -d $(builddir) ) then $(make) builddir; fi + @echo "*** Entering $(builddir)/ to actually make the package." + ( cd $(builddir) && $(make) $@ || exit 1 ) + +# This target is used to avoid complaints from dpkg-source, use with caution! +# See README.debian-build for details. +clean: + if ( test -d $(builddir) ) then rm -r $(builddir); fi + +# To forward clean requests to the build directory (not actually used by my +# package at this point. +buildclean: + @if ( test -d $(builddir) ) then \ + ( cd $(builddir) && $(make) clean || exit 1 ) \ + fi + +# This target tests if the build directory exists, and complains if it does. +# It is called from debian/rules, and is placed in this makefile simply so +# it can inherit the builddir variable. +isclean: + @if ( test -d $(builddir) ) then \ + echo -e "\nERROR: You must remove the $(builddir) directory before using dpkg-buildpackage";\ + echo " due to limitations in dpkg-source. "\""make clean"\"" from the base dir"; \ + echo -e " will do this for you. See README.debian-build for details.\n";\ + exit 1; \ + fi + +# This target actually makes the build directory and populates it with the +# required symlinks. It also makes WARNING files so that people who haven't +# read README.debian-build hopefully will not modify files in this directory. +builddir: + @ echo "*** Making $(builddir)/ which will contain symlinks to the sources..." + mkdir $(builddir) || exit 1 + chmod 700 $(builddir) || exit 1 + ( cd $(builddir) && ln -si ../files ../unix/* ../source/* . || exit 1 ) + ( cd $(builddir) && echo -e "WARNING: Do not modify anything in this directory; it may be purged without\nwarning. If you want to change the source do it in the source/ or unix/ dirs\nto which these symlinks point. See README.debian-build for details." >> zz-WARNING && cp -ip zz-WARNING 00-WARNING && cp -ip ../debian/README.debian-build . || exit 1 ) + @ echo "*** Done making $(builddir)/" + @ echo --- moria-5.6.orig/changelog +++ moria-5.6/changelog @@ -0,0 +1,427 @@ +::::::: 1991 :::::::: +---------- 1/4 +spells.c: light_area(), always light area immediately next to player even if + in a room, could be standing on the edge of a room +monsters.c: Grave Wight, no longer has confusion spell, no other wight/wraith + has it +misc2.c: get_spell(), when enter invalid character, print "You don't know + that prayer." instead of "spell" for priests/etc. +creature.c: make_attack(), creatures which are repelled should not be confused + because they did not hit the player +death.c: exit_game(), delete #ifndef TURBOC around the restore_term() call +io.c: restore_term(), delete the call to clear() in the MSDOS code, it was + trying to use curses after curses had been exited +---------- 1/22 +files.c: call pause_line(23) after printing hours file +constant.h, config.h: constant.h should always be included before config.h, + because some systems redefine constants in config.h +rnd.c: include config.h after constant.h +main.c, misc2.c, save.c, signals.c: include constants.h before config.h +misc2.c, vms/getch.c: new function user_name() for VMS, fix get_name() + in misc2.c to call it +------- 1/30 +moria2.c: hit_trap(), add msg_print(CNIL) for the trap door case +-------- 2/4 +io.c: for ATARIST_MWC, use 240 instead of '#' for walls +save.c: for ATARIST_MWC, convert 240 to '#' when saving, and '#' to 240 + when loading, to avoid conversion problems +--------- 2/8 +create.c: monval(), cast i to int, otherwise some compilers do the arithmetic + with unsigned characters +--------- 2/19 +makefile: add new macro CURSES, define it for BSD/SYS V/and Xenix +config.h: add config info for XENIX, define SYS_V and unix, only undefine + register for MSC versions less than 600 (6.00?) +creature.c: mon_move, comment out register decl for r_ptr for XENIX systems + to avoid a compiler bug +misc2.c: place_gold, comment out register decl for t_ptr for XENIX systems + to avoid a compiler bug +unix.c: ifdef out include of termio.h, for XENIX add include of sys/types.h + and define bzero as memset, test for unix or M_XENIX at the top +Makefile: add optional commands to install target which chown/chgrp everythin + to bin, and put pointer to it at the top +---------- 2/25 +util/score: Two new utilities, prscore to print scorefiles, and delscore to + delete one entry from a scorefile. +config.h: add MORIA_* macros for the Atari ST with GCC +death.c, externs.h, io.c, main.c, signals.c, variable.c: Apply Atari ST/GCC + patches from Scott Kolodzieski. +-------- 3/1 +death.c: Amiga must open/close scorefile like MSDOS&VMS +io.c: init_curses(),restore_term(), fix bugs in AMIGA code, + add code to release resources +amiga/*: updated versions of amiga source files, from + cg37717@lion.eng.clemson.edu, Corey Gehman +atari_st/curscomp: complete rewrite of the curses code by Hildo Biersma +store2.c: get_haggle(), do not accept an increment value of zero, turn off + increment flag instead of accepting it +-------- 3/2 +store2.c: store_purchase(), store_prt_gold call was inside `if' now after, + did not update gold if store had 13 items and you bought the 13th +-------- 3/11 +moria1.c: sub3_move_light(), don't print over old location if find_flag + is true, unless find_prself is also true, this speeds up movement + in find mode by eliminating unnecessary drawing of characters +moria2.c: hit_trap(), call move_light() for the teleport trap case, to light + up the trap +misc1.c, save.c, treasure.c: change ATARIST_MWC ifdefs for using graphic + character to ATARI_ST which is true for both MWC and TC +io.c: remove all ATARIST_MWC diffs which were needed for the old non-standard + curses, change the rest to be ATARI_ST, since both MWC and TC need them +-------- 3/14 +source/*: add Mac THINK C support +mac/dumpres/*: add Mac THINK C support +mac/scrnmgr/*: add Mac Think C support +moria1.c: find_init(), when !light_flag and !find_prself, must erase the + player's '@', because sub3_move_light() won't, see 3/11 change above +------- 3/15 +mac/*: add Mac THINK C support +*: put file name and 1991 copyrights in all source files +------- 3/23 +save.c: prevent resurrection of a total winner character +constants.h, creature.c, monsters.c, recall.c: add new flag CM_ONLY_MAGIC, + set this flag in creature.c, check the flag in recall.c, allows + recall to print movement speed for Quylthulgs +creature.c: when a wand is drained of charges, inscribe it as {empty} if + it is not known2 +-------- 3/24 +files.c, ibmpc/ms_misc.c: ifdefed out msdos_intro(), since that routine is + obsolete now +doc/moria.6: add -S option to list at the top +ibmpc/CONFIG.DOC: update for Umoria 5.x, remove kneller's address, and put in + my address +------- 3/25 +config.h, constant.h, */*.c: move VMS definition for ESCAPE from config.h + to constant.h, now all files include config.h before constant.h +*: linted all sources files, changed version numbers to 5.3 +------- 3/30 +vms/*, ibmpc/ms_misc.c, config.h, death.c, dungeon.c, externs.h, files.c, +io.c, save.c: merge in changes from Ralph Waters, which are needed to compile + the sources under VMS and IBM-PC/Turbo C. +moria2.c, store2.c, *.c: get_item(), show_inven() take new parameter mask, + if mask is non-zero, they only list items indicated by mask array, + store_sell() calculates a mask based on what store will buy +store2.c: purchase_haggle(), sell_haggle(), if the auto increment is larger + than the difference between the store's offer and the player's offer, + then set the auto increment to the exact difference +dungeon.c, externs.h, moria1.c, moria2.c, variable.c: eliminate search_flag, + it was redundant, replace all uses with (py.flags.status & PY_SEARCH) +tables.c: remove good armor items from armory, to force players to search for + them in the dungeons, hard leather boots, iron helm, partial plate, + full plate +misc1.c: alloc_monster(), always create dragons sleeping here, to give the + player a sporting chance +moria1.c: inven_command(), when pack not empty and show_weights flag true, + display capacity along with weigth carried on first line of inventory +spells.c: build_wall(), permanently light walls created within range of + player's lamp +spells.c: earthquake(), fix it to act just like build_wall when a monster is + trapped in a wall +creature.c, externs.h: movement_rate(), now static +*: release 5.3.1 sources +------- 4/27 +ms_misc.c, externs.h: change declarations of warn() to match definition, + change declaration and definition of error() to match warn(), +externs.h: fix declarations for sleep(), find_init(), show_inven(), get_item() +death.c: display_scores(), don't set player_uid for non UNIX/VMS system + duplicate_character(), ifdef out code which is unreachable for non + UNIX/VMS system, make all returns have a value +sets.c: set_null(), add a #pragma argused for TURBO C +ms_misc.c: fix three lines that had an assignment inside an if +externs.h: add prototypes/declarations for VMS files getch.c and uexit.c +moria1.c: see_wall(), change ATARIST_MWC ifdef to ATARI_ST +atari_st/curscomp/curses.c: winsch(), first loop ran in wrong direction +externs.h: add declarations for atari st functions +atari_st/moria.prj: new file, TC project file for Umoria +death.c: highscores (), change fseed to fseek, typing error +creature.c, death.c, desc.c, dungeon.c, files.c, io.c, moria1.c, moria2.c, + store2.c, wizard.c, atarist.c: include stdlib.h if ATARIST_TC to get + prototypes for standard library functions +generate.c: for ATARIST_TC, include +atarist/curscomp/curses.h: change mvadd* macros from compound statements to + conditional expressions, so that all returns values are error checked +io.c: for ATARIST_TC, include ext.h to properly define (?) sleep +config.h: for ATARIST_TC, define index strchr +save.c: sv_write()/get_char(), define t_ptr for both MSDOS and ATARI_ST; + get_char(), change ATARIST_MWC ifdef around chmod call to ATARI_ST + include time.h for ATARIST_TC +unix/Makefile: change ONWER to OWNER +creature.c: creatures(), give moves to monsters trapped in rock, so that they + will die/dig out immediately, mon_move() if a monster in rock is + already dead, don't kill it again +*: update address info in all files +io.c: change __GNU_C_ to __GNUC__ +config.h: the test for undefining 'register' was wrong, it was undefing it + for all non-MSC compilers +moria2.c: tunnel(), heavy weapon code wrong, eliminate >>2 of penalty, add + penalty instead of subtracting it +help.c: ident_char(), add period after Giant Frog. +monsters.c: novice priest, change sleep from 10 to 5 to match other novice 'p' +moria1.c, store2.c, *.c: get_item() new parameter 'message', when invalid + letter hit, print this message if non-zero instead of beeping, + store_sell() pass message "I do not buy such items.", fix all other + callers to pass CNIL +-------- 4/28 +misc2.c, files.c: put_misc2(), file_character(), when player at max level, + don't print a number for Exp to Adv, instead print ****** +io.c: msg_print(), put multiple messages on the same line if they are short + enough +------- 5/22 +externs.h: ifdef out declaration of sprintf for NeXT +io.c (init_curses): correct atarist/GNUC code for signal call, ifdef was wrong +------- 7/6 +spells.c (unlight_area): Unlight all floor spaces with `lr' set, instead of + just the room floors spaces. This darkens the doorways. +moria1.c (light_room): Add code to set the fm flag, necessary so that the + above fix does not unlight doors that it shouldn't. +io.c (msg_print): Don't combine NULL messages with other messages. +save.c (get_char): Use msg_print when printing the `departed spirit' message. +-------- 7/26 +store2.c (purchase_haggle, sell_haggle): If the automatic increment plus the + last offer passes the shop keepers current ask, then clear the incr. +-------- 10/5 +*: Add changes needed to prevent warnings from the IBM-PC TURBO C compiler. +misc[1234].c, moria[1234].c: misc[12].c and moria[12].c were each split into + two files, because they were too large for TURBO C's integrated + environment +*: adjust all makefiles, externs.h, etc to account for new moria/misc files +TCCONFIG.TCU, TCPICK.TCU: new files, uuencoded copies of Turbo C setup files +config.h, ms_misc.c: New define USING_TCIO, used to prevent including curses.h + in ms_misc.c. Defaults to defined if using TURBOC on an IBM-PC. +io.c: delete special purpose AMIGA code, it now uses curses +amiga/amiga.h: Deleted. +amiga/amiga.c: Delete all curses stubs. +-------- 10/6 +macrsrc.h: change type of resType, ResID to long +macrsrc.c: eliminated search_flag from macrsrc.c (see 3/30 changes) +config.h: put back switches RSRC, RSRC_PART1 and RSRC_PART2 +ScrnMgr.ro: changed def of MBAR #228 (fixes crash on Mac Plus) and INFO #1 + (Make default window be full screen) +ScrnMgr.c: check for reconfig flag enabled for THINK_C, add recognition + of MacClassic (and LC?) keyboard, now assumes unknown keyboard type + has control key, other misc cleanups +moria.ro: changes version string +macconf.c: config.h included for consistency +mac.c: added support for 8-column tabs +mac/Install.doc: new file, installation instructions for THINK C +macconf.c, machelp.c, macscore.c scrnmgr.c: covered up error in THINK C + includes files OK/Cancel for ok/cancel +death.c, save.c: delete setmode calls for IBM-PC, instead open files in binary + mode +--------- 10/12 +*: Changed version number to 5.4. +save.c: change code to accept savefiles with version numbers greater than the + version number of the game, savefile format frozen as of 5.2.2 +externs.h: ifdef out the troublesome sprintf declaration +config.h: force `unix' to be defined for unix systems, since some stupid + systems (e.g. AIX) don't already define it +--------- 10/15 +externs.h, moria4.c, ms_misc.c: correct typos discovered under MSDOS +--------- 10/19 +spells.doc, exp.doc: New documentation files. +--------- 10/26 +vms/uexit.c, externs.h, io.c, signals.c: Define uexit as void, and ifdef out + exit declarations when VMS. +vms/moria.opt: add misc[34].obj and moria[34].obj +ibmpc/ms_misc.c: correct typo in error() +pr_items.c, pr_monst.c: main now returns 0 +CONFIG.DOC, TERMCAP, ms_ansi.c: use le/do instead of obsolete bc/xd +dragon.inf: moved from util/weapons to doc, and updated it to be accurate +spoilers: Update from USENET FAQ posting. +--------- 11/17 +io.c: ifdef out code checking for 8 char TABS, because it assumes that the + screen is exactly 80 characters wide +moria[12].[ms/txt]: Correct a few typos. +*: Fix all file permissions. +::::::: 1992 :::::::: +Maintenance taken over by David Grabiner +--------- 7/16 +moria4.c: bash(), use random direction if player is confused +spells.c: fire_ball(), fire_bolt(), don't update recall if monster not lit; + this can happen if bolt hits an invisible monster +spells.c: speed_monsters(), sleep_monsters2(), dispel_creature(), + turn_undead(), only affect creatures within MAX_SIGHT +spells.c: mass_poly(), area of effect should be <= MAX_SIGHT, was < +spells.c: destroy_area(), remove light from player's spot +spells.c: enchant(), add new variable limit, chance of failure is now + (plusses/limit), with very slight chance of success over limit +scrolls.c: when enchanting melee weapons to damage, set limit to weapon's + maximum damage, otherwise use 10 to give behavior similar to old method +misc2.c: magic_treasure(), make standard deviation of damage bonus on a melee + weapon proportional to weapon's maximum damage; these changes mean + that daggers can no longer become powerful weapons +treasure.c: the Zweihander has now become a great weapon, value increased from + 1000 to 1500 +externs.h: fix declaration for enchant() +staffs.c, wands.c: give everyone a slight chance to use difficult wands and + staffs, otherwise a warrior will never be able to use many items +--------- 7/23 +death.c: print_tomb(), insert msg_print(CNIL) so that "You are using:" and + "You are carrying:" don't get combined as one message; this made it + impossible to see the equipment list +store2.c: haggle_insults(), insert msg_print(CNIL) so that insult is always + recognizable +store2.c: purchase_haggle() and sell_haggle(), new variable didnt_haggle, + don't call updatebargain if no haggle +store1.c: noneedtobargain(), changed to sliding scale, (good-3*bad) must + be more than 5 + (price/50) to skip haggling, so that haggling for + cheap items is over quickly, but can still eventually skip + haggle for all items +store1.c: updatebargain(), now update for all items worth >9 gold, instead + of just 10-999, since it is now possible to skip haggling for more + valuable items as well +--------- 7/25 +moria4.c: bash(), unsuccessful bash takes a turn; otherwise, you can + attempt to bash in different directions while confused or to locate + invisible monsters; eliminate variable no_bash +--------- 7/27 +check all above changes +moria4.c: bash(), get "You bash at empty space" method when bashing a + wall, corrected to "nothing interesting happens"; this also + prevents bashing from locating a secret door +--------- 8/9 +merge in all changes from 5.4.0 to 5.4.1 +creature.c: update attack information only if monster is visible; update + death information even if monster is not visible, since + information will be on tombstone +*: change version number to 5.5.0 +--------- 8/12 +spells.c: enchant(), guard against randint(0) if called with limit of 0 + (it shouldn't be). +moria4.c: throw_object(), py_bash(), don't do negative damage +shortnam.sed, spells.c: fire_ball(), fix spelling of "envelops" +doc/faq: remove old spoilers file, and put current FAQ here instead +*: put my name (DJG) in credits as contact +*: change copyright date in all source files to 1992 +---------- 8/13 +release umoria 5.5.0 +---------- 10/26 +doc/moria[12].[ms,txt]: correct some typos, and make changes for 5.5.0 +---------- 10/31 +misc4.c: scribe_object() allowed inscriptions longer than 12 characters + if 13-24 characters availble for inscription, could overwrite + other data +::::::: 1994 :::::::: +---------- 6/6 +scrolls.c: aggravate monster should give "humming noise" before "stirring" +scrolls.c: always identify scrolls which print a message +unix/unix.c: change from obsolete getpw() to getpwuid() to get UID +death.c: #include seems to be needed on XENIX and SYSV +death.c: fix #ifdef (...) || defined(...) +save.c: set fd=-1 after closing file to prevent double close +dungeon.c: move hero/superhero to first status check so that player's HP won't + go below 0 in mid-turn (killing him) and then become positive +doc/moria[12].ms: fixes so that file works with groff +store1.c: sell_price(), check for consistent sale prices compared + pointers rather than values +create.c: get_all_stats(), set player level to 1 before calling set_use_stat + with constitution (which used level to check hit points) +misc3.c: misspelled variable "holderr" in MWC-specific code +misc3.c: prt_experience(), put check against max level in while loop + so that level gain is never tested if player is max level +misc3.c: gain_level(), corrected comment for loss of extra experience + when player gains multiple levels +moria3.c: monster_death(), don't make player a winner if already dead +store2.c: get_haggle(), %d should be %ld +misc3.c: todis_adj(), case of dexterity 3 was omitted +spells.c: wall_to_mud(), may find objects in rubble as with tunneling +---------- 6/7 +io.c, signals.c: included changes from Andrew Chernov for 386BSD support +io.c, config.h: included changes from Berthold Gunreben for HP-UX support +config.h, death.c, files.c: added patches for HP Apollo, which doesn't allow + multiple processes to use the same file +config.h: defined MORIA_LIB to contain pathname for moria/files, to + simplify configuration +moria1.c: inven_command(), get_item(), added code from Harry Johnston + which allows use of 0-9 to specify an item with the + corresponding inscription +doc/moria[12].ms: documented above change +files/version.hlp: my name appeared both as author and "other contributor" +scrolls.c: set AC bonus on cursed weapon, hit/dam bonuses on cursed armor + to zero (in case HA/DF/gauntlets of slaying had bonus) +creature.c: don't print message when invisible monsters recover from bash +creature.c, moria3.c, spells.c: reworked monster confusion, monster's + confused value now gives duration, turn_undead has guaranteed + duration equal to player's level, other confusion random +creature.c: undead which have been turned will flee rather than moving + randomly, attack only if cornered +recall.c: print "It is resistant to" if monster has not cast any spells + but breath flag is known (because monster resisted an attack) +monsters.c: allow monsters to resist attacks if they have no breath + weapon but use the attack type (so fire giants resist fire) +sets.c: new function set_large(), identifies objects too large to fit in + a chest or be carried by small creatures +misc3.c: get_obj_num(), new parameter must_be_small to generate only + small objects when appropriate; place_object() passes it +files.c: random object sample passes must_be_small +constant.h, treasure.c, monsters.c, moria3.c, recall.c: new constant + CM_SMALL_OBJ for chests, and for monsters carrying only small + objects, check it in monster_death() by setting a bit in + treasure type, allow it to be recalled +moria3.c: summon_object(), object must be small if bit flagged above +many: change all other calls to place_object to set must_be_small to FALSE +externs.h: fix declaration of get_obj_num(), place_object(), add set_large() +store1.c: noneedtobargain(), change scale again, (good-3*bad-5) must be + positive and its square must be at least price/50, this allows + high-level characters to become good bargainers for expensive + items +---------- 6/8 +lint all above changes, fix assorted typos +recall.c: recalled spell frequency for non-spellcasters in wizard mode +monsters.c: checked small objects/resistances for consistency, fixed error +creature.c: creatures given resistance by setting of breath bits tried + to cast spell, calling randint(0) +moria3.c: error in testing type caused all monsters which should drop + both objects and gold to drop only gold +creature.c: turned undead must call get_moves so they know which way to flee +---------- 6/9 +moria1.c: inven_command(), get_item(), print 0-9 in prompt message when + appropriate +moria[12].ms: clarified that digit inscriptions work only on items in pack +prayer.c: strengthened Holy Word +player.c: reduced failure chance for Holy Word +check all changes, fixed more typos +---------- 6/10 +moria1.c: inven_command(), get_item(), 0-9 was printed in wrong place +---------- 6/22 +spells.c: td_destroy(), td_destroy2(), don't disarm/unlock chests that + are already empty +treasure.c: up staircase had extra space after name +doc/moria[12].ms: proofread, fix many typos +---------- 6/25 +monsters.c: allow thieves to pick up objects on the floor +main.c,config.h,amiga/amiga.c,amiga/timer.c: included changes from + Ronald Cook for Lattice C support on Amiga +death.c,io.c,signals.c,unix.c,config.h: included changes from Brian + Johnson for Linux support +changed version number to 5.5.1 +fix more lint errors +util/mergemem: code from Eric Bazin to merge monster memories +*: changed all copyright dates to 1994 +released version 5.5.1 +---------- 7/5 +death.c: || !defined(APOLLO) should be && +---------- 7/11 +store2.c: get_haggle, changed %ld back to %d since variable is 16 bits +---------- 7/20 +treasure.c: fixed many inconsistencies, mostly prices and names +misc2.c: magic_treasure(), fixed values of SU and SA, which weren't + changed when see invisible was moved from SA to SU; also changed + magical bonuses for these weapons +store2.c: increase_insults(), don't clear out haggling record if player + is thrown out (it might be worse than zero), just penalize as + for bad bargain +---------- 7/21 +treasure.c: fixed a few more inconsistencies with items +files.c, misc32.c: file_character(), put_misc2(), don't print "Exp to + Adv" if over max_level (i.e., winner) +files.c: file_character(), leave enough space for printing 8-digit + experience points +misc3.c: put_misc2(), make display consistent with above change +misc3.c: new function prt_8lnum(), print a long variable in 8 digits of + space, needed by revised put_misc2() above +death.c: need flock hack for HPUX +io.c: #include for HPUX was inside #if 0 +ibmpc/*: fix several typos in PC-specific files, also one in config.h +changed version to 5.5.2 +released version 5.5.2 --- moria-5.6.orig/source/config.h +++ moria-5.6/source/config.h @@ -19,6 +19,8 @@ along with Umoria. If not, see . */ +#define DEBIAN_LINUX + #define CONFIG_H_INCLUDED #ifdef CONSTANT_H_INCLUDED Constant.h should always be included after config.h, because it uses @@ -27,7 +29,7 @@ /* Person to bother if something goes wrong. */ /* Recompile files.c and misc2.c if this changes. */ -#define WIZARD "David Grabiner " +#define WIZARD "Phil Brooke " /* The wizard password and wizard uid are no longer used. */ @@ -221,13 +223,13 @@ #else -#if 0 +#if defined(DEBIAN_LINUX) /* Debian standards for file location */ /* This must be unix; change file names as appropriate. */ #define MORIA_SAV ".moria-save" #define MORIA_HOU "/etc/moria-hours" #define MORIA_MOR "/usr/lib/games/moria/news" -#define MORIA_GPL "/usr/lib/games/moria/COPYING" +#define MORIA_GPL "/usr/share/common-licences/GPL-3" #define MORIA_TOP "/var/games/moria/scores" #define MORIA_HELP "/usr/lib/games/moria/roglcmds.hlp" #define MORIA_ORIG_HELP "/usr/lib/games/moria/origcmds.hlp" --- moria-5.6.orig/source/io.c +++ moria-5.6/source/io.c @@ -137,6 +137,10 @@ #include /* prototype for execl */ #endif +#ifdef DEBIAN_LINUX +#include +#endif + /* These are included after other includes (particularly curses.h) to avoid redefintion warnings. */ @@ -353,10 +357,16 @@ /* RENMOD: libc6 defaults to BSD, this expects SYSV */ (void) sysv_signal (SIGTSTP, suspend); #else +#ifdef DEBIAN_LINUX + /* (void) signal (SIGTSTP, (sig_t)suspend); */ + /* RENMOD: libc6 defaults to BSD, this expects SYSV */ + (void) sysv_signal (SIGTSTP, suspend); +#else (void) signal (SIGTSTP, suspend); #endif #endif #endif +#endif #endif if (((savescr = newwin (0, 0, 0, 0)) == NULL) #ifdef VMS --- moria-5.6.orig/debian/moria.postrm +++ moria-5.6/debian/moria.postrm @@ -0,0 +1,14 @@ +#!/bin/sh -e + +# Shamelessly stolen from Joey Hess' bsdgames-2.12-9 + +SCOREFILES=" + /var/games/moria/scores" + +# Remove high score files on purge. +if [ "$1" = "purge" ]; then + rm -f $SCOREFILES + rmdir /var/games/moria /var/games 2>/dev/null || true +fi + +#DEBHELPER# --- moria-5.6.orig/debian/moria.manpages +++ moria-5.6/debian/moria.manpages @@ -0,0 +1 @@ +doc/moria.6 --- moria-5.6.orig/debian/changelog +++ moria-5.6/debian/changelog @@ -0,0 +1,73 @@ +moria (5.6-1) unstable; urgency=low + + * New upstream release. + * New maintainer. + * Reintroduce to Debian archive (Closes: #594224). + * New licence: it's GPLv3. Update debian/copyright. + * Move to section games (it's no longer non-free). + * Standards version update (3.9.1), compat and source/format added. + * Update debian/rules for changes to debhelper. Freshen/tidy overall. + + -- Phil Brooke Tue, 07 Sep 2010 16:22:25 +0100 + +moria (5.5.2-5) unstable; urgency=low + + * Changed location of score file from /var/lib/games/moria/scores to + /var/games/moria/scores per FHS. (Closes: #115849) + * Fixed handling of score file on upgrades (do not null it out!). + * Applied fixes to a few buffer overflows. (Thanks to Lars Helgeland for + noticing the overflows and supplying the patches.) (Closes: #115745) + * Upgraded policy to version 3.5.6.0. + + -- Rene Weber Wed, 24 Oct 2001 22:44:05 -0400 + +moria (5.5.2-4) unstable; urgency=low + + * Fixed dependencies (was compiled against libncurses4, what was I doing + that day?). + * Corrected explanation of the 'V' command in moria2.txt (but not in the + nroff source for that documentation). + * Removed use of dh_suidregister. + + -- Rene Weber Mon, 9 Jul 2001 23:31:01 -0400 + +moria (5.5.2-3) unstable; urgency=low + + * Added a Build-Depends line. + * Changed the handling of the build directory for the convenience of + porters (should have no impact on users). + * Changed short description so that it does not include the name of the + package. + * Corrected path to /usr/games/moria binary in the menu. Closes: #81353 + + -- Rene Weber Sat, 6 Jan 2001 02:47:02 -0700 + +moria (5.5.2-2) unstable; urgency=low + + * Fixed typos in the control/README.debian file + * Updated the author's e-mail address in the copyright file + * Updated the author's web page listed in the README.debian + * Installed a new version of the FAQ (reflecting the author's move) + + -- Rene Weber Sat, 14 Oct 2000 10:23:48 -0700 + +moria (5.5.2-1) unstable; urgency=low + + * Initial Release. + * Added DEBIAN_LINUX #define to handle code customizations. + * Needed to include termios.h in io.c + * All instances of signal() changed to sysv_signal() since libc6 defaults + to BSD semantics. + * Instead of redefining getuid, just ifdeffed it out of unix.c + * Changed LOCK_EX and LOCK_SH definitions in death.c (to avoid + redefinition warnings). + * Library files are in /usr/lib/games/moria except for the scores file + which is in /var/lib/games/moria and the hours file which has been + renamed to /etc/moria-hours + * Makefile changed to make the binary setgid instead of setuid, as + required by Debian Policy 5.10. None of the code itself needed to be + touched, since it already relinquished uid and gid in the original code. + * Saved game file is named ".moria-save" not "moria-save" + + -- Rene Weber Sun, 28 May 2000 16:35:38 -0400 + --- moria-5.6.orig/debian/README.debian +++ moria-5.6/debian/README.debian @@ -0,0 +1,24 @@ +moria for DEBIAN +---------------------- + +NOTE: Although the package name is "moria" this is actually "umoria 5.6", +which is the UNIX port of moria. + +moria is a single player roguelike game that has been around for quite a +while, and is the predecessor of variants such as angband. It features +scrolling maps, and an infinite (constantly regenerated) dungeon. + +Moria's dungeons are populated by monsters, some of which are inspired by +J.R.R. Tolkien's books. The goal of the game is to find and kill the +Balrog, whereupon the player is crowned King. Your player can be created +from a combination of 8 races (human, half-elf, elf, halfling, gnome, +dwarf, half-orc, half-troll) and 6 classes (warrior, mage, priest, rogue, +ranger, paladin), and is measured by 6 attributes (strength, dexterity, +intelligence, wisdom, constitution, and charisma). + +See http://www-math.bgsu.edu/~grabine/moria.html for more details about +moria, and sites like http://beej.us/moria/ for generic roguelike info. + +Rene Weber , Sat, 14 Oct 2000 10:25:23 -0700 +Phil Brooke , Wed, 08 Sep 2010 07:10:56 +0100 + --- moria-5.6.orig/debian/rules +++ moria-5.6/debian/rules @@ -0,0 +1,74 @@ +#!/usr/bin/make -f +# MAde with the aid of dh_make, by Craig Small +# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess. +# Some lines taken from debmake, by Cristoph Lameter. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +build: build-stamp +build-stamp: + dh_testdir + + # Add here commands to compile the package. + ( cd build ; $(MAKE) ) + + touch build-stamp + +clean: + dh_testdir + dh_testroot + rm -f build-stamp install-stamp + + make clean + + # Add here commands to clean up after the build process. + + dh_clean + +install: install-stamp +install-stamp: build-stamp + dh_testdir + dh_testroot + dh_prep + dh_installdirs + + # Add here commands to install the package into debian/tmp. + ( cd build ; $(MAKE) install DESTDIR=`pwd`/../debian/moria ) + + touch install-stamp + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install +# dh_testversion + dh_testdir + dh_testroot + dh_installdocs + dh_installexamples + dh_installmenu +# dh_installemacsen +# dh_installinit + dh_installcron + dh_installman +# dh_undocumented + dh_installchangelogs + dh_strip + dh_compress + dh_fixperms --exclude=usr/games/moria --exclude=var/games/moria + # dh_suidregister + dh_installdeb + dh_shlibdeps + dh_gencontrol +# dh_makeshlibs + dh_md5sums + dh_builddeb + +source diff: + @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary --- moria-5.6.orig/debian/moria.postinst +++ moria-5.6/debian/moria.postinst @@ -0,0 +1,14 @@ +#!/bin/sh -e + +SCOREFILES="/var/games/moria/scores" + +# If the score file is not extant, touch it into existence. +for file in $SCOREFILES; do + if [ ! -e $file ]; then + touch $file + chown root:games $file + chmod 664 $file + fi +done + +#DEBHELPER# --- moria-5.6.orig/debian/docs +++ moria-5.6/debian/docs @@ -0,0 +1 @@ +README changelog doc/moria1.txt doc/moria2.txt doc/pronounc doc/spells.doc doc/FEATURES.NEW doc/dragon.inf doc/exp.doc doc/history doc/faq doc/faq.2001 --- moria-5.6.orig/debian/dirs +++ moria-5.6/debian/dirs @@ -0,0 +1,4 @@ +var/games/moria +usr/lib/games/moria +etc +usr/games --- moria-5.6.orig/debian/README.debian-build +++ moria-5.6/debian/README.debian-build @@ -0,0 +1,43 @@ +moria for DEBIAN +---------------------- + +*** THE BUILD DIRECTORY IS SUBJECT TO BEING DELETED WHEN MORIA IS BUILT *** + +NOTE: Although the package name is "moria" this is actually "umoria 5.5.2", +which is the UNIX port of moria. + + +SPECIAL NOTE FOR PEOPLE WORKING WITH THE SOURCE + + Do NOT change anything in the moria-5.5.2/build directory (if it exists +for you). Read on for rationale. + + Due to the fact that upstream uses a somewhat unusual method of having +the user make symbolic links depending on what operating system they are +building, there is a significant oddity to how it is built for Debian. + + The main issue is that dpkg-source, one of the tools for building +Debian packages (and which is called by dpkg-buildpackage) cannot handle the +appearance of symbolic links; however, the autobuilders require that the +links either be present or automatically generated. + + The compromise I have made is that I have written a stub Makefile in the +main moria directory, which creates a "build" directory (called "build/" by +default, although customizable in that Makefile) and populates it with the +required symlinks. This satisfies the requirements for autobuilders, except +that the build directory persists after the build is complete so a "rebuild" +will fail with dpkg-source complaining that there are unrepresentable +changes in the build directory. To get around this, I have made a "clean" +target in my stub makefile which will "rm -f build/", and placed a check in +debian/rules that exits with an error (and instructions to run make clean) +if the build directory exists. + + The practical upshot of this is that anything in moria-5.5.2/build +(where "build" is the build directory as defined in moria-5.5.2/Makefile) is +subject to (almost) automatic deletion. If you are modifying the source, do +NOT do it in the build directory, but rather do it in the src/ and unix/ +directories to which the symlinks point. + +*** THE BUILD DIRECTORY IS SUBJECT TO BEING DELETED WHEN MORIA IS BUILT *** + +Rene Weber , Sun, 12 Nov 2000 12:50:32 -0500 --- moria-5.6.orig/debian/menu +++ moria-5.6/debian/menu @@ -0,0 +1,5 @@ +?package(moria):command="/usr/games/moria" \ + needs="text" \ + hints="Roguelike,Maze,Dungeon" \ + title="Moria" \ + section="Games/Adventure" --- moria-5.6.orig/debian/moria.preinst +++ moria-5.6/debian/moria.preinst @@ -0,0 +1,32 @@ +#!/bin/sh -e + +# Shamelessly stolen from Joey Hess' bsdgames-2.12-9 + +SCOREFILES="/var/games/moria/scores" + +# We used to keep score files in /var/lib/games, and if files are there, +# move them into the new location. +if [ -d /var/lib/games ]; then + + # Have to set up directory hierarchy, since this is running as a + # preinst. + mkdir -p /var/games/moria + chown root:games /var/games/moria + chmod g+rws /var/games/moria + + for file in $SCOREFILES; do + oldfile=`echo $file | sed s:/var/games/:/var/lib/games/:` + if [ -e $oldfile ]; then + if [ ! -e $file ]; then + mv -f $oldfile $file + else + rm -f $oldfile + fi + fi + done + + # Delete the old directory hierarchy. + rm -rf /var/lib/games/moria +fi + +#DEBHELPER# --- moria-5.6.orig/debian/compat +++ moria-5.6/debian/compat @@ -0,0 +1 @@ +7 --- moria-5.6.orig/debian/control +++ moria-5.6/debian/control @@ -0,0 +1,26 @@ +Source: moria +Section: games +Priority: optional +Maintainer: Phil Brooke +Build-Depends: debhelper (>= 7.0.0), libncurses-dev +Standards-Version: 3.9.1 + +Package: moria +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Conflicts: suidmanager (<< 0.50) +Description: A roguelike game with an infinite dungeon + NOTE: despite the package name, this is actually UMORIA 5.5.2. + . + A single player roguelike game with a regenerating dungeon, moria is the + predecessor of angband with a full-screen, text-based, turn-based + interface. It features scrolling maps, and an infinite (constantly + regenerated) dungeon. + . + Moria's dungeons are populated by monsters, some of which are inspired by + J.R.R. Tolkien's books. The goal of the game is to find and kill the + Balrog, whereupon the player is crowned King. Your player can be created + from a combination of 8 races (human, half-elf, elf, halfling, gnome, + dwarf, half-orc, half-troll) and 6 classes (warrior, mage, priest, rogue, + ranger, paladin), and is measured by 6 attributes (strength, dexterity, + intelligence, wisdom, constitution, and charisma). --- moria-5.6.orig/debian/copyright +++ moria-5.6/debian/copyright @@ -0,0 +1,27 @@ +This package was originally debianized by Rene Weber +rene_debmaint@elvenlord.com on Sun, 28 May 2000 16:35:38 -0400. + +Umoria (Unix moria) version 5.6 was downloaded from + http://www.asselstine.com/moria-5.6.tar.gz + +Upstream Author(s): David Grabiner et al. +Copyright (C) 1985-2008 + +From the upstream README: + + Umoria is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Umoria is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Umoria, in the files/COPYING file. If not, see + . + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL-3'. --- moria-5.6.orig/debian/source/format +++ moria-5.6/debian/source/format @@ -0,0 +1 @@ +1.0 --- moria-5.6.orig/doc/moria.6 +++ moria-5.6/doc/moria.6 @@ -1,13 +1,9 @@ -.TH MORIA 6 "" "Local" -\" By default, this man page assumes moria was compiled with the original -\" command set. If you are using the rogue like command set, then delete -\" the first three characters on the following line. -\" .ds O ROGUE_LIKE -.if '\*(Bd'' .ds Bd moria +.TH MORIA 6 "" .SH NAME moria \- a dungeon game .SH SYNOPSIS -.B \*(Bd +.B +moria [ .B \-o ] [ @@ -68,15 +64,11 @@ (if it exists) when you try to save your game. .PP You move in various directions -.ie '\*O'ROGUE_LIKE' the same way you do in \fIrogue\fP(6). -.el by pressing the numeric keypad keys, VMS-style. +by pressing the numeric keypad keys, VMS-style. If you specify -.if '\*O'ROGUE_LIKE' \fB\-o\fP, you move by pressing the numeric keypad -.ie '\*O'ROGUE_LIKE' keys, VMS-style. -.el \fB\-r\fP, you move the same way you do in \fIrogue\fP(6). +\fB\-r\fP, you move the same way you do in \fIrogue\fP(6). You can also specify -.ie '\*O'ROGUE_LIKE' \fB\-r\fP to force the \fIrogue\fP(6) like command set. -.el \fB\-o\fP to force the VMS-style command set. +\fB\-o\fP to force the VMS-style command set. These options will override defaults stored in the savefile. If these options are given multiple times, only the last one will take effect. .PP --- moria-5.6.orig/doc/faq.2001 +++ moria-5.6/doc/faq.2001 @@ -0,0 +1,789 @@ +Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!howland.erols.net!newshub2.home.com!news.home.com!news1.rdc1.md.home.com.POSTED!not-for-mail +Sender: grabiner@CC664387-B +Newsgroups: rec.games.roguelike.moria +Subject: rec.games.roguelike.moria Frequently Asked Questions +Expires: 22 Oct 2001 00:00:00 GMT +From: grabiner@alumni.princeton.edu (David J. Grabiner) +Message-ID: +Lines: 773 +X-Newsreader: Gnus v5.7/Emacs 20.5 +Date: Sun, 21 Oct 2001 22:12:03 GMT +NNTP-Posting-Host: 24.249.239.64 +X-Complaints-To: abuse@home.net +X-Trace: news1.rdc1.md.home.com 1003702323 24.249.239.64 (Sun, 21 Oct 2001 15:12:03 PDT) +NNTP-Posting-Date: Sun, 21 Oct 2001 15:12:03 PDT +Organization: Excite@Home - The Leader in Broadband http://home.com/faster +Xref: senator-bedfellow.mit.edu rec.games.roguelike.moria:7340 + +Frequently Asked Questions for rec.games.roguelike.moria + +Last changes: 8/7/01 (Palm port, changed my address) + 6/15/01 (new mirror) + 5/12/01 (moved Australian mirror) + +First, a general guideline for posters. When you post any question +related to playing or debugging the game, please give the version +number, which you can get during the game by pressing "v". + +These are the questions in the Moria Frequently Asked Questions list. +Quick answers to some questions are given in parentheses; more detailed +answers to those questions with numbers are in the list which follows. + +The answers below are separated by form feeds, so that in most news +readers, you can get the answer you want without looking at the rest of +the spoilers. (Search for the string "Q5", for example.) + +Many of the answers are only correct for Umoria versions (4.87 and 5.x); +I don't know much about the other versions of Moria. + +Please send any corrections or other suggested questions to me at +grabiner@alumni.princeton.edu + +The FAQ is now maintained on the Web at + + + +A copy of the FAQ as it was last posted may be obtained by FTP from the +RTFM archive, + +ftp://rtfm.mit.edu/pub/usenet/rec.games.roguelike.moria/rec.games.roguelike.moria_Frequently_Asked_Questions + +or by using the mailserver on RTFM. To use the mailserver, send a +message to mail-server@rtfm.mit.edu containing the line +"send /pub/usenet/rec.games.roguelike.moria/rec.games.roguelike.moria_Frequently_Asked_Questions" + +There is also a WWW page for Moria, with links to the spoilers, newsgroup, +this FAQ, and the FTP site. It is + + + +The most common questions, asked by both beginners and others: + +Q1. How do I get the Moria sources/executables/documentation? +(PC executables are available at + +Linux source is available at +. +sources and other exeuctables are on the main archive at +.) + +Q2. I can't get Moria/Angband set up on my machine; is there a server on +another machine that I can use? (Yes; telnet://chungkuo.org) + +What does this item do? (Answer is below with the spoilers.) + +Why do most winning characters carry several copies of spell books? +(In case one gets stolen.) + +What does the (-2) in Chain Mail (-2) [14,+2] mean? (It's a penalty to +hit, caused by the heavy armor.) + +Q3. How do I use wizard mode, and what can I do in it? (In 5.x, just type +control-W.) + +Non-spoiler questions: + +Q4. How does resistance work? Are two items of resistance cumulative? +(Not if both are worn items.) + +Q5. How does speed work? Do you get faster if you are already Very Fast +and get another speed item? (Yes.) + +Q6. I'm playing Moria version V; how does that compare to the current +version? Is it compatible? + +Q7. I think I've found a bug; what should I do? (Check that it isn't +already known, then report it with the version number and system.) + +Common spoiler requests: + +Q8. What are the special abilities of ego weapons? Crowns? Amulet of +the Magi? Cloak of Protection? + +Q9. How much damage do spells and wands do? + +Q10. What does spell Y do? + +Q11. On what level do you find X? (Level 25 is best for gain stat potions.) + +Q12. How many attacks can I get with this weapon? + +Q13. How do you kill an ancient multi-hued dragon? (Usually, you don't.) + +Q14. How do you kill an emperor lich? (With speed and spells.) + +Q15. What is the grape jelly trick? Does it work in Umoria 5.x? (No.) + +Questions related to the source code: + +Q16. I don't like haggling; can I change the source code to turn it off? + +Q17. How do you create objects in wizard mode? + +Q1. How do I get the Moria sources/executables/documentation? + + +A working version of Moria 5.5.2 is now available for the PC; it's also +available at the main Moria archive, but this URL is more likely to +work. + +http://www3.ns.sympatico.ca/dmswaine/m552-386.zip + +Linux sources (designed for Debian, but they also work on Red Hat at +least) are at + +http://packages.debian.org/moria + +Umoria 5.5.2 has been ported to the PalmOS at + +http://roguelike-palm.sourceforge.net/kMoria/index.php + +The main Moria archive has moved to a new home; it makes files available +by anoymous FTP: + +ftp://ftp.greyhelm.com/pub/Games/Moria + +Three near-complete mirrors are available. + +ftp://ftp.funet.fi/pub/unix/games/moria/ +ftp://ftp.planetmirror.com/pub/roguelike/moria/ (in Australia) +(The third is a slow connection; please do not use it if you can get to +another site.) +http://www.piratehaven.org/~beej/moria/mirror/Games/Moria/ + +Use the pathnames listed below, ignoring the leading /pub/Games/Moria. +Some files on the mirrors may be compressed with different compression +programs such as gzip. + +The documentation, including the official manual and this FAQ, is +available at +http://www2.ecst.csuchico.edu/~beej/moria/ + +The sources for Umoria 5.5.0 were also posted to comp.sources.games, so +they should be available (in compressed shar form) on any site which +archives comp.sources.games, such as ftp.uu.net. + +The following paths give the structure of the Moria archive; they will +probably be maintained when the archive moves somewhere else. + +/pub/Games/Moria/[machine name] +Executables for the Amiga, Atari ST, IBM PC, and Mac; look at the README +files in these directories for more information. Some of these files +may need to be transferred in binary mode; type "binary" before +transferring the files. KSU has both color and monochrome executables +for the IBM PC. European users can also get Mac binaries from jyu.fi, +in a file /maclib/game/moria.sit.bin. + +/pub/Games/Moria/pc/80386-5.5.2/m552-386.zip +This is the 5.5.2 executable for the PC. + +/pub/Games/Moria/source/um5.5.2.tar.Z +A compressed tar file containing the entire source, for use on any +system; if you have tar on your system, this is probably the file that +you want. (If you don't have compress, you can FTP it as well; it is +/pub/Games/Moria/compress.tar.) This file must be transferred in binary +mode; type "binary" before getting the file. Once you have the tar.Z +file, type "zcat um5.5.2.tar.Z | tar xf -" to extract the files, and +read the README files for help in installing. + +/pub/Games/Moria/pc/zip-arc/mor55src.zip +A ZIP file containing the source. + +/pub/Games/Moria/pc/zip-arc/wmoria10.zip_exec +/pub/Games/Moria/pc/zip-arc/wmoria10.zip_source +Source and Modula-2 executables for Wmoria 1.0, a port of Umoria 5.5.0 to +Windows 3.1. + +/pub/Games/Moria/patches +Patches for upgrading Moria from one version the the next version, and +for modifications. + +/pub/Games/Moria/XMoria/xm1.07.tar.Z +The source to Moria for X Windows. + +/pub/Games/Moria/doc +The documentation for Moria 5.5, including the official documentation, +the FAQ file, and a complete monster list. + +/pub/Games/Moria/pc/mono5.5 +The auxilliary files are in this directory; you may need them if you +have an executable without them. + +/pub/Games/Angband +The source to Angband for UNIX, and source and executable for the PC and +Mac. + +/pub/Games/Moria/boss +The source distribution, in Pascal, for BOSS. + +/pub/Games/Moria/vms +The source discribution, in Pascal, for VMS Moria 4.8 and 5.0. Umoria +5.x will also work on VMS machines. (Note that VMS Moria 5.0 is not a +version of Umoria 5.x.) + +/pub/Games/Moria/unofficial +Other unofficial modifications of Moria, including JAMoria, the druid +version for the PC, and the sources for Morgul and Pmoria. + +/pub/Games/Moria/utils/calchits.shar.Z +A program for calculating the average damage done with various weapons, +allowing you to compare them. + +VMS sources for Imoria are available on ubvms.cc.buffalo.edu, in a +directory /maslib/games/imoria. VMS Moria 4.8 and 5.0 sources are also +there. + +Linux code for Imoria is available from +http://members.xoom.com/kertes/index.htm + + +Q2. I can't get Moria/Angband set up on my machine; is there a server on +another machine that I can use? (Yes; telnet://chungkuo.org) + +There is a BBS at telnet://chungkuo.org which has Moria and many +other Roguelike games. Telnet to this site, or see the Web page +http://chungkuo.50megs.com/gnet.html for more information. + +Note that the standard telnet client in Windows is buggy, and will cause +problems with this BBS. The maintainer of the BBS recommends Mtelnet +and makes it available on the Web page. + + +Q3. How do I use wizard mode, and what can I do in it? + +In Umoria 5.x, anyone can use wizard mode by typing ^W. However, +characters who play in wizard mode are permanently barred from the +scoreboard; wizard mode should be used only for debugging and +experimenting. + +In 4.87 on Unix systems, only the person who installed the game can use +wizard mode; if you are the installer, the passwords are in the source +file constants.h. + +In PC-Moria 4.8x, you need to know the passwords to use wizard mode, and +the password will depend on who compiled your game. + +4.87 has both wizard and god modes; 5.x's wizard mode is equivalent to +the old god mode. The 4.87 wizard mode allows you to do only things +related to the game (cure all problems, teleport, identify). The 5.x +wizard mode and 4.87 god mode allow you to test the program by editing +your character, creating objects, deleting monsters, and similar things. + +In wizard mode, ^H or DELETE will give you a list of the available +commands. + +Q4. How does resistance work? Are two items of resistance cumulative? + +Resist heat/cold potions and spells give temporary resistance to heat or +cold. All other resistance items give permanent resistance. Two +permanent resistances are not cumulative, and two temporary resistances +are cumulative only in duration. + +Fire and cold do 1/3 damage if you have single resistance, 1/9 if you +have double. +Acid does 1/2 damage if you have any armor to corrode, 1/3 if you have +resistance but no armor, and 1/4 if you have resistance and armor. +Lightning does 1/3 damage if you have resistance. +There is no resistance against poison gas. + +Q5. How does speed work? Do you get faster if you are already Very Fast +and get another speed item? + +Very Fast is the highest speed that can be displayed, but if you are +fortunate enough to find several speed items, you can get still faster. +Permanent speed items (rings and boots) are cumulative, and temporary +speed (potions, spells, and staffs) can add one more point to your +speed. Multiple uses of temporary speed are cumulative only in +duration. + +Q6. I'm playing Moria version V; how does that compare to the current +version? Is it compatible? + +Moria versions: + +Umoria 5.5.2: This is the current version of Umoria. It will accept +characters from all Umoria 5.x versions. + +Umoria 5.3.0-5.5.1: These are essentially identical to 5.5.2, and +compatible with it, although 5.5.2 fixes a few bugs, and there have been +a few minor changes. Upgrading from 5.5.1 to 5.5.2 is probably not +necessary; upgrading from earlier versions is recommended. + +Umoria 5.2.2: This is in good condition, and compatible with the current +version. One bug: don't rest more than 10,000 turns in place, and leave +the level if you start seeing lots of "Compacting monsters..." +messages, or the game may lock up. + +Umoria 5.2.1: This is playable, but has no high scores file; you +probably want to upgrade if possible. + +Umoria 5.1.0-5.2.0: These versions can be played, but are somewhat +buggy. If you run into an invisible, invincible monster which doesn't +move or attack, get off the level. If you can FTP the sources or +executables, you should upgrade. + +The U is often omitted from the names of the following Umoria versions. + +Umoria 4.87/PC-Moria 4.87x: This version is based on the old VMS Moria. +It is relatively bug-free, but it doesn't have the features of the 5.x +versions, such as monster memory. The save file format is incompatible +with 5.x, and several people have failed in attempts to write a +conversion program. + +Umoria 4.85: A moderately buggy version, also based on VMS Moria. + +Umoria/PC-Moria 4.83: An extremely buggy version, based on VMS Moria. +This version is essentially unplayable (see invisible doesn't work, +stores all close after 32768 turns, etc.) + +The following versions are not compatible with Umoria, and Umoria +spoiler files may not apply to them. I don't know much about these +versions. + +UB Moria 5.0: Also known as VMS Moria 5.0, this is the current version +of VMS Moria. It has more monsters, a Black Market, and other features. + +Imoria 4.9: This is apparently a very good game, with new character +classes and other features. It is now available for VMS and Linux only; +it has not yet been ported to DOS or other Unix platforms. + +Amiga Moria 3.0: Although this version was originally based on 4.85, it +has many added monsters, features, and bugs (including items which make +you virtually invincible). + +BOSS: This game changes the setting of Moria, but keeps many of the +items. It is based on VMS Moria 5.0. + +Pmoria: A version of Moria based on 5.5.0, with many enhancements. + +Morgul: An expanded version of Moria, keeping a similar setting. It is +based on Umoria 5.5.0. + +Angband: Another expanded version of Moria with a similar setting. It +is based on Umoria 5.2.1; current versions include some of the bug fixes +from later versions. Although the basic game structure is similar to +Moria's, there have been many enhancements. For more information, read +the USENET group rec.games.roguelike.angband. + +Q7. I think I've found a bug; what should I do? + +When you are reporting a suspected bug, make sure to give the version +number and the system. The bug report can be posted here or sent to me. +If someone else maintains the game on your machine, the bug report +should also be sent to him or her; the bug may be in a change on your +machine but not in my code. + +If you have a patch for the bug, it would be best to send the patch by +Email, so that I can check the patch before releasing it. + +If you report a bug which has been fixed in the current version, I may +be able to send you a patch, or at least tell you that you can fix the +bug by upgrading. If the bug hasn't been fixed, a good bug report may +make it easy to fix. + +The following bugs have been reported with some frequency. Fixes are +included where known; for 5.x versions, and 4.8x if you don't have a +character you need to preserve, the best fix is to upgrade. All +versions are Umoria unless indicated otherwise. + +All versions: Occasional rooms are created with no exit. The only +attempt to fix this bug introduced others and had to be undone. + +4.87-5.2.2: The game locks up if you wait in place for about 10,000 +turns. This can be fixed in the source; in the function +compact_monsters() in misc1.c, change "if (cur_dis > m_ptr.cdis)" to +"if (cur_dis < m_ptr.cdis)". If you can't fix the bug, leave the level +if you see lots of "Compacting monsters..." messages. + +4.87-5.2.1: Your carrying capacity decreases. This cannot be fixed for +an individual character without hacking the savefile, or modifying the +program to fix the savefile. To avoid it, don't use spikes, and don't +fight while wielding arrows in 4.87. + +5.1.0-5.2.0: Invisible monsters which don't move or attack are sometimes +created. Get off the level if you see one. + +4.87: Monsters sometimes chase you in the wrong direction. + +4.87: Wands/spells of polymorph and drain life work only when you are +adjacent to the monster. + +4.85: Several annoying bugs still exist, but this version is at least +playable. + +4.83: Many bugs. Upgrade. + +Druid: Potions of Healing can heal you above your maximum hit points. + +OS/2 Moria: Erick the Honest takes over all the stores eventually, and +refuses to stock expensive items. This cannot be fixed by transferring +a character from OS/2 to other versions. + +Amiga Moria 3.0: Some items make you extremely fast (and hungry). + +Amiga Moria 3.0: The system crashes when you leave the game, because it +tries to close the screen without deactivating it. Jump to the +workbench screen _instantly_ as the save (or exit) commences via [left +amiga + N] and activate the workbench screen via a mouseclick or [alt + +left amiga] (the keyboard shortcut for a mouse-click). + +Q8. What are the special abilities of ego weapons? Crowns? Amulet of +the Magi? Cloak of Protection? + +All version-dependent changes are marked in brackets. + +Amulet of the Magi free action, see invisible, searching, +3 AC. + [no searching bonus in 4.87] +Cloak of Protection no special ability, just a larger bonus than usual. + +Ego weapons: + +(HA) Holy Avenger +(1-4) str, +(1-4) AC, (SE), (SU), sustain stat, + see invisible. +(DF) Defender stealth, regeneration, free action, see invisible, + feather fall, RF, RC, RL, RA, +(6-10) to AC +(SM) Slay Monster Damage (x 2) vs. monsters, see invisible. [found in + 4.87 only] +(SA) Slay Animal Damage (x 2) vs. animals, [does not exist in 4.87; + has see invisible through 5.1.4] +(SD) Slay Dragon Damage (x 4) vs. dragons. +(SE) Slay Evil Damage (x 2) vs. evil monsters. +(SU) Slay Undead Damage (x 3) vs. undead, [see invisible in 5.1.5 and later] +(FT) Flame Tongue Damage (x 1.5) vs. monsters harmed by fire. +(FB) Frost Brand Damage (x 1.5) vs. monsters harmed by cold. + +A HA which is +1 to strength sustains strength; +2, intelligence; +3, +wisdom; +4, constitution (not dexterity). + +Crown of the Magi +(1-3) int, (RF), (RC), (RA), (RL) + [In 4.87, it had see invisible instead of RL] +Crown of Lordliness +(1-3) wis, chr. +Crown of Might +(1-3) str, dex, con, free action. +Crown of Seeing see invisible, +(10-25) searching. + [+(2-5) to seach in 4.87] +Crown of Regeneration Regeneration. +Crown of Beauty +(1-3) charisma. + +Regeneration lets you recover mana and hit points at 1.5 times the +normal rate, but also makes you use up food much more quickly. + +Free action prevents you from being slowed or paralyzed by monsters. + +Q9. How much damage do spells and wands do? + +Spell Name 4.87 damage 5.1.0 and later damage +Magic Missile 2d6 2d6 +Stinking Cloud 8 12 +Lightning Bolt 3d8 4d8 +Lightning Ball 24 32 +Frost Bolt 4d8 6d8 +Frost/Cold Ball 32 48 +Acid Ball 40 60 +Fire Bolt 6d8 9d8 +Fire Ball 48 72 +Wand of Drain Life 50 75 [in 5.1.4 and later] + +In 5.x only, a wand of wall building will do 4d8 damage to any creature +buried in the wall (except one that moves through walls), and will kill +any immobile creature. On the creature's next turn, it will attempt to +move out of the wall, and if it is unable to do so, it will take 10d8 +damage and dig its way out. + +Everything below is the same in all versions. +Wand of Light/Staff of 2d8 (if sensitive) +Starlight +Stone to Mud 100 (if sensitive) +Orb of Draining 3d6 + caster's level, double to evil creatures +Dispel Undead/Evil 1-60 from scroll or staff; 1 up to triple + caster's level from spell +Holy Word Dispel evil for 1 up to quadruple caster's level + +Notes: + +All mage spells in 4.87 do the damage listed in the table above if cast +from a wand, and 1 point more if cast by a mage. +All ball spells do full damage for a direct hit, half damage one space +away, and 1/3 damage two spaces away. + +Q10. What does spell Y do? + +Non-obvious spell effects: + +Mage spells: + +Phase Door: short-range teleport. +Find Hidden Traps/Doors: also detects stairs. +Sleep I: sleep one monster in a given direction. +Recharge Item I: fewer charges than Recharge Item II, and more likely to + fail. +Sleep II: sleep all monsters adjacent to player. +Sleep III: sleep all monsters with a line of sight to player (including + invisible ones). +Word of Destruction: obliterates everything within 15 spaces of the + player; Balrog will teleport to another level. + +Priest spells: + +Bless: +2 to AC, and +5 to chance to hit (equivalent to +1-2/3 bonus on + weapon) for a short time. +Blind Creature: blinded creatures wander around confused until they recover. +Portal: medium-range teleport. +Chant: double duration Bless. +Sanctuary: sleep creatures adjacent to player. +Protection from Evil: prevents any evil creature of the player's level + or lower from attacking the player. +Earthquake: causes random walls and ceilings in the area to collapse, + possibly injuring anything nearby. +Turn Undead: all undead of the player's level or lower, and some of + higher level, will attempt to flee [in 5.5.0 and earlier + versions, they will be confused] +Prayer: quadruple duration Bless. +Dispel Undead/Evil: affects all undead/evil within line of sight (even + invisble ones in 5.x versions), damage is from 1 + up to 3x player's level, 1-60 from scroll or staff. +Glyph of Warding: creates a glyph which monsters cannot enter, but have + a small chance of breaking. +Holy Word: heals player completely, cures poison and fear, and dispels + evil for 1 to 4x player's level. [In 5.5.1 and later + versions, also restores all stats, and makes player + invulnerable for 3 turns.] + +Q11. On what level do you find X? + +Where important objects are found: + +In 4.87, 1/20 of items are chosen as if you were on level 50. In 5.1 +and all later versions, 1/12 of items are chosen as if you were on a +deeper level, which has (current level/50) chance of being level 50; +this check is not made in town. This affects only the type of item, not +its enchantment. + +Items become somewhat less common as you go deeper than the indicated +levels; however, if you can survive down there, this is compensated for +by the fact that there are more treasures on deeper levels. + +Item type Level +Ego weapons, special armor, Progressively more common as you get +boots, gloves, helmets deeper, all the way to level 55 +Healing potion 12 +Gain stat potions 25 +Restore mana potion 25 +Invulnerability potion 40 +Gain experience potion 50 +Genocide scroll 35 +Destruction scroll 40 +Rune of Protection scroll 50 +Mass Genocide scroll 50 +Amulets of wisdom, charisma 20 +Gain str/int/dex/con rings 30 +Amulet of the magi 50 +Ring of speed 50 +Staff of speed 40 +Staff of mass polymorph 46 +Staff of dispel evil 49 +Staff of destruction 50 +Wand of clone monster 15 [2 in 4.87] +Wand of drain life 50 + +Q12. How many attacks can I get with this weapon? + +Here is the table (for 5.x) for the number of blows for a given strength +and dexterity. If your strength or dexterity is 18+xx, that is stored +as 18/xx; thus, for example, you need an 18/90 strength to use the +bottom row of the table with a katana (12 pounds). + +If you don't know the weight of a weapon, set the option "Show weights +in inventory." + +/* used to calculate the number of blows the player gets in combat */ +int8u blows_table[7][6] = { +/* STR/W: 9 18 67 107 117 118 : DEX */ +/* <2 */ { 1, 1, 1, 1, 1, 1 }, +/* <3 */ { 1, 1, 1, 1, 2, 2 }, +/* <4 */ { 1, 1, 1, 2, 2, 3 }, +/* <5 */ { 1, 1, 2, 2, 3, 3 }, +/* <7 */ { 1, 2, 2, 3, 3, 4 }, +/* <9 */ { 1, 2, 2, 3, 4, 4 }, +/* >9 */ { 2, 2, 3, 3, 4, 4 } +}; + + +Q13. How do you kill an ancient multi-hued dragon? + +Usually, you don't want to try; one gas breath from a full-strength AMHD +does 693 damage, with no resistance. + +If you can get to speed 3 (one permanent speed item, and either another +permanent speed item or a haste self spell or staff), you can try this +technique. First, create (or find in a maze room) a wall with one open +space on all four sides. + + . + .#. + . + +Stand on one side, with the dragon on the other side. When the dragon +moves adjacent to you, attack it once, and then hide behind the pillar. +The dragon can't see you, so it won't breathe, and will instead chase +you to another side. Now attack once, and hide again, and so on until +the dragon is finished. + +Q14. How do you kill an emperor lich? + +You can kill an emperor lich if you can get to speed 2, which is its +speed. A mage or ranger can do this with the spell of haste self; +anyone else needs a staff of speed, potion of haste self, or permanent +speed item. You will also need about 10 cure critical wounds or cure +serious wounds potions, and some item giving you free action. + +You also need some ranged spell attack. Liches take double damage from +lightning in 5.x versions, so the spell of lightning bolt or wand of +lightning balls is a good choice. Rogues and warriors will need several +wands, with a total of about 30 charges to guarantee that they can kill +the lich with them. A priest or paladin has Orb of Draining, which is +even better. + +Now, try to line up with the lich while you are not adjacent to it, +either in a room or a corridor. This gives you a chance to cast your +spell. The lich will get one action. If it cast a spell and you +resisted, or the spell didn't do anything harmful, you have another +chance. If you were confused or blinded, drink a cure wounds potion; +the lich isn't adjacent to you, so it can't hurt you. If the lich moved +and is now adjacent to you, move back. Try to avoid getting cornered, +and phase door or portal away if you are. A priest can make this easier +by putting down a glyph of warding, but this must be done *before* the +lich chases you across the glyph. (Don't stand on the glyph; it isn't +foolproof.) + +If you run low on mana and don't have a wand, teleport out and come back +later to finish the job. + +A priest with glyph of warding can also set up the following +configuration (the exact length doesn't matter as long as you are within +spell range): + +#L##### +#^^...@ +####### + +The lich cannot cast spells from this position, because it cannot see +you. As long as it doesn't break the glyphs, you are safe, and can fire +Orb of Draining down the corridor; the lich will take some damage each +time. If the lich breaks either glyph, run or teleport out, and +continue the battle elsewhere. + +I do not advise trying this technique against an AMHD; it will probably +break a glyph before the battle is over, and if your teleport spell +fails, or if you haven't hasted yourself, the AMHD gets a chance to +breathe. + +An emperor lich has 1520 hit points, plus anything additional that it +gains by draining mana (6 points per mana point drained) and charges (40 +points per charge). Never let it attack you in melee, because it can +destroy your wands, healing itself in the process, as well as draining +your experience and dexterity. + +If you can get to speed 3, faster than the lich, it is easy to kill; +just fight, move back, fight, move back, and so on. You will still need +a lot of cure wounds potions, unless you let it chase you around a +pillar, as in the AMHD technique. + +Q15. What is the grape jelly trick? Does it work in Umoria 5.x? + +The Grape Jelly trick is a spoiler/workaround/trick which is no longer +necessary in 5.1 and later versions. + +In 4.87, when your intelligence and constitution changed, your mana and +hit points did not change. Thus, in order to get the benefit of the +increased values, you have to let a grape jelly (or other creature, but +grape jellies are otherwise harmless) drain you to a low level, and then +drink restore life levels potions to go back up with the increased +stats. + +Q16. I don't like haggling; can I change the source code to turn it off? + +If you have the source code for any 5.x version, you can turn off +haggling with a simple change. Here is the change you would need to make. +(Note: This is *not* an official patch.) + +In the source file store1.c, this is the routine for determining whether +you need to haggle. You can change the function, or simply change the +return(flagnoneed) to return(TRUE) to eliminate all haggling. The code +here is from versions 5.5.1 and 5.5.2; the text of the function is +slightly different in earlier versions. + +int noneedtobargain(store_num, minprice) +int store_num; +int32 minprice; +{ + register int flagnoneed; + int bargain_record; + register store_type *s_ptr; + + s_ptr = &store[store_num]; + if (s_ptr->good_buy == MAX_SHORT) + return TRUE; + bargain_record = (s_ptr->good_buy - 3 * s_ptr->bad_buy - 5); + flagnoneed = ((bargain_record > 0) + && ((long)bargain_record * (long)bargain_record + > minprice/50)); + return (flagnoneed); +} + +Q17. How do you create objects in wizard mode? + +You will need the source; if you have only executables, get the source +files constant.h and treasure.c from the archive, which contain the +necessary definitions. This is an explanation of some of the +parameters. + +Tval: This is defined in constant.h; it is the value for the item type. +For example, TV_WAND is 65. + +Tchar: The character used to represent this object; it should usually be +proper for the item type. + +Subval: This identifies the specific item. If you are duplicating an +item from the item list, use the same subval (and tval) as that item; +otherwise, don't. Use subvals 0-63 for items that shouldn't stack, +64-127 for items that should always stack (potions and scrolls), 193 or +more for items that are generated in a group, and should stack as that +group (arrows). + +Weight: In tenths of a pound. + +P1: Used for all special bonuses which don't appear elsewhere: +bonus to stats/searching/stealth/speed, which stat to sustain (warning: +constitution is 4 and dexterity 5), tunneling value, food value, light +value of a lamp, torch, or flask of oil. +For missiles, different values of P1 distinguish different groups of +missiles; use small negative numbers if you create groups as a wizard. +For bows, slings, and crossbows, the values identify the weapon type; +use the same value that is used for the corresponding weapon in +treasure.c. + +Flags: A hexadecimal number which contains: +for wearable items, all special effects (bits beginning with TR_ in +constant.h). +for chests, trap flags (CH_ bits in constant.h) and treasure flags (CM_ +bits in constant.h). The CM_WIN flag is cleared when you open a chest, +so you can't create a chest with that bit set in order to get an instant +win. +for potions/scrolls/staffs/wands, the effects of using the item (see the +items in treasure.c). Many potions have multiple effects (cure light +wounds also cures blindness). +for books, which spells are in the book (spell 1 is the units bit). + +Level: Level on which the item would be found. This affects the +difficulty of using wands and staffs. + +The object will have no name, except for the inscription {wizard item}, +and possibly a type name, such as "Potion of"; you can change the +inscription. + + +-- +David Grabiner, grabiner@alumni.princeton.edu +http://math.la.asu.edu/~grabiner +Shop at the Mobius Strip Mall: Always on the same side of the street! +Torus Coffee and Donuts, Klein Glassworks, Projective Airlines, etc.