Legend
------
JE = Jeremy Elson (jelson@jhu.edu)


Well, I should have started a changes file long, long ago.  Oh well,
I'll start one now.  Hopefully, I'll maintain it.  JE.


--- CircleMUD 3.0 patchlevel 3

8/31/94 JE      Added a GET_REAL_LEVEL macro which returns the actual
                level taking switched characters into account.  Used
                in CAN_SEE so that switched immorts can't see invis
                gods.

8/31/94 JE      Added restriction to interpreter.c so that immort commands
                cannot be used by NPCs.  Removed all the IS_NPC checks from
                the individual god commands since they are now redundant.

8/31/94 JE      Made newsign.c into sign.c and deleted the old DIKU sign.c.
                newsign.c forks to handle its kids and is generally more
                concise and robust.

8/31/94 JE      Changed the type argument of affect_from_char and
                affected_by_spell to sh_int (from char) to match the fact
                that the 'type' member of the affected_type structure is
                now a sh_int instead of a char.  Spotted by Jean-Jack
                Riethoven.

8/31/94 JE      Fixed MIN statement using uninitialized 'water' var in
                spell_create_water.  Spotted by JJR.

8/31/94 JE      Ken Cavness noted that MOBs were getting past guildguards.
                Not surprising, since I changed the relationship between
                do_move/do_simple_move/perform_move so many times.  The
                discipline has now changed again; MOBs calling perform_move
                must call with 3rd arg of 1 instead of 0.  Changed the
                arg from 'following' to 'need_specials_check' so its purpose
                would be clearer.

8/31/94 JE      Added 'worn_on' short integer to obj_data structure to go
                with worn_by char_data pointer.  Indicates which eq pos
                eq is being worn on.  (Will be used to facilitate a cleaner
                version of objectmagic.)

8/31/94 JE      extract_obj now automatically unequips the obj first if it
                is being used as equipment (uses worn_by and the new worn_on).
                do_use no longer unequips.  objectmagic didn't have to be
                changed since extract_obj automatically does the work now. :)

8/31/94 JE      Fixed cityguard routine with a CAN_SEE check so that blinded
                guards no longer banzai people, and so that guards don't
                banzai invis people etc.  Spotted by Ken Cavness.

8/31/94 JE      Fixed do_reply to make sure the person you're replying to
                is still in the game before calling perform_tell.  Note, I
                think it still may be possible for your reply to go to
                someone else if the recipient logs out and someone else logs
                in.  In particular, this will break in a big way if I ever
                implement some scheme where it keeps a pool of char_data
                structures for reuse.

8/31/94 JE      CHA added to display when rerolling a character.

8/31/94 JE      Changed TOUNGE to TONGUE throughout.

8/31/94 JE      Made the '*' (ignore) case in zone reset tables (used for
                invalid vnums) set last_cmd = 0 for proper resetting.

8/31/94 JE      Enhanced (added?) NeXT compatibility with FOPEN_MAX, my_signal,
                and O_NDELAY.

8/31/94 JE      Changed boards back to listing lowest to highest since people
                seemed to hate it the other way.

8/31/94 JE      Added sanity checks to perform_move since king_welmar seems
                to cause crashes when he's moving on occassion, and I'd rather
                remove that area than try to debug it.

8/31/94 JE      Changed 'SEC' to 'RL_SEC' in structs.h to avoid conflicts
                with many OS's #defines of SEC

9/1/94  JE      Good God, is it September already?

9/1/94  JE      Changed list_skills to accumulate in a buffer instead of
                using send_to_char, and use page_string.  This system really
                sucks.  There should be a "page_to_char" command, or something.
                It shouldn't even require too much conceptual difference now
                that output buffers are limited!

9/1/94  JE      Added a 'sort_spells()' function and changed list_skills
                to use sorted spell list instead of arbitrarily ordered list.
                sort_spells() called once on boot from db.c.

9/1/94  JE      Finally finished making the background story paged.  Now that
                process_input and command_interpreter, etc., have been
                rewritten, all it took was changing it from SEND_TO_Q to
                page_string.  Whoo hoo!

