1::::::: 1990 ::::::::
2------------ 1/1
3creatures.c: in mon_cast_spell(), must update_mon() to light monsters before
4	they cast a spell
5------------- 1/2
6moria1.c: inven_command(), could not wear item which replaced equip item if
7	inven full, only fail if inven_check_num fails for torches
8misc2.c: change spacing for stats on change_character page, was printing in
9	last column for max stat
10moria2.c: tunnel(), if no shovel/pick, divide total tabil chance by two
11monsters.c: change eye-sight and sleep values for consistency, as noted by
12	djgrabin
13help.c: change the monster recall so that it lists high level monsters first
14creature.c: when monster bashes down a door, call disturb() to halt resting
15io.c: fix msg_print() so that -more- is always printed on screen, fix
16	put_buffer() so that does not fail if col argument greater than 79/80
17misc1.c: change chance for ego weapons/missiles to 3*special/2 instead of
18	just special, needed because treasure distribution change has made
19	ego weapons not as common as before
20--------- 1/11
21monsters.c: let nether wraith phase, set Black/Red/Multi ancient dragons
22	to a sleep value of 700
23creature.c: increase r_attacks if either notice true or r_attacks is
24	nonzero (i.e. it has been noticed before)
25moria2.c: move_char(), when step back after setting off a falling rock trap,
26	check to see if have stepped back onto another trap
27moria1.c: inven_command(), when restart it after taking off an item, don't
28	print the 'have to drop something' message because that is confusing
29misc2.c: modify_stat(), could overflow 118 when increasing stats, add extra
30	case to enforce max of 118
31--------- 1/12
32all: apply william setzer's objdes() diffs, 500K patch file, change version
33	number to 5.0.10 and distribute
34desc.c, misc2.c, store1.c: remove several obsolete uses of index(),
35	insert_num() no longer used anywhere
36constant.h, desc.c: change ID_TRIED,ID_KNOWN1 to OD_TRIED,OD_KNOWN1
37desc.c: eliminate titles[], rename title_space[] to titles[]
38all: fixed lint errors
39all: make sure that all objdes() strings are bigvtype
40desc.c: fix printing of bows/arrows/picks, needed new p1_use define, and
41	rearrange code in objdes() switch statement
42treasur1.c, treasur2.c: remove -100 tohit from books, was being printed, and
43	is silly anyways
44constant.h, externs.h, save.c, treasur2.c: change object_ident[] from
45	MAX_OBJECTS to OBJECT_IDENT_SIZE = 7*64, see object_offset() in desc.c
46	to see why this is necessary
47---------- 1/13
48externs.h, misc2.c, store1.c: deleted obsolete references to treasure_type
49desc.c: always print toac field if known2 and non-negative
50config.h, io.c, misc1.c: eliminated BUGGY_CURSES define, caused too much
51	trouble, just assume that can never print in last column of screen
52constant.h, desc.c, misc1.c, moria2.c, spells.c, treasur1.c, types.h:
53	created special_names table to hold all possible name2 strings,
54	name2 changed to an int8u which holds index to special_names table
55externs.h, main.c, treasure1.c: sort_objects() function deleted, sorting now
56	done by init_t_level using O(n) bin sort, into sorted_objects[] array
57files.c, misc2.c: object_list[] references that assumed it was sorted now
58	indirect through sorted_objects[] array
59main.c, variable.c: player_init indexes now point into object_list instead
60	of inventory_init
61------- 1/14
62constant.h, externs.h, main.c, store1.c, treasur1.c, treasur2.c, variable.c:
63	deleted inventory_init array, stores objects now in object_list,
64	MAX_OBJECT adjusted, MAX_DUNGEON_OBJ defined, store_choice[] fixed
65all: put all objects in object_list, trap_list, door_list, store_door,
66	gold_list, up_stair, down_stair, rubble, much, blank_treasure,
67	scare_monster are not separate variables anymore
68all: invcopy now takes an object_list index as second parameter, name field
69	deleted from inven_type and fields rearranged
70----------- 1/15
71store1.c: search_list() deleted, use i_ptr->index instead to get raw item cost
72save.c: obsolete treasure_type references deleted, save files work again
73creature.c, magic.c, misc2.c, prayer.c, save.c, wands.c: fixed long/short
74	problems with shift, mostly change (1 << i) to (1L << i)
75all: add new register declaration, check indentation, fix 32/16bit int
76	problems
77constant.h: change version number to 5.0.11
78------------- 1/17
79spells.c: aggravate was not initiallized in aggravate_monster()
80monsters.c: novice rogue now evil like other rogues
81misc2.c: 2 "... learn ... new spells ..." messages changed to print prayers
82	instead for priests
83moria2.c: drop_throw(), "The %s hits %s" changed to "The %s hits the %s."
84many: fixed problems with setting of free_turn_flag
85----------- 1/19
86misc2.c: fix inven_carry(), to stack store/dungeon items properly
87desc.c: objdes(), set p1_use = IGNORED for food and potions, changed
88	is_a_vowel(tmp_val[1]) to [2]
89moria2.c: "exceed weight limit?" message now prints item name also
90desc.c, spells.c, staffs.c, wands.c: empty wands are not incribed empty if
91	known2, empty removed when wands are recharged
92desc.c: put spaces between inscribed words
93dungeon.c: always inscribe majik when character notices this, not just for
94	inventory items as that helps priests more than fighters
95store1.c: sell_price(), succeed only if both item->cost and item_value() are
96	positive
97creature.c: don't increase a number of attacks when monster repelled in
98	make_attack(), i.e. no damage done so shouldn't learn about damage
99moria1.c: regenhp and regenmana, could get chp/cmana equal to max and _frac
100	non-zero, change c > max test to c >= max test
101constant.h, dungeon.c, misc2.c: hp and mana were printed while in store/inv,
102	fix calc_hitpoints() and calc_mana() to set flags instead of printing,
103	in dungeon.c, checks flags and print values
104---------- 1/20
105store2.c: redisplay store prices if charisma changes during the inven_command
106	calls (actually just redraw everything)
107moria2.c: monster_death(), dump must be set to 0 is number is 0
108constant.h, moria2.c, recall.c, spells.c: recall printing of treasure changed,
109	instead of setting CM_ bits, store largest number of treasure ever
110	generated in those 5 CM_TREASURE bits, changed monster_death() to set
111	the bits the new way, changed uses of monster_death() to replace old
112	treasure bits with new ones, the vague print out treasure amounts
113	replace with printout of precise number of treasures generated
114externs.h, moria2.c: monster_death() changed to int32 monster_death()
115moria1.c: new_spot() contained line of code "i = randint(10)" that did not
116	belong there, was formerly testing code
117desc.c: objdes(), force zero charges to always print, also, always print
118	digging plusses even if zero
119main.c: items that initialize players inventory are marked store_bought(),
120	this is needed so that dagger/armor bonuses will be shown for them
121desc.c: objdes(), fixed printing of doors, known1() clear the tried flag,
122	magic_init() don't let scroll names end with a blank
123misc2.c: gain_spells(), call calc_mana() if py.misc.mana == 0, this is
124	for characters who did not know any spells before the 'G' command,
125	can't gain spells if blind/no light/confused
126moria1.c: infinite loop entered with 'id' and screen_change, also, 'n' to
127	the continuing with inventory prompt did not work, must clear
128	doing_inven before returning from inven_command() in these cases
129desc.c: identify(), don't merge items in equip list, only merge items that
130	are single stackable
131misc2.c: inven_carry(), inven_check_num(), fix item stacking, items can only
132	stack if they are both identified or both unknown (store items are
133	always identified)
134constant.h: change version number to 5.0.12 and distribute
135------------ 1/21
136desc.c: objdes() bug, change p1_use = IGNORED to p1_use == IGNORED
137moria2.c: move_char(), moving into a wall is no longer a free turn
138misc2.c: gain_spells(), priests no longer need book before can learn spells
139	from it, mages still need the books, calc_spells() delete unused
140	var spells[], remove limit of 23 from number of new spells
141dungeon.c: made scribe_object() a free turn again
142recall.c: only print monster speed if at least one movement flag known
143unix.c: missing */ after Gakk!! -CJS-.
144desc.c: stacking did not work right, fixed known1_p() to return OD_KNOWN1
145	instead of TRUE for store items, so that known1_p() == known1_p()
146	will work consistently
147monsters.c: creeping coins hit instead of bite, and touch instead of breath
148variable.c: fixed problems with temple/alchemist store inventories
149desc.c, store1.c: fixed food prices, only check unknown if subval puts it
150	among the molds/mushrooms
151------------- 1/24
152misc2.c, types.h: change inscrip back to char *, fix inscribe() to malloc
153	space for string, and then copy inscription into the malloced space,
154save.c: fixed (compatibly) to write/read new inscriptions
155desc.c: free malloced inscription space in invcopy
156death.c, misc1.c: delete max tcptr code
157constant.h, desc.c, misc1.c: define new const ID_SHOW_TOHIT, in magic_treasure
158	set this bit for every weapon,digging tool,missile,bow, in objdes()
159	print out tohit/todam if this bit set and object identified, this
160	makes it easy to tell ident weapons from unident weapons
161main.c: char_inven_init() must set ID_SHOW_TOHIT flag for initial weapon
162death.c, constant.h, misc1.c: change MAX_TALLOC from 225 to 150,
163	delete temporary code which printed out max tcptr values
164misc2.c: allow inscriptions of up to 24 characters
165constant.h: change version number to 5.0.13 and distribute
166-------------- 1/26
167wizard.c: wizard_create(), initialize the name2 and inscrip fields to 0,
168	init the ident field to known2 and storebought
169constant.h: changed MAX_TITLES from 60 to 45
170desc.c: magic_init(), wrote to a char *tmp; modified to write to a vtype
171	string
172recall.c: change printing of treasure again, only print 'sometimes' is 60% is
173	only bit set, otherwise always print 'often' if only one object, for
174	two objects, print 'often' only if 60% and 90% are only bits set
175scrolls.c: recharge scrolls not used up when read, fixed setting of used_up
176spells.c: res = TRUE; moved out of if-stmt so only needed once
177treasure.c: change wiz obj name from "& wizard object" to "{wizard object}"
178---------- 1/29
179moria2.c: tunnel(), give player attack on creature if it is in the way
180misc2.c: gain_spell(), remove limit of 22 on learning spells, fix print_spells
181	so that it will only show the first 22 spells
182constant.h, desc.c, misc1.c: change ID_SHOW_TOHIT to ID_SHOW_HITDAM, set this
183	bit for gauntlet/rings of slaying, and irritation/enveloping cloaks,
184	fix objdes() so that it only prints both tohit/todam if this bit is set
185	otherwise, only prints one number, if either of tohit/todam nonzero
186desc.c, treasure.c: remove "the entrance to the " from store doors and put
187	in objdes() in desc.c
188misc2.c: put_misc2(), add "Exp to Adv." to character display
189constant.h, desc.c, misc1.c: added defines for ID_NOSHOW_P1 and ID_SHOW_P1
190	to improve printing of object names, objdes() always prints p1 if
191	ID_SHOW_P1 set, and never prints it if NOSHOW set, these override
192	the default p1_use setting, NOSHOW added to sustain stat rings,
193	SHOW added to clumsy/weak gloves, boots of speed/stealth/slowness,
194	helms of int/wis/infra/might/lordliness/magi/beauty/seeing/
195	stupid/dull/weak/ugly, cloaks of stealth
196creature.c: increase effect of aggravate_monster attack from range of 5 to 20
197spells.c: dispel_creature(), prt_exp() was only called when visible creatures
198	died, now always called when creature dies
199misc1.c: added messages to compact_objects() and compact_monsters() so that
200	can tell if they are ever called
201store1.c: rings/amulets which are not known2 now have base value from object
202	list instead of real value
203moria2.c, staffs.c, wands.c: cast level to int, so that calculations will be
204	done with signed arithmetic, in openobject() change chance of opening
205	a chest, instead of -2*level use -level, this help eliminate chests
206	which are impossible to open
207--------- 1/30
208recall.c: print ' at normal speed' for monsters with mspeed = 1
209--------- 2/10
210spells.c: turn_undead, speed_monsters, sleep_monsters2, and dispel_creature
211	modified so that they only affect creatures in los of player
212externs.h, misc2.c, variable.c: new array spell_order[], holds order in which
213	spells are learned, in calc_spell() spells are now remembered in
214	the order that they were learned, and forgotten in the reverse order
215	learned, in gain_spell() must modify spell_order when spell learned
216main.c: spell_order initialized in inven_char_init to all 99s
217save.c: save/restore spell_order, for patch_level <= 13 savefiles create
218	a reasonable spell_order on the fly
219misc2.c: was erasing wrong line in gain_spells, change `j+2' to `j+1'
220all: change file names to be 8.3 characters long
221constant.h: change version number to 5.0.14 and release
222---------- 2/10
223dungeon.c: change rogue-like wiz help key from ^? to \
224all: merged in Mac sources, all initialized variables are now in variable.c,
225	rearranged directory structure
226---------- 2/11
227all: merged in VMS sources
228changed to 5.0.15 and distribute
229--------- 2/13
230moria2.c: carry(), printed 'worth of emeralds..' removed '.' from string
231desc.c: crowns did not print out AC because it is zero, add special case
232	to objdes() so that tval == 33 (crowns) always have AC printed out,
233	change (+5 charges) to (5 charges)
234----------- 2/14
235moria2.c: inven_throw() created second copy of pointer to malloced
236	inscription, it now creates new inscription for new object
237moria1.c: inven_command(), wear option copied malloced inscription,
238	create new inscription for new object
239misc2.c: inven_destroy(), free inscription of just deleted object,
240	clear inscrip pointer of last objects previous location, so that
241	it will not be freed, inven_drop(), create new inscription for
242	new item, inven_carry() create new inscription for new item,
243	scribe_object() free space for old insription since it is deleted
244config.h, externs.h, misc2.c, moria1.c: rename remove() to takeoff() to
245	avoid naming conflict with library routines
246externs.h, misc2.c, store1.c: deleted join_names(), no longer doing anything
247	useful, and was wrongly creating duplicate pointers to malloc blocks
248moria2.c: make moving into walls a free turn again, but player can not attack
249	invisible creatures in walls by moving into wall (hence preventing
250	him from using 6 free turns to search for invis creature), must
251	tunnel into wall instead, which always takes a turn
252dungeon.c, externs.h, moria2.c: pass direction to tunnel() instead of point
253	digging to, eliminates a lot of duplicate code, tunnel() now checks
254	confusion, and tries to tunnel in random direction if confused
255treasure.c: clone monster wands changed from level 2 to level 15, makes them
256	recharge less, max 6 new charges instead of max 18 new charges
257files/version.hlp: add Dan Bernstein's name to credits
258magic.c, variable.c, wands.c: change stinking cloud from 16 to 12 damage as
259	it was too close to lightning bolt at 18, reduce mana for mage/ranger
260	from 4/6 to 3/5
261moria1.c: show_inven() and show_equip(), don't print first two spaces when
262	col is zero, since will blank the whole screen anyways
263moria2.c: py_attack(), only cleared confuse_monster flag if monster survived
264	attack, now always clear this flag and try to confuse monster
265-------------- 2/16
266all: add in diffs to get MSDOS version working again, add files from binary
267	PC-Moria distribution
268types.h: for PC, use 'unsigned char var : 1' to reduce sizeof cave_type
269	from 5 to 4
270desc.c, misc1.c, misc2.c, moria1.c, moria2.c, save.c, wizard.c, types.h:
271	change inven_type inscrip field from pointer to an 13 char array,
272	mallocing storage for inscriptions does not work, results in
273	dangling pointers when inven_types are copied
274save.c: add 'time' to savefiles, use this to calculate age of savefile
275	instead of using stat, much more portable, and prevents cheating,
276	if time is newer than current time, set age to 0, when save file
277	check to see if current time greater than start time, if not,
278	then save start time plus one day in save file
279mac.c: delete getfileage since no longer used
280recall.c: change knowdamage(), add damage parameter so that higher damage
281	attacks take longer to learn than lower damage attacks
282monsters.c: jellies and molds no longer have treasure
283save.c: two places have (*str != NULL), changed to (*str != '\0')
284save.c: remove support for pre 5.0.13 versions, rd_item() no longer needs
285	patch_level
286monsters.c: move crystal ooze from level 31 to level 40, to make raising
287	crystal oozes for treasure much more dangerous
288--------------- 2/19
289all: added defines for tvals, and substituted every where in program
290---------- 2/21
291ms_misc.c, io.c: remove all uses of mvprintw() for ibmpc port, since PC
292	curses also pulls in the fp library if mvprintw is used
293dungeon.c: in the recover from blindness code, the disturb() call must
294	be before the creatures(FALSE) call
295getch.c, io.c, Makefile: more fixes for the VMS port of umoria, new getch.c
296	file, and new copy of (4.87) io.c file
297---------- 2/22
298all: check again for numbers that should be constants
299constant.h: change version number to 5.0.17
300externs.h, main.c, moria2.c, signals.c, treasure.c: compile with gcc -Wall
301	and fix all reported errors
302--------- 2/26
303prayer.c: change (!class[].spell == PRIEST) to (class[].spell != PRIEST)
304store2.c: for good bargaining, use final_ask not min_buy in sell_haggle()
305dungeon.c: change "Sorry.." to "Sorry."
306misc1.c: for gloves/gauntlets, p1 and ID_SHOW_P1 set in wrong place
307creature.c: make_attack(), creature could be visible at start of attack but
308	invisible at end due to a teleport, set notice/visible appropriately
309	before monster attacks, and don't use m_ptr->ml afterwards
310monsters.c: creeping coins always carry gold now, 1d2 for copper, 1d2+60
311	for silver, and 1d2+90 for gold
312treasure.c, wizard.c: change name of wizard items to empty string, and
313	inscribe them with "wizard item"
314desc.c: problem with rubble/stone-to-mud, change rubble case from like stairs
315	to be like doors
316moria1.c: show_equip(), change non-weight limit from 57 to 60, change weight
317	limit from 49 to 52 chars, for show_inven(), change limits from
318	66/74 to 68/76 characters
319creature.c, magic.c, prayer.c, spells.c, wands.c: fix get_flags(),
320	fire_ball(), fire_bolt() and breath() to use defined constants for
321	attack types
322moria1.c: show_inven(), show_equip(), make sure that col never less than zero
323all: merged in Atari ST diffs from Stephen A. Jacobs
324--------------- 2/27
325creature.c: fixed bug with doors, always open/light door instead of only
326	opening/lighting them when in los of player
327moria2.c: when bash open door, only break it 50% of the time to be consistent
328	with code in creature.c
329all: delete some obsolete files, annotate a few others, put README files
330	in the subdirectories to explain what is present
331save.c: fix old savefile compatibility code to work with new version numbers
332constants.h: change version number to 5.1.0 and publicly announce
333---------- 2/28
334recall.c: creature is worth... sprintf() call used %ld instead of %d
335moria2.c: look_ray(), every place GRADF multiplied by y, cast it to long
336	to prevent overflow of 16 bit ints
337ms_misc.c: were still two refs to 'byteint', changed to 'int8u'
338MLINK.LNK: updated for umoria5.0, add undef and recall, change treasur[12]
339	to treasure
340create.c: delete sleep(1) call in character rerolling code
341death.c: put "#ifndef L_SET" around the #define L_SET
342io.c: ifdef out suspend code, for USG systems with BSDisms that have SIGTSTP
343	defined but don't actually implement it
344io.c: change name of variable 'border' to 'screen_border' to avoid naming
345	conflict on SGI/SYS V machine
346INSTALL: moved from doc subdirectory to root directory, and brought up to date
347---------------- 3/1
348misc2.c: two places where (1L << j) occurred, and j could be 99 (unknown
349	spell from spell_order[]), this is an undefined operation, fixed
350	source to not shift if j == 99
351------------------- 3/3
352misc1.c: set_options(), typing '-' on line 0 gave error, change i=max to
353	i=max-1
354store1.c: item_value(), calculating digging tool values wrong, subtract off
355	objects initial p1 plusses before multiplying p1 by 100
356dungeon.c: for paralysed/resting, move cursor to player before refresh call
357creature.c: disenchanter bat attacks could put tohit/todam/toac below zero,
358	fixed so that they can not go below zero
359moria1.c: if have MAX_SHORT hp/mana, then could get overflow in regenhp/mana
360	routines, added checks for overflow
361dungeon.c, io.c: save on EOF code did not work, in inkey(), remove casts to
362	char in eof test, remove call to feof(), in dungeon(), add !eof_flag
363	to innermost while loop to ensure it exits on error
364save.c: in sv_write(), clear death flag if eof_flag or panic_save set, so
365	player can restart game to see tombstone
366main.c: set death flag if hit points are negative, can happen if a HANGUP
367	savefile or panic savefile is restored
368save.c: if get_char(), don't overwrite died_from string if player is dead
369main.c: if specify -r or -o, force rogue_like to appropriate value after
370	read the savefile, since get_char() will modify rogue_like_commands
371moria1.c: search(), "have found a trap.." fixed, removed extra period
372monsters.c: added CD_NO_SLEEP flag to jellies, oozes, elementals and the
373	gelatinous cube
374dungeon.c: fix "which level" wizard prompt, limited to level 99 max
375----------- 3/4
376all: merged in more Mac diffs, Mac version should compile now
377wizard.c: stealth max 87 should be 18 in printed string
378desc.c: identify(), if cursed incscribe with ID_DAMD, unsample(), do not
379	clear the ID_DAMD flag, since an unsampled item is still cursed
380config: change version number to 5.1.1 and release
381------------ 3/5
382monsters.c: added CD_NO_SLEEP flag to creeping coins
383recall.c: recharge(), change chance of failure from randint((num+40)/10)=1
384	to randint((num+40-i_ptr->p1-i_ptr->level)/10)=1 to make it harder
385	to recharge high level and highlly charged wands
386recall.c: change j from int to int32u, since it is used with flag fields,
387	change two %d uses of it to %ld
388desc.c: objdes(), don't print ID_TRIED value for store bought items
389moria2.c: a slow dart trap now has no effect if have free action
390io.c: must ifdef out the tbuf.c_cc code, since this causes the program to
391	fail for some reason
392--------------- 3/13
393signals.c: add void to USG signal_hander definition
394externs, ms_misc.c: move fopen declaration from externs.h to ms_misc.c, and
395	make static, and make FILE * not struct _iobuf
396ms_ansi.c: include stdio.h
397generate.c: change #if DEBUG to #ifdef DEBUG
398config.h, generate.c, types.h: added ifdefs for IBMPC_TURBO_C
399---------  3/16
400moria1.c: inven_command() "Wear" prompt changed to "Wear/Wield"
401monsters.c: earth elementals/spirits can now move through walls
402spells.c: wall_build(), for earth elementals, increase their hit points
403files.c: helpfile(), can ESC out now
404spells.c: cloning a monster will wake it up now
405dungeon.c: allow two-char control character sequences to be used with
406	repeated commands (deleted else from "else if (command == '^')")
407roglcmds.hlp: document how to avoid problem with repeated dig left command,
408	i.e. '13^H' doesn't work, type ^ then H, or type SPACE then ^H
409--------- 3/19
410unix.c: initialize num_chars to zero in check_input(), in case FIONREAD absent
411---------- 3/21
412all: fix most SYS_V lint errors
413----------- 3/23
414dungeon.c, io.c: calling inkey() when check_input true is wrong since it traps
415	^R and does other stuff, instead call new function raw_inkey(), which
416	only calls getch
417io.c: flush(), occasionally caused loss of output, instead of using fancy
418	ioctls, drain input by using check_input/raw_inkey
419--------- 3/25
420dungeon.c, io.c, unix.c, atarist.c:  AIX can't check to see if input is
421	pending, but can do non-blocking read, so check_input changed so
422	that it consumes input when called
423constant.h: change version number to 5.1.2 and distribute
424-------- 3/26
425save.c: when resurrect, clear poisoned flag and food flag to prevent character
426	from immediately dying again
427main.c, misc2.c, unix.c, save.c: fix some BSD lint errors
428moria1.c: remove unnecessary flush() call from take_hit()
429creatures.c, misc1.c, externs.h, variable.c: fixed problem with calls to
430	compact_monster() within creatures() by adding a horrible hack,
431	new variable hack_monptr defined to hold current creature() monptr
432---------- 3/27
433variable.c: add infra 3/2 for elf/half-elf, were both previously 0,
434	increase gnome infra from 3 to 4
435config.h, death.c, dungeon.c, externs.h, main.c, misc2.c, signals.c:
436	modify wizard mode code, no longer need password or correct UID to
437	enter, prints disclaimer then asks for confirmation
438atarist.c, death.c, misc2.c, ms_misc.c, save.c, signals.c: eliminate all
439	getuid() etc. code, only place these are still used is in main.c
440	and unix.c
441all: merge wizard/god mode, god mode nolonger exists
442io.c, unix.c: problems with flush() on EOF, don't call check_input if EOF,
443	also, check_input returns zero if got an error on the read, also
444	inkey() clears msg_flag on EOF to prevent infinite loops exit_game/
445	msg_print/inkey/exit_game/etc...
446moria2.c: monster_death(), increase tries from 10 to 20 so that treasure will
447	be created more often
448constant.h: increase MAX_MALLOC from 101 to 125 to reduce compacting monsters
449	messages, increase MAX_TALLOC from 150 to 175 because it is possible
450	to get compacting objects message during level generation
451constant.h: BTH_HIT deleted, no longer used
452----------- 3/28
453moria2.c: facts(), multiply damage for missile by 2/3/4 instead of adding when
454	use proper weapons, makes missiles much more useful
455save.c: write store info and time into save file even if dead, so that can
456	be restored on a resurrection
457constant.h: change version to 5.1.3
458-------- 3/30
459constant.h, externs.h, files.c, misc2.c, moria1.c, moria2.c, staffs.c,
460wands.c, variable.c: modify how misc abilities vary with level, new variable
461	class_level_adj, which holds the new adjustment values, bth, bthb,
462	device, disarm and save affected
463externs.h, misc2.c, moria2.c: critical_hits() has fourth paramter, that
464	indicates whether to use CLA_BTH or CLA_BTHB class level adj
465moria2.c: penalty for attacking invisible creatures modified, was minus
466	lev * BTH_LEV_ADJ-1, now minus lev * BTH_LEV_ADJ/2, hence warriors
467	have less penalty than mages/priests
468creature.c, externs.h, misc2.c, moria2.c: test_hit has a fifth paramter, that
469	indicates whether to use CLA_BTH or CLA_BTHB (or even CLA_SAVE)
470io.c: add abort() calls to move_cursor_relative(), print(), and put_buffer()
471	to help find bugs in the code
472save.c: eliminate support for versions 5.0.11 to 5.0.13
473misc2.c: get_spell(), only say 'unknown spell' if it is actually an alphabetic
474	character typed
475treasure.c: delete one ring of adornment and one amulet of adornment,
476	add arrows at level 15, and bolts at level 25
477--------- 3/31
478store1.c: change missile cost to 5*pluses instead of 10*pluses, since missiles
479	appear in groups of 20 or so, this is comparable to normal weapons
480	which are 100*pluses
481distribute 5.1.3 sources
482---------- 4/3
483externs.h: ifdef out definition of errno for MSDOS
484io.c: moved process.h include for MSDOS from middle of file to start
485io.c: in print(), put_buffer(), and move_cursor_relative(), clear msg_flag
486	before printing error message, prevents problems with '-more-' prompt
487recall.c: roff_recall(), don't set normal movement bit near beginning,
488	also delete code that prints 'never moves' if all move bits clear
489spells.c: teleport monster will wake it up
490scrolls.c: reading a second word of recall scroll does not reset timer
491spells.c: wall building now heals Xorns in addition to earth elementals
492spells.c: drain life damage increased from 50 to 75, to match other 50th level
493	wand damages
494constant.h, creature.c, moria2.c, variable.c: defined new class level adj
495	CLA_MISC_HIT and replace all test_hit uses of CLA_SAVE with this,
496	document that this is identical to save, and assumes all values same
497treasure.c: two potions named poison, change first to weakness (lose str)
498---------- 4/4
499save.c: add some __GNUC__ ifdefs so that the UNIX style code will be used,
500	not the code for the broken atari st MWC libraries
501---------- 4/6
502unix.c: two include files, sys/time.h and sys/resource.h are actually BSD
503	specific, put #ifndef USG around them
504---------- 4/9
505desc.c: remove all uses of "%+d", because AtariST/MWC and convex and probably
506	others do not support it
507spells.c: replace_spot(), clear lr flag, so that after destruction scroll,
508	destroyed areas will not be lit by a light scroll in a room
509creature.c: let monsters eat other monsters of equal exp, helps prevent
510	using oozes as treasure factories
511moria2.c: mon_take_hit(), if kill Balrog, always update recall info even if
512	Balrog invisible, since will always know it was the Balrog (winner!)
513recall.c: sleep values too hard to learn, change test from r_wake > sleep to
514	(r_wake*r_wake)>sleep
515-------- 4/13
516creature.c, moria2.c: mon_take_hit() was called within creatures() when
517	monsters were trapped inside a wall, bracket call in creature.c with
518	code to set hack_monptr, and add code to mon_take_hit() to check it
519creature.c: add code at end of creatures() loop to fix2_delete_monster() in
520	case monster died during movement (maybe it was in a wall?)
521externs.h: add DGUX to USG ifdef for the 'extern int sprintf()' declaration
522io.c: added code to save/restore local mode word of tty driver, i.e.
523	TIOCLSET and TIOCLGET ioctl calls
524save.c: for atarist && __GNUC__, call fopen with "rb" and "wb" for binary mode
525io.c, unix.c: for atarist && __GNUC__, don't include <sys/wait.h>
526externs.h: define sprintf as int (), if defined(atarist)
527------------ 4/14
528externs.h, unix.c: three new functions tilde(), topen(), and tfopen()
529	which perform ~ expansion for file names, in externs.h, define open to
530	topen and fopen to tfopen for unix machines
531config.h, dungeon.c, main.c, save.c, unix.c: add support for ANDREW
532	distributed file system, SECURE define in config.h, disallows
533	inferior shells, also instead of giving up setuid priviledges at
534	start, calls ANDREW library functions bePlayer(), beGame(), and
535	Authenticate()
536unix.c: add ifdefs to use select() when compiling for xenix
537------------- 4/15
538creature.c, externs.h, files.c, io.c, main.c, misc1.c, moria2.c, recall.c,
539save.c, treasure.c:
540	more Atari ST MWC fixes, eliminate fdopen(), make loc_symbol() return
541	unsigned char, all (var & long_const) constructs assign long const to
542	temp var first,
543------------ 4/16
544Makefile: fixed problems with 'make install'
545----------- 4/19
546atarist.c: add #include <stdio.h> at start, and #endif at end
547misc2.c: tohit_adj() toac_adj() todis_adj() todam_adj() all used cur_stat
548	instead of use_stat like they should have
549---------- 4/20
550moria2.c: mon_take_hit code of 4/13 wrong, use monptr instead of i at end
551misc2.c: remembering code wrong, add (i < 32) to stop it at end of spell list
552moria1.c: when inven full and take off object, check for object under
553	player before allowing/asking her to drop object
554save.c: for atarist MWC port, ifdef out all of the open() calls, and only
555	leave the fopen() stuff in
556misc1.c: compact_monsters(), don't set delete_any if fix1_delete_monster()
557	is called, because it does not decrement mfptr, call abort() if
558	cur_dis goes below zero (i.e. can't delete any monsters)
559all: run lint on 4.3BSD and SYS V
560constant.h: change version number to 5.1.4 and distribute
561----------- 4/27
562dungeon.c: add prt_map() at top after creatures(FALSE) call for ATARIST_MWC,
563	fixes display problems for some reason
564---------- 5/1
565moria1.c: inven_command(), clear msg line is ESC typed at "Drop all?" prompt
566---------- 5/3
567all: eliminated upd_log(), and plog variable
568doc/*: update all documentation, except moria.ms
569---------- 5/4
570all: visit every subdirectory, create README or ERRORS files as needed,
571	make everything as up to do as possible, split files greater than
572	60K so that they can be posted to comp.sources.games easily
573all: deleted all tmp.* files
574externs.h, moria1.c, moria2.c, et al: moved functions out of moria1.c and
575	moria2.c to reduce their size to less than 60K, many functions not
576	moved were made static
577dungeon.c, externs.h, main.c, misc2.c, save.c, variable.c: new variable
578	to_be_wizard, allows resurrect without entering wizard mode,
579	resurrect sets noscore = 0x1, wizard mode sets noscore = 0x2,
580	prt_winner prints "Is/Was wizard" or "Resurrect" is noscore set
581----------- 5/5
582misc1.c: moved see invisible from slay animal to slay undead weapons
583doc/moria.ms: updated documentation to reflect changes from 4.873 to 5.1,
584	added section which explains crowns, added some sections from
585	Chris J Stuart's BRUCE Moria's documentation
586--------- 5/7
587monsters.c: ogre mage is now evil
588files.c: added extern int error for MSDOS
589moria.ms: proof read it again
590misc1.c: reduce plus to dam for slay dragon arrows from +10 to +3, no
591	longer need such high damages because ptodam is multiplied now
592	when used with right weapon
593Makefile: test and fix 'make install'
594ibmpc/ms_ansi.c: change two escape characters to \033
595mac/moria.r: change many control characters to \xxx, update version info
596	strings to 5.1.5
597constant.h: change the version number to 5.1.5 and distribute
598--------- 5/9
599constant.h, mac/moria.r: change the version number to 5.2.0
600save.c: fix support code for 5.0 savefiles, because of minor version number
601	change, update compatibility code for 5.1 and 5.2 savefiles
602save.c: save/restore value of died_from string
603------- 5/10
604scrnmgr.r, scrntest.r: these files had control characters also, changed
605	'...' to \311
606resource.hqx: recompiled the mac resource files
607macscore.c, mac.c: changed control characters '...' to \311
608all: distribute version 5.2.0
609----------- 5/14
610death.c, externs.h, io.c, ms_misc.c: Turbo C changes, void sleep() instead
611	of unsigned sleep(), don't call reset_term() before exiting, ifdef
612	out definition of sleep() in ms_misc.c, declare signal handler as
613	void not int
614generate.c, types.h: change IBMPC_TURBO_C defines to the proper TURBOC define
615io.c: shell_out(), MSDOS code parameter to inkey() call deleted
616externs.h: count_msg_print() changed from (int) to (char *)
617io.c: get_check(), add code to use 'y' if LINT_ARGS defined, pause_exit()
618	add code to use 'delay' for MSDOS machines
619ms_misc.c: clear_screen(0,0) changed to clear_screen()
620main.c: set stack size for TURBOC by declaring the _stksize variable
621misc2.c: player_saves(), split expression up because MPW C couldn't handle it
622save.c: include time.h for for the Mac, delete var 'i' in save_char (unused),
623	get_char() add code for MAC to return FALSE if savefile doesn't exist
624mac.c: add call to initsavedefaults() in main()
625mac/ERRORS: document problem with mac Makefile
626-------- 5/15
627externs.h: remove decl of py_bash(), which is in moria2.c and static
628--------- 5/17
629dungeon.c: move search_off() call after check_view(), as panel_* variables
630	must be valid before search_off() is called
631-------- 5/18
632all: 7 files did not end with newlines, 5 hqx files, and origcmds.hlp,
633	misc/README also did not end with a newline
634-------- 5/21
635constant.h, version.hlp, moria.r: change version number to 5.2.1
636ScrnMgr.doc: split all lines greater than 80 characters, to make the file
637	more portable
638--------- 5/22
639death.c: in mac sources, there was a 'true' instead of a 'TRUE'
640ms_misc.c: Turbo C sscanf() incorrectly reads a newline from a blank line,
641	add check for newline to code that reads configuration file
642spells.c: door_creation(), called popt() before calling delete_object()
643	which could then invalidate the value returned by popt, moved
644	popt() call after the delete_object() call
645----------- 5/25
646creature.c: fix the invincible/invisible monster bug, multiply_monster()
647	was creating children on top of the parent, thus killing the parent
648	for carnivorous monsters
649death.c, externs.h, generate.c, io.c, main.c, ms_misc.c, signals.c, types.h:
650	change all TURBOC defines to __TURBOC__
651util/printit: new version of the printit program by Carl Hommel, fixed up
652	to be somewhat more portable and to use only moria defined constants
653-------- 5/27
654player.c, tables.c, variable.c: Turbo C can not accept any file with more than
655	64K global variables, so variable.c split into three parts, also
656	updated all makefiles to refer to all three files
657mac files: all three mac Makefiles modified to delete obsolete references to
658	CInterface.o and CRuntime.o, scrnmgr Makefile modified to automatically
659	combine the two ScrnMgr.c parts, README updated to document a problem
660	with the Makefile not appending resources and text files sometimes
661---------- 5/31
662all: released umoria 5.2.1
663ibmpc/ms_misc.c: corrected warn() function to use va_list, the old function
664	was not strictly correct
665---------- 6/4
666misc2.c: prt_stat_block() must also call prt_study()
667misc2.c: random_object() could create objects outside of map boudaries,
668	added an in_bounds() call to fix
669------------- 6/6
670main.c: changed 'if (p = getenv(...))' to 'if ((p = getenv(...)) != NULL)'
671	to avoid compiler warnings
672moria1.c: rest_on(), add check to make sure rest_num fits in short
673ibmpc/umoria.prj: new file, a project file for Turbo C 2.0
674------------- 6/9
675io.c: HP-UX does not have VEOL2, added #ifdef VEOL2 around its use
676dungeon.c: clear message line after change_character(), since as ESCAPE
677	exit does not
678moria1.c: for 'x' and 'w' commands, clear heavy_weapon flag before calling
679	check_strength, so that always get heavy message when wielding heavy
680	weapon, and never get light message when wielding light weapon
681scrolls.c: identify scroll can move arbitrarily far after ident_spell(),
682	replace simple 'moved one down' check with loop to search until found
683main.c: fixed starup code so that don't get 'savefile doesn't exist'
684	message anymore when starting a new game
685all: apply fix to all uses of long constant with & | << operators to avoid
686	a Mark Williams C bug on the Atari ST
687externs.h, files.c: removed MSDOS declaration of errno from files.c, and
688	remove ifndef MSDOS from errno decl in externs.h
689misc1.c: changed name of variable 'clock' to 'clock_var' to avoid problem
690	with a mac compiler (not sure which one)
691io.c: every io.c file, remove '\0' as alias for ESCAPE from get_com() and
692	get_comdir() (MAC only function)
693moria1.c: light_dam() calls inven_damage(set_lightning_destroy, 3) which
694	gives it a small chance of destroying objects in player's pack,
695	this makes it just like the other *_dam() functions
696spells.c: teleport_to(), add call to in_bound() to make sure player will
697	be teleported to somewhere inside the dungeon
698------------- 6/10
699config.h: add note about using GCC on an Atari ST
700main.c, save.c, undef.c: eliminated the unused _new_log() function
701death.c, dungeon.c, externs.h, save.c, undef.c, variable.c: eliminated the
702	mostly unused log_index variable, the few uses of it were replaced
703	with references to character_saved
704externs.h, files.c, io.c, undef.c: init_scorefile() implemented, same as
705	in umoria 4.87
706main.c, undef.c: eliminate unused function init_files()
707constant.h, moria.r, version.hlp: change version number to 5.2.2
708----------- 6/11
709ibmpc/ms_misc.c: added space to GRAPHICS scanf, to try to eliminate problem
710	with Turco C
711death.c, externs.h, files.c, save.c, variable.c: extensive changes to
712	implement the scorefile, total_points(), highscores(), display_
713	scores(), set_fileptr(), rd_highscore(), and wr_highscore() defined
714	scorefile holds 1000 entries max, has one sex/race/class entry per
715	non-zero uid, has live characters also
716unix/Makefile: fix the treatment of score file, don't copy over old one,
717	just use touch to create one if it doesn't exist
718undef.c: finally eliminated
719---------- 6/13
720all: lint under 4.3 BSD and AIX 2.2.1 (SYS V)
721scores: readd scores file, since it makes micro distributions much easier
722death.c: modify savefile for single user machine, so that it tries to
723	prevent a single character from appearing multiple times in the
724	savefile, checks for identical names, and killed by = (saved)
725player.c: eliminated the unused dsp_race[] array
726death.c: added code to implement flock() for systems which don't have it,
727	based on code written by CJS for BRUCE Moria
728---------- 6/17
729all: fixes for VMS, define USG for VMS, merge in fixes from Todd Pierzina
730---------- 6/23
731scrolls.c: for curse weapon, call py_bonuses(-1) before clear flags so
732	that attributes will be turned off
733moria1.c: calc_bonuses(), handle AC just like everything else, previously
734	did not add in AC bonus if armor was cursed
735creature.c, moria2.c: doors weren't being broken when bashed, change
736	"randint(2) - 1" to "1 - randint(2)"
737----------- 7/14
738all: merge in some changes indiciated by warnings/prototypes generated by
739	MSC 5.x
740recall.c: compute monster kill exp in long, to avoid overflow of int
741all: added AMIGA support
742amiga/: new directory to hold support files for the amiga
743main.c: variable result was not initialized to false
744------------- 7/15
745all: merge in more VMS patches
746death.c, dungeon.c: fixed display_scores() and 'V' command problems
747creature.c, dungeon.c, misc2.c, moria1.c: new feature '*' rest until
748	reach max mana and hp, print error message for illegal rest count
749all: removed improper define of NULL, new define CNIL for (char *)0, used
750	instead of NULL where appropriate, eliminate strange include orders
751	that the previous NULL define required
752io.c: ifdefed out the include for termio.h, as this caused it to be included
753	twice on some systems (curses.h includes it also) causing problems
754macrsrc.h: changed MAX_RESTART from 37 to 36
755--------- 7/21
756ms_misc.c: fixed reading of empty lines from config file for Turbo C
757-------- 7/22
758io.c: fix Amiga code for flush()
759types.h: reduce size of cave_type structure for Amiga/Aztec C 5.0
760death.c: fix display_scores(), so that it only shows entries belonging to
761	current player when show_player is true
762--------- 8/29
763misc2.c: deleted some redundant code in gain_spells() where it calculates
764	which spells a player can learn
765spells.c: recharge(), could call randint() with 0 or negative numbers, check
766	for these cases before calling randint()
767--------- 9/8
768moria1.c: inven_command(), when drop/remove object and inven/equip are both
769	empty, set inven weight to zero, just to be safe
770dungeon.c: jamdoor(), when jam a door, decrement inven_weight by weight of
771	one spike
772moria1.c: inven_command(), make spikes wieldable objects, fight with them
773	like missile weapons, i.e. they disappear after use
774desc.c: objdes(), add damage multiplier of bows to their name
775externs.h, io.c, misc1.c, save.c variable.c: new option sound_beep_flag, so
776	that players can turn off bad character beep if desired
777desc.c, misc2.c: modify known1_p() to return TRUE for objects which never
778	have a color, modify objdes() to work with the new convention,
779	modify inven_carry() so that objects are added to the inventory
780	sorted by subval if they are known1_p()
781---------- 9/9
782misc1.c: add_food(), fix so that does not use f_ptr->slow to set f_ptr->food
783	value, this makes it much less likely to overflow the food level
784misc2.c: inven_carry(), yesterday's insert in order fix does not work for
785	items which can be unknown1p, only insert items ordered by subval if
786	they are always known1p, i.e. object_offset() returns -1
787externs.h, misc1.c, misc2.c, save.c variable.c: new option display rest/repeat
788	counts, since these counts make resting at 1200 baud or less
789	unbearably slow, people need to be able to turn them off
790store2.c: get_haggle(), let RET default to the last inc/dec amount when
791	haggling
792misc1.c: compact_monsters(), return FALSE if could not delete any monsters
793	instead of aborting, popm() return -1 if could not allocate monster
794	(i.e. compact_monsters() failed), place_win_monster() abort if popm()
795	fails which should never happen, place_monster()
796externs.h: place_monster() now int type not void,
797creature.c, misc1.c, spells.c: fix users of place_monster() to check result,
798	and fail if place_monster() failed, really only necessary for the
799	calls in creature.c, these fixes fix the monster list overflow bug
800dungeon.c, externs.h, misc1.c: change compact_monsters() from static to
801	extern, call it from within main loop in dungeon.c if there are less
802	than 10 spaces left in the monster list, compact_monsters() is much
803	more likely to be successful when called here than when called from
804	creatures()
805----------- 9/11
806signals.c: delete extra definition of error_sig for ATARIST_MWC
807atari_st/README: update with GCC and Turbo C info
808files.c: fix typo, filname1 -> filename1
809--------------- 9/18
810mac.c, ScrnMgr1.c: replace uses of KeyMapLM with GetKeys() call
811------------- 9/19
812misc1.c: m_bonus(), could overflow on 16 bit machines when level >= 263
813	when calculating stand_dev
814death.c, externs.h, save.c: store the encryption byte for each savefile record
815	immediately before it in the scorefile, makes the scorefile more
816	robust in the face of a system crash, rd_highscore(), wr_highscore()
817	no longer pass the encryption byte
818death.c: added version numbers to the savefile
819death.c, externs.h, save.c, variable.c: add max_score to savefile, which is
820	the maximum score the character has reached so far, total_points()
821	modified to use the larger of the computed score, and the value of
822	max_score, this prevents a "(saved)" message on the score file for
823	a dead character, which died having fewer points than when it was
824	last saved
825----------- 9/26
826death.c, externs.h, main.c, save.c, types.h, variable.c: new global variable
827	birth_date, set to time when character created, saved in save files
828	and scorefile, when loading character check to see if the a character
829	in the scorefile has the same race/sex/class/uid/birth_date and
830	its died_from is not "(saved)", in which case this character will not
831	be scored
832misc2.c: print "Duplicate" on screen for such duplicate characters
833all: update all documentation, README, and other misc descriptive files
834all: add fixes for Atari ST/Turbo C 2.0
835all: lint on Sun3/uVAX/MIPS/RT_PC
836recall.c: when printing out depth of monster, print Balrog as 50 not 100
837----------- 10/3
838all: fix all problems reported by maniscan/cshar, except for control-L
839	characters on a line by themselves
840----------- 10/7
841creature.c: mon_move(), cast m_ptr->fy-1 to int, so that negative values
842	will correctly compare to it, in the wall building code
843spoilers: new file, lists spell damages
844misc2.c: prt_experience(), always check whether exp is greater than max_exp,
845	previously did not when player was at level 40
846creature.c: mon_move(), set the recall CM_ATTACK_ONLY bit when a monster
847	should have moved but did not, instead of the old method of setting it
848	when a non-moving monster attacked
849store2.c: get_haggle(), fix bugs in the automatic increment code, also, when
850	reach final offer, set the automatic increment to the required diff,
851	so that player need only hit return to bid the final amount
852moria2.c: tunnel(), before checking for tunneling into a invisible monster,
853	check to make sure player is tunneling somewhere which has an effect,
854	otherwise, player can use this to 'detect' invisible monsters in
855	open spaces by trying to tunnel there
856moria1.c: calc_bonuses(), base AC should always be visible, as long as the
857	item is not cursed
858------- 10/8
859spells.c: td_destroy2(), should not destroy chests, not disarms and unlocks
860	them instead
861misc2.c: put_misc3(), clear_from(14) not 13, was clearing the gold value
862files.c: file_character(), add the "Max Exp" and "Exp to Adv" fields to
863	the info written to a file, to match the on screen display
864files.c: file_character(), set fd to -1, not NULL, code was closing stdin
865	(== 0 == NULL) when could not open file
866death.c: exit_game(), clear character_saved before calling highscores(),
867	prevents inkey() from recursively calling exit_game() when eof on
868	stdin has been detected
869all: released 5.2.2 sources
870----------- 10/23
871death.c: highscores(), must do fseek() after reaching EOF before changing
872	read/write mode, previously only did this for VMS, now do this for
873	all systems
874----------- 10/26
875config.h, death.c, io.c: fix VMS errors, declare 'string' in death.c
876	duplicate_character(), fix typos in other files
877dungeon.c: for VMS, after calling kbhit(), must consume one character
878vms/Makefile: fixed, mostly change constants.h to constant.h
879------------ 10/30
880death.c, externs.h, files.c, save.c: define STDIO_LOADED after including
881	stdio.h, then use it to control declarations in externs.h
882constant.h, death.c: define SCOREFILE_SIZE as 1000, and use it in death.c
883moria2.c: cast_spell(), when don't have enough mana, use 'gods may think you
884	presumptuous' message instead of 'summon your limited strength'
885----------- 11/4
886ibmpc/moria.cnf: add ^M, since otherwise MSDOS moria can't read file properly
887io.c: include stdio.h explicitly, and define STDIO_LOADED, so savefile
888	can be closed when shelling out
889store2.c: get_haggle(), clear increment when invalid increment entered
890store2.c, variables.c: last_store_inc contradictory declarations, changed both
891	to int16
892externs, misc2.c, sets.c, spells.c: set_*_destroy changed to take inven_type
893	pointer instead of tval, modified so that (Rx) items won't be
894	destroyed by attacks of type x
895death.c: for single user systems, use birth_date instead of name when
896	looking for matching characters in savefile
897death.c: MSDOS setmode() needs file descriptor, not FILE pointer
898files/*: removed all TABS, since some systems do not handle them properly,
899	specifically, Turbo C on the Atari ST and IBM-PC
900misc1.c: rings of searching cost was 100*p1, amulet of searching cost 20*p1,
901	change both to 50*p1
902mac/macio.c, ibmpc/tcio.c: modify beep() so that it uses the new option flag
903desc.c: changed the (*2) string for bows to (x2)
904spells.c: slow monster and confuse monster modified to wake up monster if
905	the attacks fails
906spells.c: wall_to_mud() and dispel_creature(), print messages even if
907	monster not visible since the effects are visible/audible
908moria2.c: for fire/acid/gas traps, print the trap message first, and then
909	damage an item
910treasure.c: change name of lose memories potion to lose experience, so it
911	won't be confused with monster memories
912spells.c: trap_creation(), don't create a trap under the player, to prevent
913	strange occurances such as ending up under a falling rock
914moria2.c: tunnel(), when wielding heavy weapon, make tunneling more difficult
915----------- 11/6
916vms/getch.c: New code for kb_hit(), which was tested and works under VMS 5.2
917	the old code did not work for VMS 5.2
918----------- 11/9
919misc1.c: compact_monsters(), distance test was backwards!, now delete monsters
920	farther away first,  allow a final pass with distance of 0,
921	never delete the Balrog during compaction
922---------- 11/21
923doc/history: rewrote history file to bring it up-to-date
924misc2.c: gain_spells(), don't need to be able to read spell books if learning
925	priestly spells, don't fail if blind or no light
926death.c: fix #ifdef typo around <time.h> include
927----------- 12/1
928store2.c: when good bargainer, change string to "final offer", and allow
929	return to accept final offer
930player.c: change rogue start inv from Soft Armor to Cloak, so that it is the
931	same as the other non-Warrior classes
932dungeon.c: decrement command count after do_command() instead of before,
933	so that all counted commands will work right, this fixes 3^P
934--------- 12/5
935death.c: display_scores(), fix VMS bug, truncate uid to a short before
936	comparing against the uid in the score file record, also move
937	the uid computation outside the loop to speedup the procedure
938io.c: put_buffer (), for Atari ST, was printing the untruncated out_str
939	instead of tmp_str
940--------- 12/14
941atari_st/curscomp/curses.[ch], death.c, files.c, io.c, signals.c:
942	add Atari ST TC fixes for the new (in 5.2.2) code
943