::::::: 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