9/1/94  JE      Jeff Fink suggested having perform_act do some run-time
                sanity checking in order to make it more robust.  Thus,
                I created the CHECK_NULL macro for it in comm.c.

9/1/94  JE      Made mobs hit you if you try to cast an offensive spell
                at them and fail.

9/1/94  JE      Completed line-by-line zone-parsing routines.  Instead of
                using scanf() to read from disk, Circle now uses fgets().
                This allows MUCH more robustness, more accurate and sensitive
                error-checking of zone files, both at boot-time and run-time.
                In addition, the error reporting now gives you a specific
                _line number_ in the zone file of the error. :)

9/2/94  JE      Made a 'qecho' command, combined with qsay in do_qcomm
                of act.comm.c.

9/2/94  JE      Updated the README file.

9/2/94  JE      Circle 3.00 beta patchlevel 3 released


-- Patchlevel 4


9/9/94  JE      Added IS_NPC check to do_score to prevent crashes.

9/9/94  JE      Added #undef MAX and MIN for NeXT compatibility.

9/19/94 JE      Started work again after 10 days of real life (school's
                starting up again, ya know.)

9/19/94 JE      Changed lantern-handling in update_char_objects in handler.c;
                now gives warning one tick before the light expires (idea
                from Chris <ttl6u@fulton.seas.virginia.edu>) and correctly
                decrements world[ch->in_room].light as it should have from
                the very beginning.

9/19/94 JE      Changed the build_house parser in house.c to allow for
                a house which has more than one exit (i.e., only one of
                which is access-controlled) because people seem to want
                multi-room access-controlled areas.

9/19/94 JE      Fixed multi-room-shared-atrium bug in house_control_house,
                house.c (I haven't heard of this bug ever manifesting itself
                but looking at the code I realized the error.)


9/19/94 JE      Changed 'long' to 'time_t' where appropriate.

9/19/94 JE      Added graceful handling of missing playerfile in db.c


-- Patchlevel 5

10/4/94 JE      ban.c:98: long int format, time_t arg, fixed with cast

10/4/94 JE      Made default action of hcontrol to be a help screen;
                added 'show' subcommand.

10/4/94 JE      Added reni's NeXT function prototypes to utils.h

10/5/94 JE      Fixed !IS_NPC in do_score (act.informative.c)

10/9/94 JE      Added charisma-to-25 code to do_restore (act.wizard.c)

-- Sanity break

2/20/95 JE      Added max length check to set_title in limits.c -- all
                title setting should go through this function

2/22/95 JE      Added check for null name in 'show player'

2/22/95 JE      included unistd.h in house.c, boards.c and objsave.c
                for unlink prototype

2/22/95 JE      Low-lev imms can no longer see invstart people above their
                level entering game

2/22/95 JE      Changed 'color' and 'syslog' to show current levels if typed
                without arguments, instead of help text.

2/22/95 JE      fixed castle by adding terminator to end of move string
                reported by Ed Mackey (emackey@BIX.com)

2/22/95 JE      If you try to return to your original body, and someone else
                has connected into it, disconnect them.  act.wizard.c,
                do_return().
                reported by Aaron Mills

2/22/95 JE      interpreter.c - changed the code to sense if a switched
                persona of yourself is connected when you log in.  Should
                make switch more stable.
                reported by Aaron Mills

2/22/95 JE      new timediff in comm.c to work on systems for which
                tv_sec and tv_usec are unsigned
                reported by Steven Serocki <ss@sirocco.cup.hp.com>

2/22/95 JE      change RLIMIT code for systems that don't have RLIMIT_INFINITY
                reported by Steven Serocki <ss@sirocco.cup.hp.com>

2/22/95 JE      changed title_type[4][35] to [NUM_CLASSES][LVL_IMPL + 1]
                throughout
                reported by Darel Cullen

2/22/95 JE      changed "his arm" to "$s arm" in act.obj.c
                reported by Chris Epler <cepler@ucsee.eecs.berkeley.edu>

2/22/95 JE      act.other.c, do_quit() -- kill off all sockets connected to
                the same player as the one who is trying to quit.  Helps to
                maintain sanity as well as prevent duping.
                duping reported by Chris Epler <cepler@ucsee.eecs.berkeley.edu>

2/22/95 JE      installed new version of Jeff Fink's shop.c code

2/22/95 JE      Patched bug in Jeff Fink's shop code reported by him.
                Patch sent by Jeff Fink

2/22/95 JE      created player_specials structure for new players coming in
                after having been deleted.  Yet another example of a bug that
                could have been avoided completely if we'd been using C++.
                Reported by Jeff Fink

2/22/95 JE      Added code to support 'R' command in zone resets (remove
                obj from room).  Code sent by Jeff Fink.

2/22/95 JE      Changed plain 'stat' to make better assumptions about what
                you're trying to stat.
                Code sent by Jeff Fink

2/22/95 JE      Added go_gen_door code written by Jeff Fink to eliminate
                duplication of checks, etc. for open/close/lock/unlock/pick

2/22/95 JE      Fixed shop code -- changed keeper = 0 to keeper = me

2/22/95 JE      Added magic_alter_objs code submitted by Jeff Fink

2/22/95 JE      Added break statement to mag_damage, energy drain       
                Spotted by Jeff Fink

2/22/95 JE      Added ascii flag system to db.c for world, obj, mob files

2/22/95 JE      Brought in the new 3.0 world files from Furry

2/23/95 JE      Created 'random.c' as Circle's new, portable random number
                generator.

2/23/95 JE      Added 'POSIX_NONBLOCK_BROKEN' option to work around OSs
                such as AIX which don't implement POSIX nonblocking I/O
                correctly, causing the MUD to hang in places such as the
                Password: prompt.

2/23/95 JE      Added a case for sgi (IRIX) in utils.h OS-specific header
                section for cleaner compiles


-- Patchlevel 6

2/24/95 JE      Fixed asciiflag_conv in db.c for uppercase flags (typo,
                'a' instead of 'A').

2/24/95 JE      Added max_bad_pws to config.c.

2/24/95 JE      (logged retroactively) Added max_filesize to config.c to
                set max limit on size of bug, typo and idea files to prevent
                bombing

2/24/95 JE      Moved 'pfilepos' from descriptor_data to char_data where is
                belongs.  More logical, plus fixes the switch-into-a-PC-and
                save bug reported on rec.games.mud.diku by
                shruew@amiserv.xnet.com (Johnny Mnemonic).

2/24/95 JE      Similarly moved password from descriptor to character.

2/24/95 JE      Changed nonblock to OR-in O_NONBLOCK to the current flag
                bitvector of descriptors instead of setting directly.

2/24/95 JE      Changed 'last_tell' (used by reply) to use player ID number
                instead of a pointer to the character.  Much safer because
                I don't have to worry about pointer reuse, plus it'll still
                work if the person you're replying to logs out and back in
                again.

2/24/95 JE      Changed distribution-default of nameserver_is_slow to NO.

2/24/95 JE      Fixed src/util/showplay.c

2/24/95 JE      Added MAG_ALTER_OBJS to SPELL_INVISIBILITY in spell_parser.c

2/25/95 JE      Fixed PC/NPC checks in act.wizard.c, do_set.
                Reported by Eric Green and Stefan Wasilewski

2/25/95 JE      Fixed carried-by/worn-by reporting of objects
                act.wizard.c, do_stat_object.
                Reported by Eric Green and Stefan Wasilewski

2/25/95 JE      Deleted 'equipment status' from do_stat_obj in act.wizard.c
                --didn't seem particularly useful and took up valuable screen
                space

2/25/95 JE      do_wiznet, act.wizard.c, wiznet chops off first letter of
                message when levels are used.  Reported by Eric Green and
                Stefan Wasilewski

2/25/95 JE      do_ungroup, act.other.c, fixed so that disbanding a group
                doesn't un-charm charmed mobs following you.
                Reported by Eric Green and Stefan Wasilewski

2/25/95 JE      magic.c, changed so you can't sanct sancted mobs
                Reported by Eric Green and Stefan Wasilewski

2/25/95 JE      Brought in fixed world files from furry and corresponding
                castle.c and spec_assign.c for new specproc assignments

2/26/95 JE      Removed minor output display but on object statting, do_stat,
                act.wizard.c  Spotted by Eric Green.

2/26/95 JE      Added max string length checks in perform_subst(), comm.c
                Reported by Eric Green and Stefan Wasilewski.  Also added
                comments to the function.

2/26/95 JE      Similar length checks in perform_complex_alias, interpreter.c

2/26/95 JE      Made buffers MAX_INPUT_LENGTH size to handle very large output;
                tmp_name in interpreter.c, *_search in do_who and do_users
                in act.informative.c

2/26/95 JE      Rewrote most of do_group, act.other.c

2/26/95 JE      do_ungroup, act.other.c - disbanding a group also ungroups
                yourself.

2/27/95 JE      Added olc.c and olc.h.

2/28/95 JE      Added bank card specproc to spec_assign.c

2/28/95 JE      Updated FAQ and README-BETA

3/3/95  JE      Patchlevel 6 released


--- Patchlevel 7

3/4/95  JE      Added PFILEPOS assignment in interpreter.c so deleted 
		characters are not replicated in plrfile.  (near "Did I get
		that right, X?")

3/4/95- JE      Extensive rewrite of documentation
3/7/95

3/8/95  JE      Changed qecho to LVL_IMMORT (interpreter.c)

3/8/95  JE      Created GET_PFILEPOS macro and used it throughout.

3/8/95  JE      Changed extern declaration of thaco in fight.c from [4][35]
                to [NUM_CLASSES][LVL_IMPL+1].  Spotted by Marcin Zaranski.

3/8/95  JE      Problems reported with stop_fighting called when char not
                fighting.  Most probably the call of stop_fighting() in
                hit() when ch->in_room != vict->in_room.  Added check for
                FIGHTING(ch) before calling stop_fighting.  Also made
                stop_fighting tolerant of being called at the wrong time.
                Problem spotted by Marcin Zaranski.

3/8/95 JE       Also changed stop_fighting to use REMOVE_FROM_LIST macro.

3/9/95 JE       Implemented ROOM_TUNNEL.

3/9/95 JE       Fixed a bug causing the MUD to crash under pathological
                input-overflow conditions (such as someone holding down a
                key for 60 seconds.)
                Reported by Carl Tashian <TASHIACM@ctrvax.Vanderbilt.Edu>

3/9/95 JE       "set class" output corrected.
                Spotted by Ryan Baker <ed209@free.org>.

3/9/95 JE       Added Jeff Fink's do_gen_door patch for picking.  Also
                initialized obj and vict to NULL, might have been causing
                double messages.

3/9/95 JE       Fixed find_door to give a better message with a null arg.

3/9/95 JE       Brought in new version of world files from Furry
                Deleted that stupid '#99999' from the end of all the world
                files since the new parser doesn't need them.

3/9/95 JE       Changed perform_group so "group all" doesn't group people
                you can't see.


--- Patchlevel 8

5/5/95	JE	Changed my email address to jelson@jhu.edu throughout.

5/5/95	JE	Implemented AFF_WATERWALK flag.

5/5/95	JE	Implemented MOB_AWARE flag (mobs that cannot be backstabbed).

5/5/95	JE	Implemented MOB_NOBASH flag.

5/5/95	JE	db.c, added support for type E (Enhanced) mobs

5/5/95	JE	Implemented ROOM_PEACEFUL flag (rooms in which fighting
		is not permitted.)

5/5/95	JE	Implemented ROOM_NOTRACK flag.

5/5/95	JE	Implemented AFF_NOTRACK.

5/5/95	JE	Added some sanity checking to obj_to_obj.

5/5/95	JE	Neatened up the saving throw table in magic.c.

5/10/95	JE	Implemented bless and curse spells for objects.
		Code submitted by Jeff Fink.

5/10/95	JE	Implemented poisioned objects and remove-poison for objs.
		Code submitted by Jeff Fink.

5/10/95	JE	Implemented MOB_NOCHARM flag.

5/17/95	JE	Completely new building.doc world builders' documentation.

5/20/95	JE	Imported latest version of Furry's world files

5/21/95	JE	handler.c, extract_char()... if a char is extracted and
		has no descriptor associated with it, free the char.
		Prevents a memory leak if players get purged.
		Suggested by Eric Green.

5/21/95	JE	Set mob's default charisma to 11.
		Spotted by Jeff Fink.

5/21/95	JE	Changed obj num loaded for 'create food' to 10, waybread.

5/21/95	JE	Removed strange code from db.c, reset_zone, 'O' command,
		that seemed to prevent two objs of the same vnum from being
		loaded in the same room.
		Suggested by Jeff Fink.

5/21/95	JE	handler.c, affect_join() - fixed bug preventing spells
		with multiple effects from coexisting.
		First reported by Thomas Katzlberger. 

5/21/95	JE	boards.c - changed board so it will respond to 'examine'
		as well as 'look'
		Suggested by Chris Epler.

5/21/95	JE	Initialized GET_LAST_TELL to NOBODY.
		Spotted by Eric Green and Stefan Wasilewski

5/21/95	JE	Changed around wiz-inivisibility for better compatibility with
                the 'visible' command, and to give better messages.
		Suggested by Chris Epler.

5/21/95	JE	Fixed mag_groups so caster is only hit once per cast.
		Spotted by dodger@WPI.EDU (DoDGeR)

5/21/95	JE	Fixed the bug causing crashes on some systems if an
		incorrect class is entered when a new character is created.
		For the record I think this was happening on architectures
		on which the 'char' type is defined as being unsigned.

5/21/95	JE	Made is_abbrev asymmetrical as it should be; fixes
		"look ingerwal" as being interpreted as "look in"
		Reported by Mike Higuchi and others.

5/21/95	JE	Changed spells_to_learn from byte to int; used one of the
		spares in the playerfile so that people already running
		MUDs with 3.0 won't get screwed (grrrrr....).
		Spotted by Marcin

5/21/95	JE	spell_parser.c, say_spell() - target of spell now only
		sees caster casting if they're in the room together.
		Spotted by Marcin

5/21/95	JE	Also changed say_spell so that object messages will be
		correctly reported if target obj is in caster's inventory
		as well as in same room.

5/21/95	JE	Changed mag_alter_objs to give the room a message as well
		as the caster.

5/21/95	JE	handler.c, char_from_room(), changed so that if char is
		fighting when removed from room, stop_fighting is called
		immediately to stop the fight.
		Problem found by Marcin

5/21/95	JE	Corrected errors with RUSAGE section in comm.c.
		Spotted by Thomas Knight

5/21/95	JE	Fixed the ancient "pour canteen out" bug -- the problem
		was that any drink container whose weight was less than
		its quantity could go negative since the MUD assumes that
		all drinks weigh one pound per unit of drink.  parse_room,
		db.c, now checks drink containers and fountains to make
		sure that weight is greater than quantity.

5/21/95	JE	Fixed the cleaning woman in Welmar's castle so that she
		only picks up trash.
		Fix submitted by Christopher Dickey

5/21/95	JE	Fixed up show_string so that the display works properly;
		fix submitted by Michael Buselli

5/21/95	JE	Player killers' damage no longer set to 0 if they're inflicting
		damage on themselves.
		Reported by Julian Fong.

5/21/95	JE	Fixed do_gen_door to correctly sense when no arg is given.
		Problem spotted by Eric Green

5/21/95	JE	*** WAIT_STATE set for all uses of magic items ***
		Suggested by Eric Green

5/21/95	JE	Found irrefutable clues & figured out who shot Mr. Burns.

5/21/95	JE	Bug in mobact.c prevented alignment-aggressive monsters from
		working if they were set not in conjunction with the normal
		AGGRESSIVE bit.
		Problem spotted by Chris Epler

5/21/95	JE	Problem with HELPER mobs getting extra hits fixed.
		Problem spotted by Chris Epler

5/22/95	JE	Created the CircleMUD License.  Changed Makefile so that
		the license is displayed the first time the MUD is compiled.
		Sorry if this is a dickish thing to do, but it's a Derek
		Snyder countermeasure.

5/22/95	JE	Added logging for whole-world-resets using zreset command.

5/22/95	JE	fight.c, hit() -- Changed declaration of all intermediate
		vars used to calculate hitroll and damroll to be int to
		avoid problems with unsigned bytes on certain architectures.
		Same change to 'percent' vars in act.offensive.c.
		Suggested by Al Thompson

5/22/95	JE	Rewrote mag_affects in magic.c to be more readable and easier
		to use, as well as correcting some old bugs (i.e., being able
		to un-affect mobs by re-affecting them and then waiting for
		the affect to fade.)

5/22/95	JE	fight.c, damage() - WIMPY mobs do not flee if they are
		damaging themselves.

5/22/95	JE	comm.c, close_socket().  When a player loses link, all
		players with same idnum are also disconnected.  Fixes a
		duping bug.
		Found by Clay Hardin

5/22/95	JE	Added "NOEFFECT" char constant to config.c.

5/22/95	JE	Fixed bug in zone-reset 'R' command where second arg was
		being resolved as a room vnum instead of an obj vnum.
		Fix sent in by BUG.

5/22/95	JE	Added two prototypes to comm.h so that comm.c will compile
		cleanly under ultrix.

5/22/95	JE	spell_parser.c, cast_spell() - prevents ungrouped chars from
		casting MAG_GROUPS classes of spells (returns error msg and
		does not take mana).

5/22/95	JE	Added the GET_EQ macro for character equipment and SECT
		macro for sector types; changed code throughout to use
		the new macros.

5/22/95	JE	act.movement.c, has_boat - added has_boat function so that
		unwearable boats in inventory and boats worn will work as
		boats.

5/22/95	JE	Added sun386 (SunOS 4.0.x) compatibility by defining
		sigaction as signal for it.
		Patch sent by Tim Aldric.

5/22/95	JE	Implemented detect poison as a manual spell.

5/22/95	JE	Fixed up mag_areas (generally) and earthquake (specifically).

5/22/95	JE	Changed 'invis' command so it will not work on mobs.
		Bug spotted by v932459@si.hhs.nl.

5/23/95	JE	Fixed get_char_room_vis so that you can no longer access
		PC's throughout the world with the '.' syntax.  (Oops..)

5/23/95	JE	Changed GET_POS==FIGHTING check to if(FIGHTING) in
		cityguard specproc, spec_procs.c
		Bug spotted & fix submitted by Jason Fischer

5/23/95	JE	fight.c, perform_violence() - Implemented wait states for
		mobs, so that mobs who are bashed etc. are actually taken out
		of the violence for some number of rounds (depending on the
		skill), like it is supposed to be.

5/23/95	JE	limits.c, gain_exp*(), changed level message so you aren't
		spammed if you gain more than one level at once.

5/23/95	JE	Added bash as a level 12 warrior skill.
		If successful, your opponent loses 1 round.
		If unsuccessful, you lose 2 rounds of combat.
		You cannot try to bash again for 2 rounds.

5/23/95	JE	Fully implemented the bash-class of skills; i.e., for skills
		where it tells you you fall on your ass and have to stand up
		again, you actually lose the rounds of combat while you're
		still sitting.

5/23/95	JE	Brought in new lib/misc/messages file from Furry with some
		additional attack types.

5/23/95	JE	Wrote the E-Spec parser and brought in Furry's world files
		that use E-Specs.

5/23/95	JE	Fixed all the utilities, including autowiz which now works
		again.

5/23/95	JE	Took out the scheck utility and replaced it with the -c
		option on the server (Check syntax only - do not run game).
		Another fantastic idea from Gekke Eekhoorn, the source of many
		fantastic ideas.

5/23/95	JE	Deleted some extraneous lines from the Makefile (rules for
		compiling utiltities that no longer exist).
		Found by Jared McDonald

5/23/95	JE	Released patchlevel 8.


--- Patchlevel 9
