diff --git a/ChangeLog b/ChangeLog
index a57065e..7a1c7ac 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,35 +1,9 @@
Release history:
Version 3.1 (yes, no beta pl): November 18, 2002
-Version 3.00 beta pl22 release: October 4, 2002
-Version 3.00 beta pl21 release: April 15, 2002
-Version 3.00 beta pl20 release: January 15, 2002
-Version 3.00 beta pl19 release: August 14, 2001
-Version 3.00 beta pl18 release: March 18, 2001
-Version 3.00 beta pl17 release: January 23, 2000
-Version 3.00 beta pl16 release: August 30, 1999
-Version 3.00 beta pl15 release: March 16, 1999
-Version 3.00 beta pl14 release: July 3, 1998
-Version 3.00 beta pl13a release: June 4, 1998
-Version 3.00 beta pl13 release: June 1, 1998
-Version 3.00 beta pl12 release: October 29, 1997
-Version 3.00 beta pl11 release: April 14, 1996
-Version 3.00 beta pl10 release: March 11, 1996
-Version 3.00 beta pl9 release: February 6, 1996
-Version 3.00 beta pl8 release: May 23, 1995
-Version 3.00 beta pl7 release: March 9, 1995
-Version 3.00 beta pl6 release: March 6, 1995
-Version 3.00 beta pl5 release: February 23, 1995
-Version 3.00 beta pl4 release: September 28, 1994
-Version 3.00 beta pl1-3, internal releases for beta-testers.
-Version 3.00 alpha: Ran on net for testing. Code not released.
-Version 2.20 release: November 17, 1993
-Version 2.11 release: September 19, 1993
-Version 2.10 release: September 1, 1993
-Version 2.02 release: Late August 1993
-Version 2.01 release: Early August 1993
-Version 2.00 release: July 16, 1993 (Initial public release)
+For older releases and Changelog entries, see the Changelog-3.0 file in
+the doc/ directory.
Legend
@@ -42,4212 +16,64 @@ DK = Daniel A. Koepke (dkoepke@circlemud.org) Since Jul 11, 1999
New applicants must have a last name alphabetically after
'Koepke' and will only be accepted on December 2, 2001.
---- CircleMUD 3.0 patchlevel 3
+--- CircleMUD 3.1
-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.
+11/19/2002
-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.
+-- ae - act.informative.c, act.item.c, act.social.c, act.wizard.c, act.other.c,
+ alias.c, castle.c:
+ Began adding descriptions of each SYSERR in comments following
+ the actually log lines in the code. These are marked with a
+ 'SYSERR_DESC:' tag, in the hopes that we can write a program
+ that will automatically collect the log message and descriptive
+ comments and compile a single document containing all of the
+ information.
-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.
+-- ae - alias.c: Changed double log entries (with 'perror()' statements) to
+ put strerror() statements at the end of the single log line
+ rather than on a separate line.
-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.
+12/02/2002
-8/31/94 JE Fixed MIN statement using uninitialized 'water' var in
- spell_create_water. Spotted by JJR.
+-- ae - utils.h: Changed core_dump_real() prototype. If we're going to fully
+ prototype everything else, why isn't this one? Pointed out
+ by Jesper R.jest.l
-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.
+01/06/2003
-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.)
+-- dk - interpreter.c: one_word() no longer ignores fill words, which caused
+ some keywords to be ignored in help file loading (the only
+ thing this function is used for in stock). Run into by
+ Thomas Arp .
-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. :)
+01/15/2003
-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.
+-- gg - comm.c: free_bufpool(); mail.c: free_mail_index(): New.
+ Idea (not code) from Thomas Arp
-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.
+-- gg - db.c: destroy_db(): Don't leak memory from followers list.
+ Only matters (briefly) when using 'shutdown' command.
-8/31/94 JE CHA added to display when rerolling a character.
+-- gg - house.c: hcontrol_list_houses(): Correct a sizeof() in strlcpy().
-8/31/94 JE Changed TOUNGE to TONGUE throughout.
+03/31/2003
-8/31/94 JE Made the '*' (ignore) case in zone reset tables (used for
- invalid vnums) set last_cmd = 0 for proper resetting.
+-- ae - act.movement.c: do_rest() had people going into the SITTING position
+ if they had a previously undefined position. Discovered by
+ Thomas Arp .
-8/31/94 JE Enhanced (added?) NeXT compatibility with FOPEN_MAX, my_signal,
- and O_NDELAY.
+04/09/2003
-8/31/94 JE Changed boards back to listing lowest to highest since people
- seemed to hate it the other way.
+-- ae - boards.c: Board_clear_board() has a memory clearing "bug" that can
+ cause issue on some systems. Found by Burkhard Knopf
+
-8/31/94 JE Added sanity checks to perform_move since king_welmar seems
- to cause crashes when he's moving on occasion, and I'd rather
- remove that area than try to debug it.
+04/19/2003
-8/31/94 JE Changed 'SEC' to 'RL_SEC' in structs.h to avoid conflicts
- with many OS's #defines of SEC
+-- ae - 25.obj, 120.obj, 72.wld: some typos fixed courtesy of Ken Ray
+
-9/1/94 JE Good God, is it September already?
+05/29/2003
-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 ) 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
-
-2/22/95 JE change RLIMIT code for systems that don't have RLIMIT_INFINITY
- reported by Steven Serocki
-
-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
-
-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
-
-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
-
-3/9/95 JE "set class" output corrected.
- Spotted by Ryan Baker .
-
-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 poisoned 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-invisibility 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 utilities that no longer exist).
- Found by Jared McDonald
-
-5/23/95 JE Released patchlevel 8.
-
-
---- Patchlevel 9
-
-(No dates on this patchlevel... sorry!)
--- Made Circle self-configuring using the GNU 'autoconf' package; created
- new header files conf.h and sysdep.h. Most standard library files are
- now conditionally included from sysdep.h and have been removed from the
- .c files. -lsocket/-lnsl libraries are automatically used if needed.
- Circle's built-in 'random' function is used only if there is no random()
- on the system.. many other autoconfigured aspects as well.
-
--- Rewrote much of the code for the login/load sequence to prevent duping.
- Duping should hopefully be impossible now. Fixed the dumb bug that allowed
- people to cut off players by logging in and out without a password.
-
--- Added 20 second limit to entering a password before you're cut off.
-
--- Fixed the braindead way LOADROOM works. Syntax is now simply "set ras
- loadroom " or "set ras loadroom off". Loadroom now properly set
- when someone quits out of their house, so they go back there by default.
-
--- Truncate message board titles to 80 characters or less - fixes a crash
- bug.
-
--- Changed tunnels so that they are "full" only if filled with a PC, not
- just any char.
-
--- Redid the code for setting the minimum levels classes need to be before
- they can use spells and skills, and moved it to class.c. It's now *much*
- easier to add new classes--- stupidly, under the old system, every time
- you added a new class all of the existing spello() calls had to be
- changed! See class.c to see how spell-level setting is done now.
-
--- Fixed the bug which popped up in systems such as FreeBSD which incorrectly
- reported the number of available file descriptors if the number was
- unlimited (RLIM_INFINITY).
-
--- Fixed a bug causing crashes if text files (motd/imotd/news/etc) are empty.
-
--- FINALLY fixed the dumb bug causing the first char (implementor) to log
- in to come in with all stats of 0.
-
--- Changed magic.c so the number of affects a spell can have is not
- arbitrarily limited to 2.
-
--- Immortals can walk past guildguards.
-
--- Fixed up some spells (create water works now).
-
--- Added 'show houses' for Mr. Christopher Epler. :)
-
--- Fixed a small error in one of the comments in boards.c describing how
- to add a new board.
- Found by Stefan Rensing
-
-******** Patchlevel 10 ***************************************************
-
--- Fixed all the (dumb) definitions of str_app, int_app, etc. -- these
- used to be arrays of 36 because a long time ago I stupidly thought those
- arrays had to be extended to the number of levels on the MUD. They have
- been correctly changed to reflect the possible attribute values of
- characters (3-18 for PCs, 3-25 for NPCs and Gods).
-
--- Added Michael Buselli's patches for an enhanced "more" pager that lets
- you go back, forward, refresh, etc. Nice work, Michael.
-
--- Made Circle compile under HP/UX with the help of Ben Denckla (required
- an #ifdef for RLIM_INFINITY). Made some other fixes to get_max_descs()
- in comm.c as well. I hate this function.
-
--- Removed the REUSEPORT setsockopt() call from comm.c when opening the
- mother connection. This never made any sense in the first place since
- REUSEPORT is a UDP and not a TCP thing, plus it broke Circle under IRIX
- 5.3+.
-
--- Incorporated David Carver's OS/2 patches. Circle should now compile
- under OS/2 more or less out of the box (instructions included).
-
--- Added error checking to number() in case its called with the arguments
- backwards.
-
--- Added the skill_name() function to safely resolve spell numbers to
- spell or skill names. Now used to stat potions, staves, etc.
-
--- Fixed the but in the usage of is_abbrev in find_skill_num that prevented
- spell names from being abbreviated. Reported by numerous people.
-
--- Fixed a bug which prevented mag_materials() from working at all (although
- it isn't used in standard Circle code, anyway.)
-
--- Changed a str_cmp to isname in the FIND_OBJ_EQUIP case of generic_find()
- in handler.c for better location of objects.
- Sent by one of our best bugfinding teams, Eric Green and Stefan Wasilewski,
- KEEP IT UP, GUYS! :-)
-
--- Fixed the operation of peaceful rooms so that bash, etc, also don't work.
-
--- Fixed a dumb bug where aliases (which use player_specials) were freed
- *after* player_specials were freed. Reported by numerous people.
-
--- Added values for movement loss for flying and underwater sector types.
-
--- Bug fixed in do_set which made the PC/NPC checks not work.
-
--- Changed backstab multipliers from a table to a formula to make adding
- new levels easier. (Adding new levels is now trivial; you just have to
- change the #defines in structs.h for the LVL_xx constants, and then
- define the titles and exp required for each level in constants.c).
-
--- do_stat_obj (act.wizard.c) updated to reflect building.doc (very old
- bugs lurking in here) -- stat display changed to reflect real meanings
- of values[0] - values[3] of objects.
-
--- do_steal changed to simplify the no-psteal code (psteal simply always
- fails on muds where it is not allowed).
-
--- You can't wake up someone who's dying. (do_wake)
- Patch sent by Lincoln Chan
-
--- Message seen when a door opens from the other side fixed. (do_open)
- Patch sent by Lincoln Chan
-
--- All utilities ported and fixed.
-
--- Some changes to Makefile template Makefile.in
-
--- Help system completely rewritten to use split help files and an
- 'index' file just like the world files; help files are loaded into
- memory entirely instead of keeping file positions and an open file.
- New copy of help files imported from Chris Epler (cepler@cambot.res.jhu.edu)
-
--- Rewrote one_word() in interpreter.c (used to be modify.c) as part of the
- help system rewrite.
-
--- New world/ hierarchy from Furry (furry@cambot.res.jhu.edu)
-
--- New 'messages' file from Furry (furry@cambot.res.jhu.edu)
-
--- New 'configure' script which should detect nsl and socket libraries
- more reliably.
-
--- All scripts rewritten (autorun, automaint, purgeobjs, etc.) to use sh
- instead of csh. They've been fixed, too (most of them were broken because
- they had not been modified since the location of certain files changed).
- Autorun rewrite by Stuart Lamble
-
--- New FAQ by Furry (furry@cambot.res.jhu.edu)
-
-
-******** Patchlevel 11 ***************************************************
-
-
--- Patches to make Circle compile under MSVC++ 4.0 under Windows 95:
- Created a 'conf.h.win' to act as Windows' conf.h. Created a new
- constant, CIRCLE_WINDOWS, to use for #ifdef's. Changed OS2's constant
- from OS2 to CIRCLE_OS2 for consistency.
-
- Changes to some of the types throughout the code (e.g. changing some
- int's to size_t's.
-
- Changed the type of all sockets from int to socket_t; sysdep.h
- typedef's int as being socket_t under UNIX and SOCKET to socket_t
- under Windows.
-
- Changes to some of the code in comm.c (with ifdef's) to account for
- some of the differences between WinSock and Berkeley Sockets.
-
- Wrote a "fake" gettimeofday() function which is an interface to the
- Win32 GetTickCount() and a WinSock-compatible nonblock().
-
- Renamed 'act.obj.c' to 'act.item.c' to defeat an apparent bug in
- MSVC++ that refuses to properly object files that have the word
- "obj" in their name (i.e. act.obj.obj).
-
- Changed the boot-up procedure so that the max player calculation is
- done before socket initialization (this is done so that the max can
- be reduced from the MAX_PLAYERS value in comm.c if WSAStartup() tells
- us we have less than that number of max sockets available.
-
- Created a CLOSE_SOCKET macro: under UNIX, this is #defined as
- close(); under Windows, it's defined as closesocket.
-
- #defined log(x) as basic_mud_log(x) to prevent namespace collision
- with the mathematical log() function.
-
--- Various fixes to the 'configure' script:
- The '-lsocket' library should hopefully be detected more reliably
- (by detecting -lnsl first; some systems need -lnsl before -lsocket
- will link successfully).
-
- The -cckr option is given to the compiler if we are not using gcc and
- it is determined that your system's cc can take the -cckr argument.
-
- -fno-strict-prototypes given if we're using gcc (this should hopefully
- alleviate the continuing headache of getting function prototypes to
- work).
-
- Include a prototype for random and srandom if it's determined that
- we're using Circle's random/srandom functions and not libc's.
-
- Check for the presence of arpa/telnet.h, and use our own local copy
- (telnet.h is now included with the Circle distribution) if it does
- not exist.
-
- Check for sys/types.h before including it.
-
- Configure recreated with GNU autoconf v2.9 (previously was 2.7).
-
--- Made some fixes to the autorun script: most notably, it was not passing
- command-line parameters to the MUD, meaning that you had to change the
- port in config.c in order for it to be changed if you were using autorun.
- This means that port-number changing now works the way it was documented
- (autorun setting takes precedence over config.c).
-
--- Made some changes to conf.h.os2 to reflect the new configure script and
- the changing of the constant from OS2 to CIRCLE_OS2.
-
--- Moved heartbeat functions out of game_loop and into their own function
- which is called by game_loop (seems more logical this way to me).
-
--- game_loop, comm.c: The code which controls the tick-timing was rewritten;
- the timer is now much more accurate (does not drift with time), and
- gracefully handles making up for lost ticks if the MUD is suspended for
- more than a single tick-length (e.g. if the scheduler keeps it waiting
- for a long time under heavy load). Added a 'timeadd' function to add
- two timevals for use with the calculations.
-
--- Added a timeout to the "What is your name?" prompt; should prevent denial
- of service attacks whereby people use up all available descriptors by
- repeatedly telnetting into the game and staying idle. (Though I have not
- received reports of this happening, I'm sure someone has thought of it.)
-
--- Fixed various typos in the code, help files, and libraries.
-
--- do_advance, act.wizard.c: Does not allow someone to be advanced to the
- level they already are.
-
--- invalid_name, ban.c: Changed the buffer size from MAX_NAME_LENGTH to
- MAX_INPUT_LENGTH; was causing crashes when very long names were given.
-
--- Fixed look_in_obj, act.informative.c, to prevent crashes when looking into
- fountains or cups with invalid values.
-
--- Changed the semantics of top_of_helpt so that it points to the top element,
- not the number of elements, in the help table (done to be consistent with
- the other top_of_xxx variables). Fixed do_help in act.informative.c to
- prevent crashes if "help zzzzzz" is typed.
-
--- Reshuffled the position of alias freeing in free_char yet again (I think
- I've finally gotten this one right).
-
--- handler.c, affect_from_char(): Changed the list traversal over to the
- classic method used when traversing a list and deleting items as we go
- (i.e. keeping around a temp variable with hjp->next). (This bug was found
- courtesy of Win95's completely unforgiving memory manager.. unlike most
- UNIX memory managers, it causes crashes if you try to use memory that
- was just freed.... Win95 is almost as good as Electric Fence! :-))
-
--- handler.c, extract_char(): Changed "if (ch->desc != NULL)" to
- "if (!freed && ch->desc != NULL)" because ch was potentially freed in the
- previous statement. (This bug was also found by Win 95...)
-
--- limits.c, point_update(): gain_condition called first rather than last;
- causes crashes when gain_condition() is called on a character that has just
- bled to death (i.e. killed by point_update()). (This bug was also found
- by Win 95...)
-
--- Some similar cases of structures being used after they were freed in
- shop.c fixed (found by Win95...)
-
--- Fixed the pet shops so pets are no longer priced at 0 coins; pet prices
- are now 300 coins times the level of the pet.
-
--- spell_parser.c, get_skillname(): If the skill is -1, return UNUSED instead
- of UNDEFINED (makes stat and scroll of identify output look better).
-
--- Added more sanity checks to spell_parser.c (spell_level() and cast_spell())
- to prevent crashes if scrolls are created with wild spell numbers.
-
--- spell_parser.c, spello() and unused_spell(): Changed to use a loop
- instead of enumerating all classes; should make adding new classes easier.
-
--- spells.h: Changed types of mana_{min,max,change} to int to correctly handle
- spells which take large mana requirements.
-
--- handler.c, generic_find(): Silly bug introduced in pl10 fixed whereby
- you can't look in objects if you are equipped.
-
--- mail.h: Changed a '1' to a 'sizeof(char)' in the MudMail system (caused
- assertion failures on architectures where sizeof(char) != 1)
-
--- utils.c, sprinttype(): Cleaned up the code. Looked silly before.
-
--- Fixes to autowiz.c: Added an fflush() at the end so that wizlists are
- correctly updated. Also removed some old bzero() calls that were still
- lurking from the old days (modern SYSV systems don't like bzero() at all.)
- Took out the SO_REUSEPORT socket option.
-
--- Fixed wld2html.c: The parser code was quite old and could not handle
- the 3.0 world files with ASCII bitvectors. wld2html now works correctly.
-
--- Changed "++col" to "col++" in Michael Buselli's pager code (patch sent by
- him).
-
--- Brought in the new world files and 'messages' file from Furry (scrolls
- of identify and the 'harm' spell now work) and new help files from
- Chris Epler.
-
--- Took out the very old bug, typo, and idea files from the standard
- distribution.
-
-
-******** Patchlevel 12 ***************************************************
-
--- I changed the logic of prompt generation so that prompts are generated
- as plain output, the same as all other output (e.g. using send_to_char()),
- specifically so that both the regular output and the player's new prompt
- can be written to the operating system using a single write() system call.
- In many cases, this cuts in half the number of TCP packets generated
- and received! This is a big win for slow machines and machines with
- slow Internet links (e.g. a modem)!
-
-
-To illustrate this point, I'll show typical TCP exchanges between MUD
-clients and servers under pl11 vs. pl12. These exchanges were all
-recorded using Van Jacobson's tcpdump tool, which can be downloaded from
-ftp.ee.lbl.gov. The window advertisements have been removed from the
-output to make it more readable.
-
-Here's a typical packet exchange between a MUD client and server under
-pl11 when a player enters a command (in this case, "look"):
-
-16:17:35.287187 client.32877 > mudserver.4000: P 41:47(6) ack 2579
-16:17:35.333721 mudserver.4000 > client.32877: . ack 47
-16:17:35.334197 mudserver.4000 > client.32877: P 2579:3132(553) ack 47
-16:17:35.376089 client.32877 > mudserver.4000: . ack 3132 win 8760 (DF)
-16:17:35.376162 mudserver.4000 > client.32877: P 3132:3134(2) ack 47
-16:17:35.426039 client.32877 > mudserver.4000: . ack 3134
-
-The first packet is the 6-byte command, "look\r\n", sent from client to
-server. The second packet is the server's TCP acknowledgement (ACK) of
-those 6 bytes. The third packet is the 553-byte output of the command
-"look" sent from server to client. The fourth packet is the client's TCP
-ACK of those 553 bytes. The fifth and sixth packets are the 2-byte prompt
-sent from server to client followed by the client's TCP ACK.
-
-Note that the second and third packets are often compressed into a single
-packet, if the MUD happens to service that player before the server TCP
-stack's delayed ACK timer expires.
-
-This is a much bigger waste of resources than you might expect; keep in
-mind that each of these packets usually carry at least 40 bytes worth of
-overhead, and IP packet processing is typically takes a lot of CPU time.
-
-Here's the same exchange under pl12:
-
-16:20:15.445465 client.32878 > mudserver.4000: P 29:35(6) ack 2016
-16:20:15.492610 mudserver.4000 > client.32878: . ack 35
-16:20:15.504223 mudserver.4000 > client.32878: P 2016:2571(555) ack 35
-16:20:15.549806 client.32878 > mudserver.4000: . ack 2571
-
-The same exchange now requires only 4 packets instead of 6. (Or, if we
-service the client before the delayed ACK timer expires, we could do it in
-3 packets.) Note that the third packet is now both the 553-byte output of
-"look" *and* the 2-byte prompt. This causes only a single TCP ACK from
-the client, instead of two ACKs as in the previous example.
-
-Here's a typical round of combat under pl11:
-
-16:19:02.673794 mudserver.4000 > client.32875: P 4976:5067(91) ack 120
-16:19:02.717357 client.32875 > mudserver.4000: . ack 5067
-16:19:02.717409 mudserver.4000 > client.32875: P 5067:5069(2) ack 120
-16:19:02.767418 client.32875 > mudserver.4000: . ack 5069
-
-The first packet is the combat message (e.g., "The beastly fido hits you
-very hard.") The second packet is the client's TCP ACK of those bytes.
-The third and fourth packets are the 2-byte prompt and its ACK.
-
-Under pl12:
-
-16:21:33.572363 mudserver.4000 > client.32876: P 8418:8505(87) ack 131
-16:21:33.620336 client.32876 > mudserver.4000: . ack 8505
-
-Each round of combat is reported using only a single TCP packet, which in
-turn elicits only a single ACK from the client. The exchange requires
-only 2 packets instead of 4. If you have a large MUD, where many players
-might simultaneously be in combat, the savings can be very significant.
-MUDs with slow links or slow CPUs will probably benefit the most from this
-change.
-
-
--- comm.c, and structs.h, various functions: replaced the "prompt_mode"
- variable with the less obfuscated "has_prompt", which has the opposite
- meaning.
-
--- mobact.c:mobile_activity() - What a terrible bug!! Mob spec-procs
- were never called if the mob was fighting or asleep. The mayor would
- never wake up, but more importantly, mobs with special specprocs for
- fighting (e.g. mobs that use magic during battle) were never getting
- called. The check for FIGHTING and !AWAKE has been moved to after
- the specproc calls but before the mob default actions.
- Found by realm@styx.ph.msstate.edu.
-
--- act.offensive.c:do_flee() - Added check to make sure you're at least in
- POS_FIGHTING (not injured) to flee; necessary because wimpy calls
- do_flee() directly and doesn't go through the interpreter.
-
--- spells.c:spell_summon() - Changed so that a MOB_NOSUMMON flag prevents
- mobs from being summoned instead of MON_NOCHARM. Found by Daniel
- Burke.
-
--- magic.c:mag_affects() - Changed the protection against re-affecting
- affected mobs to check all possible spell affects instead of only the
- first two (an oversight from when mag_affects was changed from 2
- affects to an arbitrary number). Found by Daniel Burke.
-
--- shop.c, shop.h: Moved 3 arrays from shop.h to shop.c so that shop.h can be
- multiply included if necessary. Suggested by Anil Mahajan.
-
--- act.wizard.c:do_advance(): Changed to show the diminishment message to
- the victim instead of the imp. Found by glennmc@ccsi.com.
-
--- act.wizard.c:do_stat_character(): Added error checking to aff->type
- array indexing to prevent crashes. Suggested by Anil Mahajan.
-
--- act.offensive.c:check_killer(): Using 'murder' automatically sets your
- KILLER flag (if pk is not allowed), even if you miss the first hit.
- Suggested by Alex Fletcher .
-
--- magic.c:mag_points(): Added update_pos to the end to correctly upgrade
- (or downgrade) the position of your victim after healing. Found by
- Johan Dustler.
-
--- act.wizard.c:do_set(): Broke this monster into two functions, which
- makes it easier to read and plugs the 'set file' memory leak.
-
--- spells.c:create_water(): Only remove the name from the drink container
- if it wasn't previously empty. Prevents permanent keywords from being
- removed. Found by Eric Green.
-
--- fight.c:group_gain(): Made the max possible exp gain when killing
- a player equal to 2/3 the max_exp_loss. This prevents illegal exp
- creation on pk muds. Found by Apua Cesar de Miranda Paquola
- and Dirani (spharion@dcc.unicamp.br).
-
--- fight.c:damage(): Cleaned up code, fixed similar bug to prevent
- exp gain by bleeding to death.
-
- CHANGED: You no longer gain xp when you're damaging yourself.
-
--- shop.h; shop.c:trade_with(): Clarified the error message given to
- people attempting to sell a worthless item to a shop. Submitted by
- Chris Epler .
-
--- act.wizard.c, do_dc(): If you try to disconnect a God you can't see,
- you are given "No such connection" to hide the presence of the God.
- Suggested by Fred Herbert .
-
--- act.wizard.c, do_gecho(): Added delete_doubledollar() to prevent
- $$'s on gechos. Suggested by Jestyr Saaven .
-
--- act.wizard.c, do_show(): Changed 'show godrooms' to traverse the world
- print rooms marked GODROOM instead of printing rooms in a particular zone
- number. Suggested by Jestyr Saaven .
-
--- act.wizard.c, do_stat_room(): Changed to display the zone's vnum, not
- rnum. Found by Jay Vanderwood
-
--- Tried to use the typedefs mob_rnum, mob_vnum, room_rnum, room_vnum,
- obj_rnum and obj_vnum consistently throughout the code. Don't know
- if I found them all, but here's hoping...
-
--- fight.c:damage() - Added die() after an "attempt to damage a corpse",
- so if someone does manage to get into the POS_DEAD state, they'll
- die for real. Suggested by root .
-
--- ban.c:Read_Invalid_List() - Changed so that names are read with one
- pass through the file instead of two.
-
--- act.item.c:perform_drop_gold() - Changed hide_invis from FALSE to TRUE
- on act() so room observers cannot see invis people dropping gold; changed
- to be consistent with item dropping which already works this way.
- Suggested by Chris Epler
-
--- fight.c:damage() - Changed handling of AFF_SANCTUARY so that damage
- is only cut in half if it is 2 or more (i.e. to prevent 1 from turning
- into 0). Indirectly suggested by dodger@WPI.EDU (DoDGeR) who reported:
- "If you bash a sanct'ed mob, you always see the failure message because
- the sanct turns the damage from 1 to 0 and that tells skill_message to
- print the miss message."
-
--- autorun.pl: Made part of the standard distribution (Perl version of
- autorun), by D. Hall of Vi'Rage Studios
-
--- Updated FAQ and PORTING documents
-
--- Made many changes to configure.in and regenerated 'configure' script
- with most recent version of autoconf (2.12). configure now checks
- which libc functions and system calls are correctly prototyped, and
- only prototypes those functions that aren't. Also, it doesn't include
- the malloc, nsl, socket, and crypt libraries unless those functions
- are missing from libc. This solves problems that autoconf was having
- with IRIX, where it would use lsocket and lnsl, unnecessarily generating
- linker warnings when those libraries would shadow libc functions. On
- the other hand, this will cause a problem on OS's where a dummy
- crypt() is shadowed by a real crypt in libcrypt. Future releases may
- check crypt() to see if it actually works.
-
--- constants.c: changed experience and title tables to be functions
- returning values instead of arrays, to avoid crashes when newbie imps
- try to add levels by changing the LVL_xx constants without extending
- the arrays appropriately. SYSERR message is generated to indicate
- incorrectly set up xp tables.
-
--- comm.c, various functions - Made some changes to make porting to other
- platforms easier; introduced the CIRCLE_UNIX constant.
-
--- db.c, various functions: tried to make the parser a bit better at
- reporting error messages (and not crashing.. ugh.)
-
--- Various files: replaced ">> 2" with "/ 4". I can be a real idiot
- sometimes.
-
--- Added preliminary Amiga support with the help of Jack Patton and
- Steffen Haeuser.
-
--- act.wizard.c:do_dc() and structs.h:descriptor_data -- Added a
- "close_me" flag to descriptor_data that dc uses to indicate a descriptor
- should be killed off; just having dc() call close_socket() crashes if
- you're disconnecting the person below you in the descriptor list.
-
--- The script I use to pack up Circle into a tar and zip file was changed
- to add token files to all empty directories to work around buggy unzip
- programs that don't bother creating empty directories.
-
--- act.other.c:do_display(): Now complains about unknown arguments.
-
--- act.wizard.c:do_shutdown(); db.h: Added the constants FASTBOOT_FILE,
- KILLSCRIPT_FILE, and PAUSE_FILE to the header file, and used them
- instead of the literals in the code.
-
--- olc.c:do_olc(): Fixed the warning given by gcc. Just FYI, (for whoever
- "Y"ou are), I left that warning in on purpose, sort of as a subtle
- reminder that OLC is not done. However I finally decided to change it
- after the 10,000th "bug report".
-
--- Gave the utilities their own Makefile (Makefile.in, actually; Makefile
- is generated by configure)
-
-******** Patchlevel 13 ***************************************************
-
-11/4/97
-
--- gg - magic.c: mag_summons(): Fixed animate dead and clone.
- spell_parser.c:mag_assign_spells(): Added animate dead.
- utils.h:IS_CORPSE(): Defined.
-
--- gg - spec_assign.c:ASSIGNMOB(): Changed the redundant real_mobile() call.
-
--- gg - mail.c:write_to_file(): Fixed problem where mail file would be left
- open if the filepos was not a multiple of BLOCK_SIZE.
-
--- gg - castle.c:assign_kings_castle(): Fixed a memory problem where we
- would be writing to mob_index[-1].func if a mobile did not exist.
- This is most noticeable in mini-mud mode.
-
--- gg - utils.h:CAN_SEE_OBJ(): Fixed loophole where lower immortals can
- 'stat' items of invisible immortals and see their name if they are
- online. This also follows the line of thinking that if you can't
- see the person, you can't see the objects they have either. Also
- fixes doing a 'where' on objects to see if a 'someone' shows up
- to detect higher level invisible immortals. Reported on the
- CircleMUD mailing list.
-
--- gg - interpreter.c:one_argument(): Can now handle a NULL pointer.
-
--- gg - handler.c:obj_to_char()/obj_from_char(): Do not set the PLR_CRASH
- flag on mobiles or they are flagged MOB_STAYZONE when given objects.
- Reported on the CircleMUD mailing list.
-
--- gg - mudpasswd.c/showplay.c/purgeplay.c: Abort if the pfile is a different
- size than we expect, as per the main mud code.
-
--- gg - act.comm.c:is_tell_ok(): Added.
- act.comm.c:ACMD(do_reply)/ACMD(do_tell): Modified to use is_tell_ok()
- to prevent replies while writing or to PRF_NOTELL people.
-
--- gg - graph.c:ACMD(do_track): Don't bother to find_first_step() if the
- player failed their track skill anyway. This avoids removing the
- ROOM_BFS mark from every room and searching for the victim even if
- they will not be successful later.
-
--- gg - utils.c:get_line(): Set the buffer to NULL if there wasn't anything
- read in. Fixes a problem reported by Andrew Helm .
-
--- gg - mail.c: Changed 'return 0;' to 'return NULL;' where appropriate.
- mail.c: Changed 'no_mail = 1;' to 'no_mail = TRUE;'.
-
--- gg - act.movement.c:ACMD(do_move): Allow changing the position of the
- movement commands. Only do this if you do not use the guildguard
- special procedure or anything else with IS_MOVE() because they
- will break, badly.
-
--- gg - interpreter.h:IS_MOVE: Had hard coded directions, fixed.
- This is still broken with regard to moving the directions around.
-
--- gg - everything: Replace IS_SET macro with appropriate xxx_FLAGGED ones.
- Also introduced OBJVAL/OBJWEAR/EXIT _FLAGGED macros.
-
--- gg - utils.c:log()/mudlog(): Removed day of week as it is unnecessary.
-
--- gg - spec_procs.c/limits.c: Changed to use IS_CORPSE().
-
--- gg - act.item.c:perform_remove(): Can no longer remove cursed equipment.
-
--- gg - comm.c:main(): Initialize dummy_mob to all 0's just in case...
-
-11/5/97
-
--- gg - everything: Now has a customizable logging file for people using
- Windows 95. The default is still to standard error, see config.c
- to change it to a file.
-
--- gg - config.c/limits.c: New variables, idle_time_rent, idle_max_level,
- and idle_void for customizable timeout renting. Suggested by
- Rasdan .
-
--- gg - everything: Seek and destroy mission for << and >> where it should
- logically be * and / (ie: Not doing bitvector work).
-
--- gg - handler.c:affect_modify(): A suggestion for class and level added.
-
--- gg - everything: Made language C++ friendly. Also adjusted 'const'
- keywords in constants.c for correct linking.
-
--- gg - interpreter.c: Removed old 'extern ... titles[]'.
-
--- gg - class.c/magic.c:saving_throws[][][]: Moved to class.c.
-
-11/14/97
-
--- gg - Changed all \n\r to \r\n to abide by the telnet specification.
- (Original patch by John Evans.)
-
-11/16/97
-
--- gg - comm.c: touch() and remove() KILLSCRIPT_FILE to prevent the
- problem with many CircleMUD instances trying to run over and
- over and over and over...
-
-11/18/96
-
--- gg - Merged in preliminary Macintosh support by Dean Takemori
- (dean@uhheph.phys.hawaii.edu)
-
--- gg - comm.c: A large number of the system dependent includes are
- already accessible via HAVE_blah_blah defines in sysdep.h so
- I have commented them out for possible removal later to make
- things look much less complicated. If things break due to
- this, fix the conf.h file for that OS.
-
--- gg - comm.c: set_sndbuf(): Fixed undefined reference problem by
- moving the #if...#endif inside the function which will
- reduce to 'return 0;' if we don't need the function.
-
--- gg - comm.c: process_output()/write_to_descriptor(): These
- functions are really ugly. Is there a EAGAIN in Macintosh?
- If not, we could #define EAGAIN to EDEADLK for Macintosh and
- use the existing Unix code...
-
--- gg - Forgot to include the ! history patch but I updated the
- TODO list a few days ago anyway...duh.
-
--- gg - class.c: Saving throws are now a function just like experience.
-
--- gg - class.c: Thaco chart is now a function also.
-
-11/19/97
-
--- gg - interpreter.h: IS_MOVE(): Fixed, moving directions should now
- theoretically be safe although not tested in practice.
-
-11/21/97
-
--- gg - Changed all those d->connected to STATE(d). Also removed the value
- dependent hack of !d->connected in favor of STATE(d) == CON_PLAYING.
-
-12/18/97
-
--- gg - Changed mudlog() to simply use log() when writing to the log file.
-
--- gg - Makefile: Removed /home/jelson/cxref/ from cxref path. Might I
- recommend 'make cxref' simply create the listing and then a separate
- 'make cxref-install' for updating the Documentation Project page?
- This would be of more use to other people. :)
-
--- gg - Replaced d->close_me hack with CON_DISCONNECT.
-
-12/27/97
-
--- gg - Merged in Borland compiler changes.
- spells.c: Removed non-existent cha_app_type extern.
-
--- gg - sysdep.h: New #define SLASH for directory separator. Will cause
- awful looking paths ("lib"SLASH"etc"SLASH"players") but needed for
- Macintoshes which use a : instead.
-
--- gg - Fixed 'return; break;' pairs pointed out by kingmundi@hotmail.com
-
--- gg - class.c:find_class_bitvector: Fixed a bug where the number constants
- for magic user, warrior, cleric, and thief could be rearranged causing
- the who/users class listing to be wrong.
-
-12/29/97
-
--- gg - db.c:clear_object: worn_on initialized to -1 by suggestion of
- Daniel W. Burke .
-
-12/30/97
-
--- gg - constants.c and elsewhere: Formerly constant structures changed in
- C++ modifications are now back to constant with a 'cpp_extern'
- keyword which is 'extern' in C++ and '' in C. (It gives warnings.)
-
--- gg - objsave.c: Fixed two implicit void * conversions to gen_receptionist.
-
--- gg - comm.c: new_descriptor: 'i' changed to 'unsigned int' because of
- signed warnings.
-
--- gg - act.item.c: do_wear: Initialized 'where' to -1 to avoid spurious
- warnings from g++.
-
--- gg - mail.c: postmaster: Casted 'me' variable to avoid implicit
- conversion from a void * which g++ gripes about.
-
-12/31/97
-
--- gg - utils.c: core_dump_unix: Function to dump a core file on UNIX platforms
- but continue to run the MUD. Basic idea from Erwin S. Andreasen.
-
-1/4/98
-
--- gg - utils.h: GET_ROOM_VNUM: New macro to retrieve the vnum of a player
- without worrying about accessing world[-1].number or messy ?: code.
- We should do this for the rest of the room_data variables.
-
--- gg - Added variable argument log() function and fixed up quite a few
- log statements to take advantage of the new flexibility.
-
--- gg - db.c mostly: Since we have a variable argument log() function now, all
- those fprintf's can go away.
-
--- gg - structs.h: Added new #define for CircleMUD version to make it easier
- for add-on packages to be used with a variety of CircleMUD patchlevels.
-
--- gg - Added lots of 'extern int top_of_world;' around to compensate for
- GET_ROOM_VNUM macro doing bounds checking.
-
--- gg - utils.c: number: Added message if someone uses it wrong.
-
--- gg - comm.c: process_input: Fixed a minor annoyance in that using '! x'
- didn't make that your new default '!' command.
-
--- gg - Fixed some 'exit(0);' statements which should be 'exit(1);'
-
-1/5/98
-
--- gg - utils.c: Forgot to __attribute__ basic_mud_log() for type-checking.
-
--- gg - sysdep.h: #ifdef for __GNUC__ to eliminate __attribute__ for those
- not using gcc.
-
--- gg - sysdep.h: Oops, forgot to put an argument for __attribute__...
-
-1/13/98
-
--- gg - structs.h: I misspelled CIRCLEMUD_VERSION...duh.
-
--- gg - db.c/utils.h: Removed dummy_mob, saving 324 bytes (at least on i586).
- NOTE: This will cause all sorts of evil things to happen because the
- existing code assumes ch->player_specials exists. It is the most
- effective method of getting rid of the mob hack though.
-
--- gg - utils.h: Could have sworn I already changed IS_AFFECTED->AFF_FLAGGED...
-
--- gg - limits.c: Inconsistent mob regeneration changed to take poison into
- account for all cases (h/m/v).
-
--- gg - limits.c/act.item.c: Mobs can no longer use GET_COND() so drink,
- eat, and regeneration now avoid them. This is actually better.
-
--- gg - utils.h: CAN_SEE macro fixed to not use GET_INVIS_LEVEL on mobs.
-
-1/14/98
-
--- gg - Fixed a bunch of warnings GCC 2.8.0 now emits with -Wall. Those
- include ambiguous 'else' statements (ones that should have { or }
- to distinguish) and when main() doesn't return 'int.'
-
-1/16/98
-
--- gg - interpreter.c/ban.c: nanny()/Valid_Name(): Fixed the long-standing
- Diku bug where you could create two characters with the same name by
- proceeding one step at a time in two different sessions.
-
-1/20/98
-
--- gg - Changed 'restrict' to 'circle_restrict' to fix some problem with
- it being a reserved word for people. (No problems here...)
-
--- gg - testing/: Created for projects of interest to future stock CircleMUDs
- which will eventually be included and may be of interest to others.
- Current project will be semaphore locking...
-
-1/25/98 - Denver beat Green Bay, 13-year football conference reign is over.
-
--- gg - act.wizard.c: do_stat: Chris Jacobson decided that
- the / and % in '/ 3600) % 60' were reversed.
-
--- gg - spells.c: spell_locate_object(): Added a note that the keyword
- handling is broken. Unfortunately the only way to fix it would
- be to enable the passing of strings around the spell parser.
- Spotted by: BOGWALDL@MALA.BC.CA.
-
--- gg - Might as well document this so we can call this a feature. If you
- are using a FreeBSD machine and you are using MD5 passwords then
- any character with a name longer than 5 letters can log in with any
- password. The solution is to either turn off MD5 passwords or
- increase MAX_PWD_LENGTH to 20 (and wipe your pfile in the process).
-
--- gg - act.wizard.c: do_stat(): Last logon not correctly displayed.
- Noticed by Angus Mezick
-
--- gg - spec_procs.c: magic_user(): Andrey Fidrya
- noticed that the special procedure may target people not in the
- same room.
-
-1/26/98
-
--- gg - structs.h: Changed CIRCLEMUD_VERSION to hex to let us (possibly)
- do bitvector work on it later.
-
--- gg - handler.c: unequip_char(): Log message should be 'NOWHERE when
- UNequipping char', previously missing the 'UN'. Reported by
- Akuma/Chris Baggett/DOOMer .
-
-1/28/98
-
--- gg - db.c: clear_char(): ch->nr was not being initialized but many checks
- are based on mobs being 'nr > -1'. This check included PC
- characters where the 'nr' was left 0.
-
--- gg - comm.c: main()/sanity_check()/heartbeat(): Added function to check
- every 30 seconds that a magic number planted during main() is still
- at the end of the buffers buf, buf1, buf2, arg. Also has an
- optional statistics toggle in the function.
-
--- gg - utils.h: Should make the time related #define's configurable, at
- the current time, changing those constants doesn't change the
- functions that read them. (act.informative.c and utils.c)
-
-1/30/98
-
--- gg - structs.h: Fixed 'internel' typo.
-
-2/8/98
-
--- gg - comm.c:1068: warning: passing `unsigned int *' as argument 3 of
- `accept(int, sockaddr *, int *)' changes signedness. This is
- annoying, Linux has it unsigned, Solaris has it signed.
-
--- gg - db.h: Decided the 'SLASH' idea was ugly. Now we have LIB_MISC
- ("misc/"), LIB_ETC ("etc/"), and family. Note that I have only
- tested this on Unix...Macintosh should work but Amiga I need
- some help with.
-
--- gg - utils.c: get_filename(): Removed redundant 'break;'
- Needs 'db.h' now.
-
-2/19/98
-
--- gg - db.c: index_boot(): Fixed a bug with not closing a file.
-
-2/20/98
-
--- gg - mobact.c: remember(): Took John Evans' suggestion to change
- the level check into a PRF_NOHASSLE check. It would be good
- to identify other places this should be changed.
-
--- gg - act.wizard.c/act.informative.c/spells.c/house.c/objsave.c/spec_procs.c
- Fixed hopefully all of the 'sprintf(buf, "%s...", buf, ...);'
- constructs that the Borland C++ compiler does not like.
-
--- gg - act.comm.c: perform_tell(): We cannot get the id number of a mob
- any longer so don't save it for the last tell pointer.
-
--- gg - comm.c: game_loop(): d->wait no longer keeps going negative forever.
-
-2/24/98
-
--- gg - Fixed a bug whereby prompts and aliases crashed while switched.
-
--- gg - comm.c: main(): Print the version in the boot logs.
-
--- gg - utils.h: PLR_FLAGS() and MOB_FLAGS() changed to check for the correct
- user. (ie: PC using PLR_FLAGS and NPC's using MOB_FLAGS).
- db.c: Changed to use REAL_MOB_FLAGS() because we'll get spurious
- warnings before the IS_NPC bit is actually loaded.
-
--- gg - act.comm.c: do_reply(): Mobs cannot use GET_IDNUM().
-
-2/25/98
-
--- gg - act.other.c: do_wimpy(): Mobs cannot use 'wimp_level' variable.
-
--- gg - db.c: 'dummy_mob' reinstated, now with a compile time toggle.
-
--- gg - utils.h: Removed IS_NPC checks from xxx_FLAGGED as they are done
- by xxx_FLAGS now.
-
-2/27/98
-
--- gg - utils.h: We now check for (and gripe about) player specials.
- db.c: dummy_mob now mandatory again, no crashes, and they get fixed.
- db.c: Fixed SET_SKILL ;
- screen.h: Mobs do not use color.
- utils.h: CAN_SEE: Was using PRF_FLAGGED on mobiles.
-
--- gg - spell_parser.c: Cris Jacobin pointed out
- I forgot to add TAR_OBJ_EQUIP to 'remove curse'.
-
--- gg - act.comm.c: do_say(): Mobs don't use PRF_FLAGGED.
-
--- gg - act.wizard.c: do_purge(): Should use CON_CLOSE since there will not
- be a player in the game at the time.
-
--- gg - Makefile.in: utils.c should depend on db.h (LIB_TEXT, LIB_WORLD, etc
- in get_filename)
-
--- gg - db.h: LIB_OBJS changed to SUF_OBJS for 'suffix' since that is what it
- is used as. Also created SUF_TEXT for E-Text system.
-
-2/28/98
-
--- gg - act.wizard.c: do_purge(): Need to NULL the character also.
-
-3/1/98
-
--- gg - limits.c: check_idling(): When we do an extract_char(), we have to
- NULL out the descriptor's character pointer to prevent lossage later
- in close_socket(). We could NULL in free_char() though...
-
--- gg - objsave.c: Crash_listrent(): Rob Baumstark
- reported that large rent files can crash the MUD with a buffer
- overflow.
-
--- gg - objsave.c: Crash_load(): Now counts objects in file for logging.
-
--- gg - act.other.c: do_save(): Explicit 'save' commands by PC's are
- disabled if 'auto_save' is set to YES. This prevents item duplication
- via coordinated saves and system crashes.
-
-3/2/98
-
--- gg - act.informative.c: look_at_room(): Removed (long) cast.
-
--- gg - utils.h: GET_ROOM_VNUM(): Changed to use real number instead of
- character pointer and used throughout the code. Facilitated many
- ch->in_room => IN_ROOM(ch) changes.
-
--- gg - act.movement.c: Needs 'top_of_world' extern now.
-
-3/3/98
-
--- gg - utils.c/elsewhere: core_dump(): Extended to be used instead of
- assert(). Now we'll get core dumps and continue running on Unix
- or log a message and (optionally) continue running elsewhere also.
- Many 'assert()' statements changed to if...core_dump() tests.
-
-3/4/98
-
--- gg - comm.c: make_prompt()/process_output(): Mobs were using PRF_FLAGGED.
- act.informative.c: look_at_room()/do_score(): Ditto.
-
--- gg - graph.c: do_track(): Mobs cannot use 'track' command. If you want
- them to track things, use 'hunt_victim()'.
-
--- gg - modify.c: string_add(): Tilde killing made compile time option
- since I just realized nothing in stock CircleMUD cares. :)
- Feel free to substitute your own method. (such as hide/show_tilde())
-
--- gg - mail.c: General hacking and lots of new comments.
-
--- gg - shop.c: boot_the_shops(): Remove (byte) cast as it was reported to
- cause problems/crashes.
-
--- gg - act.comm.c: is_tell_ok(): Was using PRF_FLAGGED on mobs.
- perform_tell(): Ditto.
-
-3/14/98
-
--- gg - act.offensive.c: do_rescue(): Added a \r\n to the 'only true warriors'
- message as pointed out by Daniel Koepke
-
-3/16/98
-
--- gg - act.comm.c: perform_tell(): Also don't update ID number when a mob tells
- you something.
-
--- gg - db.c: Thought I already added that fclose(index); ....
-
-3/20/98
-
--- gg - limits.c: check_idling(): Doh, ch->desc->character = NULL was in
- the wrong spot. :)
-
--- gg - Used IS_[class] macros throughout. Nitpicked by Edward Glamkowski.
-
--- gg - act.movement.c/graph.c: Check for fighting before and in perform_move().
- Suggested by Angus Mezick.
-
--- gg - Removed 'extern' statements for non-existent variables. Pointed out
- by Chris Powell.
-
--- gg - act.informative.c: do_toggle(): Added a \r\n to end of string as
- suggested by Joachim Pileborg.
-
--- gg - modify.c: show_string(): Use any_one_arg() instead of one_argument
- since we're looking for one letter and don't want to ignore fill
- words if they happen to type it. Suggested by Andrey Fidrya.
-
--- gg - objsave.c: Two places didn't check for bank gold but everywhere else
- does. Pointed out by Andrey Fidrya.
-
--- gg - act.movement.c: do_simple_move(): Mike Schlagenhauf pointed out
- that gods and mortals can walk into godrooms. (>= GRGOD rooms)
-
-3/30/98
-
--- gg - shop.c: ok_damage_shopkeeper(): Julian Fong reported that we could
- potentially reference [-1] if we have a non-prototyped mobile.
-
--- gg - Removed redundant declarations from everything.
-
--- gg - Removed all the nested 'extern' declarations.
-
-4/5/98
-
--- gg - structs.h/utils.h: CIRCLEMUD_VERSION changed to really be hex
- and now has a helper macro VERSION().
-
-5/13/98
-
--- gg - utils.h: Chris Powell correctly pointed out over a month ago
- that CAN_SEE_OBJ_CARRIER should use 'sub' and not 'ch'.
-
-5/27/98
-
--- gg - act.wizard.c: do_set(): Added 'age' to "set."
-
-******** Patchlevel 13a ***************************************************
-
-6/4/98
-
--- gg - shop.c: Extraneous log() statement was missed during sprintf()+log()
- conversions.
-
--- gg - comm.c: reap(): Added to take care of fork() with core_dump_unix().
-
--- gg - utils.h: CHECK_PLAYER_SPECIAL(): Allow it to be toggled off.
-
-******** Patchlevel 14 ***************************************************
-
-6/5/98
-
--- gg - graph.c: do_track(): Might get into infinite loop if in room with
- no exits and skill check failed. Fixed to try 10 times.
-
--- gg - comm.c: Handle the delete key in addition to backspace. Mailed in
- by David A. Goldstein.
-
--- gg - comm.c: In function `act':
- comm.c:1892: warning: declaration of `sleep' shadows global declaration
-
-6/6/98
-
--- gg - spec_procs.c, act.comm.c, just about everything:
- Evaluated 'static' variables and added some 'const.'
-
-6/13/98 (Saturday)
-
--- gg - Added Acorn RiscOS support from Gareth Duncan
- (garethduncan@argonet.co.uk).
-
--- gg - utils.c: mudlog(): Matched prototype and function. The change was
- due to compiler warnings.
-
--- gg - sysdep.h: Removed SLASH from here as it's in db.h already.
-
--- gg - Makefile.in: Added a LIBS variable for command-line override.
-
--- gg - Added prototypes for every function.
-
--- gg - castle.c: Worked around three warnings when using g++.
-
--- gg - db.c: store_to_char(): "When you 'reply' after entering the game
- before anyone tells to you, the reply results in telling to a mob."
- Found by Eric Green and Stefan Wasilewski.
-
--- gg - class.c: init_spell_levels(): 'Poison' spell wasn't assigned.
- Found by Chris Epler
-
--- gg - act.item.c: perform_give_gold(): Fixed the pluralization.
- Found by Alex <3raf7@qlink.queensu.ca>
-
--- gg - Eric Green suggested some buffers needed to
- be larger to handle the possible inputs.
-
--- gg - ban.c/house.c: Cleaned up non-existent file messages.
-
-6/15/98
-
--- gg - act.informative.c: perform_immortal_where(): Patched to prevent
- players from doing a 'where' to see the title of a dark room.
-
-6/16/98
-
--- gg - act.offensive.c: do_bash(): Eric Green (ejg3@cornell.edu) pointed
- out that we could bash someone not in the room and that a failed
- bash still makes the person sit.
-
--- gg - structs.h: Added a notice for FreeBSD users with MD5 passwords.
- Jeremy's autoconf test for the bug will be better, of course.
-
--- gg - constants.c: color_liquid[]: Added a \n for sprinttype.
-
--- gg - act.other.c: do_save(): Cleaned up comments and now gives message
- if auto_save is enabled.
-
--- gg - handler.c: char_to_room(): Fixed a long standing bug that people
- are still considered fighting until the next violence pulse when
- they leave the room. Most visible when trying to goto and walk.
-
--- gg - fight.c: damage(): Clay Hardin (clay@accessus.net) reported that
- some people can autoflee with negative hit points. Fixed.
-
--- gg - act.wizard.c: do_set(): Fixed to not attempt char_from_room()
- on player in NOWHERE on advice of Eric Green.
-
--- gg - comm.c: close_socket(): Fix a memory leak if a person writing a
- note is disconnected, also by Eric Green.
-
--- gg - mail.c: read_delete(): Fixed to not cause a crash on dumb sprintf()'s
- that crash on a NULL pointer. From: Krautz Thomas
-
-
--- gg - magic.c: mag_unaffects(): Don't output 'no effect' message when
- casting heal due to blindness unaffect.
- spell_parser.c: mag_assign_spells(): Heal isn't an affect spell.
-
--- gg - comm.c: Borland and Microsoft use different headers. (Joy!)
-
--- gg - class.c: Added support for 'siteok_everyone' flag.
- config.c: Added 'siteok_everyone' flag, see config.c for explanation.
-
--- gg - act.wizard.c: do_stat_object(): Comment on basis of invisibility.
- interpreter.c: perform_dupe_check(): Comment on things to do.
- utils.h: CAN_SEE_OBJ_CARRIER(): Close up final loophole.
-
--- gg - spec_procs.c: Remove unused 'struct social_type'
-
--- gg - interpreter.c: nanny(): Fixed final loophole in player duplication.
-
--- gg - act.offensive.c: do_flee(): Here's a great bug, no one _ever_ lost
- experience for fleeing because they stopped fighting before the
- check to see if they were fighting...
-
--- gg - act.offensive.c: Remove restriction of CLASS_WARRIOR from skills.
- Now depends only on if they have the skill or not.
-
--- gg - act.offensive.c: do_assist(): Hit the enemy the person you're
- helping is, not the first person in the list.
-
--- gg - act.movement.c: find_door(): Fixed a hard-coded "close" in message.
-
--- gg - act.offensive.c: do_bash(): Fixed the 'bash-in-peaceful-room' bug.
- act.other.c: do_steal(): Similiar bug here.
-
--- gg - act.item.c: find_eq_pos(): \n added to prevent explicit wearing
- on reserved spots.
-
--- gg - Enabled the 'teleport' spell.
-
--- gg - spell_parser.c: mag_assign_spells(): 'clone' is self-only.
- The flags were previously contradictory.
-
--- gg - utils.h: GET_MOB_SPEC(): Fixed the () order.
-
--- gg - Removed unreachable code in various files.
-
-6/18/98
-
--- gg - Check out the bug archive. http://bugs.circlemud.org
-
--- gg - Fixed up all of the 'aggregate return' warnings.
-
--- gg - modify.c: show_string(): Anil Mahajan
- spotted a potential (but unlikely) buffer overflow.
-
-6/20/98
-
--- gg - boards.c: Cleaned up malloc() calls into CREATE(). Created a
- sort ordering define, defaulting to the historic order. Fixed
- bug #19 from Julian Fong.
- utils.c: core_dump(): Assorted cleanups, combining core_dump_unix()
- and core_dump_other() into one function.
- sysdep.h: Updated systems for core_dump_() cleanup.
- utils.h: Updated core_dump() prototypes.
-
-6/21/98
-
--- gg - boards.c: Fixed printing. Created House_list_guests() since
- code was duplicated in two places.
-
--- gg - act.offensive.c: do_kick(): Same check to make sure the person is
- still in the room as do_bash now has.
-
--- gg - Fixed even more sprintf(buf, "%s ...", buf, ...) constructs.
-
--- gg - damage() changed to return an integer so we know if the target was
- hit, if they died, or how hard they were actually hit.
-
--- gg - boards.c: Board_display_msg(): Fixed 'read 2.mail' bug when in
- front of a board.
-
--- gg - boards.c: Revamped code to pass around the board's obj_data pointer.
- Now allows boards to be referred to as other things. Suggested by
- Andrew Hynek Also made 'truncate to 80' comment
- fit the code. (0-79 = 80, so 80 should be NUL, not 81.)
-
--- gg - db.c: boot_db(): House loading moved to before zone reset so the
- object limits work correctly.
-
--- gg - act.wizard.c: do_show() extended to use page_string().
-
--- gg - cnf/configure.in: Added 'less' and 'most' to pager search.
- A brief 'autoconf tutorial' pointer would be appreciated.
-
--- gg - db.c: Fixed the '2 aliases per help record' bug. See the file
- for credit information. Also added an 'informative' log about
- the number and size of data structures created sans strings. I
- do note that the numbers don't agree with the 'show stats.'
- Perhaps a deeper investigation is in order...
-
--- gg - config.c/act.wizard.c: New variable 'load_into_inventory'.
- You should be able to guess what it does.
-
-=======
-6/29/98
-
--- JE - README.*, doc/README.*: Documentation updated. README file
- was cleaned up; compilation instructions for all platforms were
- moved into a README.XXX file in the doc directory. The old
- README.WIN, which actually had instructions for MSVC, was renamed
- README.MSVC. README.GNU-WIN32 was added from David Goldstein.
- README.WIN now simply directs people to look into one of those
- files. README.MAC is still missing.
-
--- JE - ChangeLog: Fixed a small error in an earlier ChangeLog
- entry that described pl12 improvements in networking code.
-
--- JE - src/[mM]akefile.bcc - Changed name from makefile.bcc to
- Makefile.bcc to match the other Makefiles.
-
--- JE - cnf/configure.in - Changed to add -Wno-char-subscripts to the
- gcc command-line if we're using gcc and gcc recognizes the option.
- The newer GCCs complain about the standard library's islower(),
- isupper(), etc., on some machines, such as Solaris.
-
--- JE - src/comm.c, cnf/configure.in, src/sysdep.h - Changed autoconf to
- detect whether we have inet_aton and/or inet_addr; added prototypes
- for those functions in sysdep.h if we have the functions and they're
- not prototyped; and added support in comm.c to bind to a specific
- IP address (instead of all IP addresses) on a multihomed host.
-
--- JE - src/db.c: Improved parsing of database files and added more
- meaningful error reporting in some places.
-
--- JE - cnf/configure.in, src/comm.c, src/sysdep.h: Added arpa/inet.h to the
- list of header files we check for and include.
-
--- JE - src/comm.c: Removed "#ifdef SO_SNDBUF" where it wasn't needed.
-
--- JE - cnf/configure.in: Fixed a longstanding bug in the -cckr detection,
- and a similar bug in the recently added -Wno-char-subscripts
- detection; the flags would not be set correctly if configure
- was ever rerun (i.e., if values were read from the cache).
-
-6/30/98
-
--- JE - cnf/configure.in, configure: We now only use -Wno-char-subscripts
- if we are using gcc, we get warnings without it, and gcc accepts it.
- Bug #73 in bug database.
-
--- JE - src/comm.c: Fixed a bug in IP address binding - we need to clear
- the sockaddr_in structure with memset() before using it.
-
--- JE - src/comm.c, src/sysdep.h, cnf/configure.in, configure: Changed
- the code in comm.c to use inet_ntoa() for changing numeric IP
- addresses into ASCII instead of printing it manually using
- shifts and sprintf(). Changed autoconf scripts to detect
- whether or not inet_ntoa() needs to be prototyped.
-
--- gg - comm.c: write_to_descriptor(): Cleaned up various platform support.
- comm.c: Removed headers commented out in bpl13.
- comm.c: process_input(): General platform cleanup.
-
--- gg - comm.c: write_to_descriptor(): Jeremy made something up for this
- also which I like better. I've tweaked my previous process_input()
- changes to fit the same idea, but they were pretty close already.
-
--- JE - cnf/configure.in - Removed the -cckr check from configure because
- it seems to break compilation on IRIX's cc (bundled) compiler,
- which is what it was put in to fix many years ago.
-
--- JE - src/comm.c - Broke up write_to_descriptor() into two functions
- so that platform-dependent pieces would be isolated.
-
-7/1/98
-
--- JE - src/comm.c - Further bug fixes in socket handling code.
-
--- JE - src/conf.h.*, src/Makefile.win, src/sysdep.h, src/comm.c,
- doc/README.MSVC -- I updated Win 95/NT compatibility. The idea
- now is that *all* Windows-based compilers (MSVC, Borland, and
- Watcom) should share the same conf.h.win, but they each have their
- own Makefile. The CIRCLE_MSVC and CIRCLE_BORLAND constants were
- removed in favor of a single CIRCLE_WINDOWS constant; we use
- Borland's builtin __BORLANDC__ to detect Borland compilation.
- Makefile.win was renamed Makefile.msvc to differentiate it from
- Makefile.bcc. README.MSVC updated appropriately.
-
--- JE - src/comm.c: Changed perform_socket_read and perform_socket_write
- to use ssize_t and size_t again, as George originally suggested.
-
--- JE - doc/README.*: More changes to documentation for Windows users.
-
-7/2/98
-
--- ae - FAQ: updated the FAQ version distributed with CircleMUD.
-
--- ae - lib/world/obj/15.obj: Corrected some flags and some edescs.
-
--- gg - comm.c: main(): Now use fdopen() instead of explicit assignment
- of 'stderr' to 'logfile'. This should work fine elsewhere because:
- "The fdopen function conforms to IEEE Std1003.1-1988 (``POSIX.1'')."
-
--- gg - comm.c: getrusage(): Use RUSAGE_SELF instead of 0. Suggested by
- Christian Loth
-
-3 July 1998
-
--- JE - src/comm.c, src/sysdep.h: We only prototype the getrlimit()/
- setrlimit() functions if we appear to have those functions
- available. Fixes half of Bug #79.
-
--- JE - src/comm.c, src/sysdep.h: Changed logfile opening to use the
- POSIX-defined STDERR_FILENO instead of a magic number (2).
- Changed sysdep.h to use the magic number if the POSIX def'n
- is missing for some reason.
-
--- JE - Released patchlevel 14.
-
-******** Patchlevel 15 ***************************************************
-
-7/3/98
-
--- gg - constants.c: Incremented string version number.
- structs.h: Incremented #define version number.
-
--- gg - Patch for arbitrary bitvector size changes from Christian Loth
- included. (bitvector_t)
-
--- gg - structs.h: Sector flying and underwater reversed to match constants.c
-
-7/5/98
-
--- gg - comm.c: new_descriptor(): Yep, 'i' should be signed.
-
-7/29/98
-
--- gg - Replaced 'return x;' with 'return (x);' to be consistent.
- Patch by Trevor Man . Reverse of what
- I had hoped, but ah well. :)
-
-8/6/98
-
--- gg - act.item.c: search_block triggers on \n, use \r instead.
-
-8/24/98
-
--- gg - sysdep.h/Makefile.lcc/conf.h.lcc: LCC compiler support added by
- Eric Jones . I'll see if there is a
- __BORLANDC__-like constant we can use to get rid of conf.h.lcc...
-
--- gg - comm.c: "d. hall" sent a patch to change timeadd()
- and timediff() to not use static variables like we wanted before.
-
--- gg - util/shopconv.c: Given a dummy basic_mud_log() to take care of
- undefined reference since some macros use it now.
-
--- gg - act.other.c: do_steal(): Yaroslav Berezovsky aka Morgion//RMUD found
- a bug where the victim had to be able to see an object for the thief
- to steal it...
-
-8/25/98
-
--- gg - AutoEQ from Burkhard Knopf
- comm.c: init_game(): Save everyone before exiting.
- handler.c: invalid_align(): New function.
- handler.c: equip_char(): Use invalid_align().
- handler.c: invalid_align(): prototype.
- interpreter.c: nanny(): Place character in room before equipping.
- objsave.c: Obj_to_store()/Obj_from_store()/Crash_save(): Modified
- to include location arguments.
- objsave.c: auto_equip(): New function, sanity checks eq positions.
- objsave.c: Crash_listrent(): Also show rent locations.
- objsave.c: Crash_load(): Huge block of code to handle equipping.
- objsave.c: Crash_extract_norents_from_equipped(): New function.
- structs.h: obj_file_elem: 'location' added. (Sort of, it's pending
- approval.)
-
--- gg - act.comm.c: do_gen_comm(): Use AWAKE() macro. From
- Richard Glover
-
--- gg - act.item.c: Curse containers if you put a cursed object in them.
-
--- gg - comm.c: main(): Added help text for '-h' option.
-
--- gg - act.informative.c: do_time(): Simplified by suggestion from
- Andrew Jones
-
--- gg - constants.c/comm.c: Uh, 'version' used to crash. :)
-
--- gg - act.comm.c: do_spec_comm(): Removed extra \r\n from act().
-
--- gg - act.movement.c: has_boat(): Del suggested
- immortals should get to walk on water. Now gods can walk on water
- but guest immortals (LVL_IMMORT) still need boats.
-
-8/26/98
-
--- gg - Changed 'struct alias' to 'struct alias_data' since a Windows 95
- compiler gripes that it has a member of the same name.
-
--- gg - autorun: Don't sleep if we're going to die anyway.
-
--- gg - db.c: Disable zone commands which will endlessly error.
-
-8/28/98
-
--- gg - Removed 'extern int top_of_world;' everywhere.
- db.h: Included extern for top_of_world here instead.
- (Should fix some of the Windows 'integral size mismatch' warnings.)
-
--- gg - act.other.c: do_save(): Allow gods to save even if we're in
- automatic saving. Immortals (31) still cannot by default.
-
--- gg - comm.c: DFLT_IP/DFLT_DIR/LOGNAME/help: Some extern declarations
- cleaned up to be what they should.
-
--- gg - comm.c: main(): Reworked to avoid implicit 'stderr' usage and
- allow an argument for log file to redirect to.
-
--- gg - comm.c/comm.h: send_to_room(): Changed to room_rnum.
-
--- gg - structs.h: obj_file_elem: Add a few spares since we're going to
- change the structure anyway.
-
--- gg - comm.c: process_input(): Output command we find from history.
- From Akuma the Raging Coder.
-
--- gg - interpreter.c/utils.h: IS_NPC changes from idea by Yaroslav
- Berezovsky To be completed later though.
-
-8/29/98
-
--- gg - act.wizard.c: do_show(): 'show snoop'
-
--- gg - shop.c: 'buy 3' now possible and doesn't break 'buy 5 3',
- 'buy 5 #3', or 'buy #3'.
-
-9/3/98
-
--- gg - db.c: index_boot(): prefix set to NULL to prevent spurious warning
- from egcs 1.1. (Headache prevention.)
-
-9/7/98
-
--- gg - act.wizard.c: do_set(): age: ch<->vict.
-
-9/9/98
-
--- gg - modify.c: string_write()/smash_tilde(): Got fed up with many
- places in the code (and external packages) manually setting up
- the writing code so I created string_write() to hide that.
- smash_tilde() envelopes previous code in string_add() in a way
- to be compatible with other codebases.
-
--- gg - mail.c: postmaster_send_mail(): Converted the final malloc() in
- the code to use CREATE(), and converted to string_write() also.
-
--- gg - boards.c: Board_write_message(): Changed to string_write().
-
--- gg - Makefile.lcc: Update from Eric Jones .
-
--- gg - macrun.pl: New from Dean Takemori
- in case you have a Macintosh with Perl.
-
--- gg - act.informative.c: do_toggle(): Added holylight/nohassle/roomflags
- for immortals, from Del Minturn .
-
-9/12/98
-
--- gg - act.comm.c: do_write(): Now uses string_write() interface.
- olc.c: olc_string(): Ditto.
-
--- gg - db.c: check_object()/check_object_spell_number()/
- check_object_spell_level(): Beginnings of object verification.
- This caught about 7 objects with bad spell numbers, names, or levels.
-
--- gg - modify.c: string_write(): Modified to allow generic data to be
- passed through later. The improved editor could use this to send
- the 'old' buffer for instance.
-
--- gg - spell_parser.c: spello(): Report spells with invalid names.
-
--- gg - spell_parser.c: skill_name(): Minor cosmetic touchup.
-
--- gg - spell_parser.c: mag_objectmagic(): Wands with an area effect or
- mass spell don't need to be pointed at anything.
-
-9/15/98
-
--- gg - utils.c: get_line(): Faster, cleaner, and most importantly, easier
- to read.
-
-9/20/98
-
--- gg - utils.c: str_cmp()/strn_cmp(): Now gracefully handle a NULL pointer
- and I also took the opportunity to make them look cleaner.
- utils.c: basic_mud_log()/mudlog()/get_filename(): Should be able to
- handle a NULL pointer now.
-
--- gg - utils.h: IS_NPC(): MOB_ISNPC is back, for now.
-
--- gg - Added the long-awaited alias saving to file support courtesy of
- Jeremy Hess and Chad Thompson. Directories added in lib/ also.
-
--- gg - comm.c: main(): Think I heard of a report where fdopen() didn't
- work under Windows so I added a little note there for people.
-
-9/21/98
-
--- gg - magic.c: mag_unaffects(): Fixed cosmetic bug (of mine) whereby the
- "your vision returns" message was shown when you weren't blind.
-
--- gg - spell_parser.c: call_magic(): Fixed to return -1 when a target
- dies, so that mag_objectmagic() can correctly exit instead of
- casting another spell from a scroll at a stale target.
-
--- gg - utils.h: WAIT_STATE(): Needed "do { xxx } while(0)".
-
--- gg - act.offensive.c: do_bash(): Few fixes for NPC's and wimpy mode.
-
--- gg - spells.c: spell_enchant_weapon(): It is a bad thing to enchant a
- weapon that you are currently wielding. Since I think it makes
- more sense to just not be able to do that than jump through hoops
- with equipping, I've remove the TAR_OBJ_EQUIP flag from it.
-
--- gg - comm.c: perform_act(), act.informative.c: list_one_char(),
- interpreter.c: command_interpreter(): All changed with IS_NPC()
- fixes from Andrey Fidrya
-
--- gg - magic.c: mag_affects(): Don't allow strength if we already have
- 100% strength add.
-
--- gg - act.other.c: do_steal(): Easy but not automatic stealing from
- sleeping people.
-
--- gg - comm.c: setup_log(): Handle all the log() nasties.
-
--- gg - sysdep.h: Check for STDOUT_FILENO too.
-
-9/27/98
-
--- gg - objsave.c/structs.h: Enable autoeq on USE_AUTOEQ definition.
-
--- gg - act.item.c: Duplicated 'extern obj_proto;'
-
-10/1/98
-
--- gg - utils.h: VALID_RNUM(): New macro made from common code in
- GET_ROOM_VNUM() and GET_ROOM_SPEC().
- utils.h: GET_ROOM_VNUM(): Needs (room_vnum) cast for MS VC++ 5.
-
--- gg - comm.c: 'port' should be an unsigned short integer.
- config.c: DFLT_PORT changed to ush_int too.
-
--- gg - act.wizard.c: do_at(): location/original_loc should be room_rnum.
- act.wizard.c: perform_set(): New room_rnum variable for case 35.
-
--- gg - db.c: reset_zone(): Couple casts to hush up Microsoft Visual C++.
- There isn't another way.
-
--- gg - house.c: hcontrol_destroy_house(): real_atrium/real_house converted
- to room_rnum variables. The atoi() result casted to room_vnum.
- house.c: hcontrol_pay_house(): atoi() result, ditto.
-
--- gg - shop.h: 'keeper' variable changed to mob_rnum and comment fixed.
- It is saved on disk as a vnum but changed in boot_the_shops() to
- be a real number.
-
--- gg - spec_procs.c: pet_shops(): 'pet_room' is a room_rnum now.
- spells.c: spell_teleport(): 'to_room' is a room_rnum now.
-
--- gg - Even more xxx_rnum/xxx_vnum changes, to the real_xxx() functions.
-
--- gg - db.c: check_object_spell_level(): Note that it is a bad idea to
- assign an area or mass spell to a staff. It is not overridden,
- just warned about.
-
-10/3/98
-
--- gg - act.movement.c: do_stand(): Player may still be fighting at this
- point so we should set them POS_FIGHTING if so.
- Reported by Jon Barrett .
-
--- gg - act.wizard.c: do_switch(): Don't permit people under Greater God
- to switch into mobs in god rooms or houses.
-
--- gg - Assorted skills now have new IS_NPC and GET_SKILL checks.
-
-10/5/98
-
--- gg - spec_assign.c: Fixed up mob|room|obj_v|rnum problems in ASSIGNMOB,
- ASSIGNROOM, ASSIGNOBJ.
- castle.c: block_way(): Fixed up room_rnum problem.
- olc.c: do_olc(): Ditto.
-
--- gg - act.wizard.c: room_rnum things fixed and use skill_name() now in
- do_stat_character().
-
--- gg - db.c: check_object_spell_number(): Disabled the check for an area/mass
- spell on a staff because the bug has been fixed.
-
--- gg - spell_parser.c: mag_objectmagic(): Fixed the bug where a victim
- dying in the middle of a staff spell caused a crash.
-
--- gg - Merged new spell routine changes that get rid of spells[] in favor
- of spell_info[].name. Also removed dead code from db.c.
-
-10/7/98
-
--- gg - db.c: check_object_spell(): Another magic niggle, the spells don't
- have names in syntax check mode.
-
--- gg - Merged a bunch of sh_int/int -> *_[rv]num changes from
- Bryan Britt
-
--- gg - More little logging changes. Sometimes I really hate portability. :P
-
--- gg - house.c/db.c: g++ found some mismatched prototypes.
-
-10/8/98
-
--- gg - graph.c: Assorted room_rnum fixes.
-
-10/10/98
-
--- gg - cnf/configure.in: Added checks for "remove" and "strerror".
- sysdep.h, conf.h.in: NEED_REMOVE_PROTO and NEED_STRERROR_PROTO added.
-
--- gg - act.social.c act.other.c ban.c e boards.c comm.c db.c fight.c
- graph.c house.c objsave.c shop.c: Updated to make sure all
- perror() and log() calls have SYSERR where appropriate.
-
-10/12/98
-
--- gg - comm.c: Updated some 'const' usage in act() and related functions.
-
-10/13/98
-
--- gg - Massive minor changes to the code to eradicate some (quite accurate)
- warning messages from Borland C++ sent by Mundi King
-
--- gg - utils.h/utils.c: CAP() is now a function instead of macro to eliminate a
- "statement with no effect" warning when not using the return value.
-
--- gg - utils.c: int_to_short(): Sneak around the Microsoft Visual C++ warnings
- if there is no other way to avoid it.
-
--- gg - comm.c: Socket errors beyond our control are flagged as a WARNING in the
- same manner as bugs in the code are flagged SYSERR.
-
--- gg - shop.h/shop.c: Fixed the bug causing 'keeper' in the shop structure to
- be an int.
-
--- gg - db.c/db.h: More int/sh_int cleanups with int_to_short(). Including changes
- to zone_data and top_of_zone_table.
-
--- gg - Even more Microsoft Visual C++ warning fixes. Warnings sent in by
- OmnousMan@aol.com and Sean Daley .
-
--- gg - castle.c: Major cleanup of appearance.
-
--- gg - cnf/configure.in, cnf/aclocal.m4, configure: New directives to check for
- 'struct in_addr' and an unsafe crypt() function with only 10 characters.
-
--- gg - structs.h: Code to check for an unsafe password length of 10.
- sysdep.h: Code to accommodate systems with no 'struct in_addr'
-
-10/16/98
-
--- gg - comm.c: nonblock(): Use 'unsigned long' for Windows ioctlsocket().
-
--- gg - comm.c: open_log(): Use "easy" method for GNU C and MetroWerks (no fdopen).
-
--- gg - db.c: More int_to_short() for MSVC.
- magic.c: Some variable fixups for warnings, mob_vnum and obj_vnum;
-
--- gg - objsave.c: Crash_delete_file(): s/unlink/remove/
-
--- gg - comm.c: Also check for WSAEINTR as Andrew Helm suggests.
-
--- gg - sysdep.h: Mundi King gave me some #pragma's to
- disable warnings in Borland C++, how quaint. Also had to give an isascii()
- macro for MetroWerks since they couldn't add one line to their headers.
- Also took the opportunity to clean up the "Who are we?" error message into
- something a bit more descript.
-
-10/21/98
-
--- gg - db.c, config.c: Load GREETINGS from a file instead of config.c.
- See lib/text/greetings.
-
--- gg - castle.c: Fixed a few short int warnings.
-
--- gg - utils.c: prune_crlf(): Fixes up GREETINGS to look right.
-
-10/23/98
-
--- gg - Thanks to Francis Hotchkiss for testing the
- FreeBSD configure changes. (The test does work.)
-
-10/27/98
-
--- gg - act.wizard.c, class.c, limits.c: Changed advance_level() to not
- print the advancement message so the calling functions can do so
- without spamming the system logs and online wizards.
-
--- gg - act.informative.c: look_at_target(): "look 2.obj_with_extra_desc"
- bug fixed.
-
--- gg - comm.c: close_socket(): Andrey Fidrya pointed
- out we could have a player special called on a mobile.
-
--- gg - act.wizard.c: do_purge(): mudlog() required a GET_INVIS_LEV check.
-
--- gg - act.comm.c: do_tell(): Only allow immortals to "tell" to a mobile
- to prevent player abuses.
-
--- gg - act.item.c: Multi-give/drop/donate/junk/put/get.
-
-10/28/98
-
--- gg - alias.c, db.c: Fix a couple '%d' warnings, hopefully.
-
--- gg - modify.c: show_string(): Fix a warning on 64-bit platforms with
- casting a pointer to an integer.
-
--- gg - utils.h: Better IS_NPC check added, though still commented out
- in favor of the old, faithful one.
-
--- gg - act.item.c: do_drop(): Fixed a bug WRT junking objects. 'amount'
- was re-used inadvertently.
-
--- gg - doc/README.BORLAND: It's actually helpful now.
-
--- gg - db.c: create_entry(), init_char(): Need to check for replacing an
- old character in the player table.
-
-11/2/98
-
--- gg - comm.c: get_max_players(): "random guess" was missing a ;
- From: Josh McBeth
-
--- gg - limits.c: Del pointed out that I
- forgot to make sure someone levelled before printing message. :)
-
-11/9/98
-
--- gg - db.c: Duh, get_id_by_name() doesn't return player table array
- index, so now get_ptable_by_name does.
-
-11/15/98
-
--- gg - objsave.c: update_obj_file(): Don't update empty names.
-
-11/22/98
-
--- gg - class.c: do_start(): Don't need to set_title() the person because
- they have already had it done by init_char(). Found by
- "Andrey Fidrya"
-
-11/23/98 -- Hereby proclaimed Rick Glover bug report day.
- -- All of this day's bug fixes are from him.
-
--- gg - spell_parser.c: mag_objectmagic(): Remove superfluous '!= NULL'
- from action description check on suggestion.
-
--- gg - act.informative.c: list_obj_to_char(): We don't initialize a variable
- on the declaration line but do it on the next line down. I'm glad
- I'm not the only picky person around here. :)
-
--- gg - act.informative.c: do_score(): Redundant IS_NPC() checks removed.
-
--- gg - act.item.c: get_check_money(): We had bad grammar.
-
--- gg - act.item.c: do_drop(): Mixed up 'amount' and 'multi' in a sprintf()
- during the multiple object changes.
-
--- gg - Massive act() -> send_to_char() search and replace.
-
--- gg - act.offensive.c: do_backstab(): WAIT_STATE() added.
-
--- gg - act.wizard.c: do_show(): 'player' updated to use "buf + strlen(buf)".
-
--- gg - boards.c: He also pointed out a 'board.h' typo.
-
--- gg - He also noticed 'r_*_start_room' used 'sh_int' which prompted me
- to search and replace many other instances of 'sh_int' misuse too.
-
--- gg - db.c: index_boot(): He found a redundant 'break' after 'exit()'.
-
--- gg - magic.c: mag_areas(): Didn't pass 'level' variable handed to us
- to mag_damage().
-
--- gg - magic.c: mag_points(): Variables compressed to same line.
-
--- gg - db.h: LIB_OBJS removed, it wasn't used.
-
-11/24/98
-
--- gg - db.c, act.informative.c: Removed 'extern spells[]'. Thanks to RG.
-
--- gg - modify.c: do_skillset(): Spacing fixed when skills are skipped. From RG.
-
--- gg - mobact.c: mobile_activity(): Charmed/blinded mobs can't help. From RG.
-
--- gg - act.offensive.c: do_backstab(): Aware mobs aren't when asleep. From RG.
-
--- gg - shop.c: evaluate_expression(): Remove isalpha() to allow '(' first.
- shop.c: evaluate_operation(): &&/|| fixed to always pop both values.
- Thanks to Lubos Lunak for finding these.
-
-12/1/98
-
--- gg - ChangeLog: Ran it through ispell while avoiding gratuitous changes.
-
-12/2/98
-
--- gg - utils.h: RG noted we had prototypes for {mana,hit,move}_limit but
- removed the functions.
-
--- gg - class.c: do_start(): We really do need the set_title() or newbies
- start out with the level 0 title.
-
-12/10/98
-
--- gg - utils.c, utils.h: {mana,hit,move}_limit() don't exist and ush_int
- to int conversion in core_dump_real().
-
--- gg - act.comm.c: do_page(): Extra \r\n removed from sprintf(), by RG.
-
--- gg - act.social.c: fread_action(): is really local, by RG.
-
--- gg - boards.c: Typo fixes and some spacing additions, by RG.
-
--- gg - castle.c: Some act() -> send_to_char() where appropriate, by RG.
- spec_procs.c: Ditto.
-
--- gg - config.c: Some variables changed sh_int -> room_Xnum.
-
--- gg - db.h: save_char() prototype sh_int fixes and LIB_OBJS removed.
-
--- gg - house.c: More room_Xnum fixes, by RG I believe.
-
--- gg - interpreter.c: More room_Xnum fixes.
-
--- gg - mobact.c: mobile_activity(): Blind and charmed mobs shouldn't
- be helping in attacks. By Rick Glover.
-
-12/15/98 - It's not a Y2k problem, I'll just write out 2000 afterwards. :P
-
--- gg - act.item.c: Merged more act() -> send_to_char() fixes. Also fixed
- the '\n' in the wear list. Lastly, revamped get_check_money() to
- be plurally correct.
-
--- gg - act.movement.c: has_boat(): Fixed return parenthesis.
- do_doorcmd(): Removed extra \r\n.
- do_stand(): More act() -> send_to_char() changes merged in from RG.
-
--- gg - act.offensive.c: do_backstab(): Sleeping mobs aren't "aware," and
- added delay to prevent abuse.
- do_kick(): Use new function compute_armor_class().
-
--- gg - act.other.c: do_quit(): RG suggested removal of 'save_room.' More
- act() -> send_to_char() fixes in the code.
-
--- gg - act.wizard.c: do_stat_character(): RG noted that dexterity isn't
- factored into armor class, fixed.
- do_show(): He also noted we need "buf + strlen(buf)" here.
-
--- gg - db.c: sh_int/*_?num fixes.
-
--- gg - fight.c: compute_armor_class(), compute_thaco(): New functions.
- death_cry(): Use send_to_room instead of act() hackery.
- hit(): Don't use weapon damage values if it isn't a weapon, from RG.
- Also more act() -> send_to_char() fixes.
-
--- gg - handler.c: act() -> send_to_char() fixes.
-
--- gg - magic.c: mag_savingthrow(): Took idea for modifier value to be
- added, from Edward J Glamkowski .
- Callers changed throughout.
-
--- gg - modify.c: do_skillset(): Screen spacing of skills fixed on
- suggestion by Rick Glover .
-
--- gg - objsave.c: Crash_save(): Reversed order of item saving to fix
- bug that made auto equipment not work. Also minor touchups.
- Rent problem reported by Rick Glover.
-
--- gg - shop.c: evaluate_operation(): Lubos Lunak
- found that the stack was messed up by compiler short-circuiting.
- Also changed isalpha() check to allow a ( first.
-
--- gg - spell_parser.c: More act() -> send_to_char() fixes.
-
--- gg - act.informative.c: act() -> send_to_char() fixes and some old
- now-gone externs removed.
- do_score(): Cleaned up unneeded IS_NPC() checks, by RG.
-
--- gg - comm.c: Cleaned up buffer checking code.
- write_to_output(): Moved strlen() to avoid wasted time.
-
-12/16/98
-
--- gg - act.informative.c: do_diagnose(): Superfluous 'return' removed
- as suggested by Rick Glover.
-
-1/8/99
-
--- gg - act.other.c, config.c, graph.c, interpreter.c, interpreter.h:
- TRACK_THROUGH_DOORS the #define has become 'track_through_doors'
- the runtime changeable integer in config.c. VALID_EDGE() also
- went over the brink of readability and became a function.
-
-1/12/99
-
--- gg - fight.c: Fixed up compute_armor_class() to not divide since only
- one place cares about the internal value.
-
-1/13/99 - Wednesday
-
--- gg - sysdep.h: Great, now winsock1/winsock2 conflict in Borland. What
- a pain. Jodi Goddard was the first to mail me
- the correct definitions to test for it.
-
-1/15/99
-
--- gg - fight.c: compute_armor_class() should add dex_app * 10 since the
- old code divided first, then added the modifier.
-
-1/24/99
-
--- gg - util/listrent.c, util/split.c: Rick Glover pointed out a few \n\r's.
-
--- gg - castle.c: King Welmar's movements needed ASCII adjustments.
-
-1/25/99
-
--- gg - handler.c: generic_find() needs to NULL the arguments _first_ in case
- our argument only has a fill word. Fixes crash reported by Rick
- Glover that I couldn't originally reproduce.
- act.item.c: do_get(), do_put(): Use one_argument() instead of half_chop
- to allow for fill words.
-
-1/29/99
-
--- gg - act.comm.c: Some more act() -> send_to_char() from Rick Glover.
-
-2/2/99
-
--- gg - Got rid of int_to_short() in favor of a #pragma to disable the warning.
-
-2/16/99
-
--- gg - First batch of Rick Glover bug reports.
- Makefile.in
- OBJFILES and CXREF_FILES sorted, alias.o moved alphabetically.
- act.informative.c
- do_gen_ps(): Added log() for unhandled case.
- act.item.c
- do_pour(): Removed superfluous 'return;' at end.
- act.movement.c
- Bitvectorized NEED_xxx #define's to be more obvious.
- do_leave(): Use OUTSIDE().
- do_wake(): Use AWAKE().
- act.other.c
- do_steal(): Use two_arguments().
- do_wimpy(): Removed superfluous 'return;'.
- act.wizard.c
- perform_set(): Prevent only freezing self, not thawing self.
- class.c
- level_exp(): Log the bad level in the report.
- comm.c
- 'extern' variables extricated from the global variables.
- shop.c, shop.h
- 'producing' is now an obj_vnum.
- spells.h
- TAR_xxx defines bitvectorized instead of numbers.
-
-3/4/99
-
--- gg - comm.c, structs.h, utils.h: PjD noticed that repeatedly reconnecting
- to a MUD would cause the wait state counter to be reset. Thus it
- has been merged with the mob counter.
-
--- gg - act.other.c: do_split(): Fixes from Christian Loth to not lose
- money and fix the accounting among a group. Untested but looks ok.
-
--- gg - spell_parser.c: say_spell(): King Mundi proposed fix so that the
- MUD doesn't go into infinite spastic loop upon unknown substring.
-
--- gg - objsave.c: Crash_load(): "Andrey Fidrya" sent
- in a fix for potentially empty rent files.
-
--- gg - Usual batch of Rick Glover reports:
- structs.h
- room_data: 'zone' should be zone_rnum.
- index_data 'vnum' should be a 'sh_int' type.
- act.item.c
- 'the $o' changed to '$p' for better clarity.
- act.wizard.c
- do_force: Mobs are now immortal subordinate.
- do_set: height/weight; "sex" set type is much less
- complicated with search_block now.
- constants.c
- Lowercased genders[] for do_set to work ok.
- comm.c
- make_prompt: buffer length fixed to track
- MAX_PROMPT_LENGTH changes.
- db.c
- read_mobile: Should have WARNING tag on log() message,
- because while not a SYSERR, it is sort of bad.
- handler.c
- affected_by_spell: Fixed up comment.
- objsave.c
- gen_receptionist: HSHH() for "she"
- interpreter.c
- Remove AFF_GROUP flag in addition to PLR_WRITING, etc.
-
--- gg - class.c: levels(): Sean Daley noticed
- I forgot _every_ 'break;' in the switch() block. :)
-
-3/5/99
-
--- gg - Desmond Daignault sent in a
- fixing up get_char_room_vis and get_char_vis like I wanted,
- to be consistent with get_player_vis. The old function still
- exists, it's just not used except by get_char_vis.
-
-3/10/99
-
--- gg - Rick Glover found some old CRIMEOK references in magic.c
-
-******** Patchlevel 16 ***************************************************
-
-3/17/99
-
--- gg - constants.c: Version string updated to bpl16.
- structs.h: Preprocessor version number updated to bpl16.
-
--- gg - First person to find a stupid bug award goes to Rick Glover
- who noticed do_say and do_gsay are missing \r\n.
-
--- gg - Wonder how no one noticed that 'sleep' spell sends its message
- to the caster instead.... Found by RG.
-
--- gg - 'prompt none' gave the help message. Found by RG.
-
--- gg - act.other.c: do_quit(): Revert previous change because of
- extract_char() behavior.
-
-3/26/99
-
--- gg - Added README.MSVC6. We don't have Microsoft Visual C++ 6 so
- we cannot confirm the accuracy of anything contained therein.
-
-4/11/99
-
--- gg - Fixed typo '-P0' to '-P-' in Makefile.bcc.
-
-4/16/99
-
--- gg - modify.c: string_add(): Fix Obiwan error in maxstr handling.
- It no longer accepts 10 characters & NUL for a 10 character limit.
-
-5/1/99
-
--- gg - act.wizard.c: do_show(): case 3: Check for NUL value.
-
--- gg - structs.h: mob_rnum nr;
-
-5/3/99
-
--- gg - comm.c: Last usage of d->connected replaced with STATE(d)
-
--- gg - fight.c: damage(): Don't divine rescue people who can't flee.
- Previously could result in being rescued after death because
- then !FIGHTING() is true even though do_flee() failed.
-
--- gg - sysdep.h: Yet another useless (to us in this case) MSVC warning.
-
--- gg - comm.c: echo_off(): Fixed RFC compliance issue noted by
- Matthew Bell
-
-5/4/99
-
--- gg - act.social.c: boot_social_messages(): More sanity checks to make
- sure we don't stomp memory.
-
-5/9/99
-
--- gg - util/delobjs.c: Change unlink() to remove().
-
--- gg - shop.c, mobact.c, fight.c, class.c, spec_procs.c: Use constants.h
-
--- gg - objsave.c: Removed unused str_app[] extern.
-
--- gg - db.h: CIRCLE_VMS path declarations.
-
--- gg - house.c: Fixed Obj_from_store() C++ linkage problem.
-
--- gg - interpreter.h: Make cmd_info[] extern match declaration.
-
--- gg - constants.h: Remove 'const' from int arrays to fix C++ linkage.
-
-5/10/99
-
--- gg - act.item.c, act.other.c: Use constants.h for more things.
- From the VMS guy again. See README.VMS.
-
--- gg - comm.c: New circle_sleep() function and various VMS fixes.
-
-5/18/99
-
--- gg - comm.c, config.c: s/MAX_PLAYERS/max_playing/ since the DEC
- C compiler confuses it with 'max_playing' also.
-
-5/26/99
-
--- gg - circle.com, mud_utils.com, autorun.com: New utilities for
- running CircleMUD on VMS from Robert Alan Byer. Before
- people ask, these are _not_ DOS executable files.
-
--- gg - act.other.c: do_practice(): NPC's cannot practice.
-
--- gg - comm.c: game_loop(): Made output_ready() to appease VMS.
-
--- gg - utils.c: mudlog() cleaned up and no longer tries to get colors
- from a mobile.
-
--- gg - vms_decls.h: New file, containing declarations the
- operating system should have provided.
-
--- gg - shop.c: top_shop is now array-based intead of counting-based.
-
-5/28/99
-
--- gg - Couple more VMS changes. Also made accept_arg_t since everyone
- seems to differ on this variable's signedness.
-
-5/29/99
-
--- gg - objsave.c: Crash_listrent(): Was overwriting beginning of
- information string with later information.
-
-6/3/99
-
--- gg - act.wizard.c: do_vnum(): Use half_chop() to allow fillwords.
- From Rick Glover.
-
--- gg - db.c: check_object(): Bitvector and drink container checks.
-
--- gg - act.informative.c: do_score(): Plurality problem.
-
-6/6/99
-
--- gg - act.wizard.c: do_stat_character(): Remove gender special case.
- This will have the side-effect of lowercasing the result, but
- the simplicity is preferred here.
-
-6/11/99
-
--- JE - README.CYGWIN - incorporated new version from David Goldstein
-
-7/4/99
-
--- gg - comm.c: close_socket(): Check for IS_NPC() before PLR_MAILING.
-
--- gg - db.c: Don't re-file_to_string_alloc() anything currently in
- use by the pager. It's the least impact change. From
- Andrey Fidrya
-
--- gg - limits.c: Autowiz support for Windows from
- Julian Buckley
-
--- gg - modify.c: string_add(): Yet another fix to make the buffer
- limits safe. From Andrey Fidrya .
-
--- gg - objsave.c: Crash_extract_norents_from_equipped():
- Um, duh. Helps to use functions. :) Spotted by
- Andrey Fidrya .
-
-7/10/99
-
--- gg - spell_parser.c: ACMD(do_cast): Equipped objects should
- be 'what' and not 'who' in the message.
-
--- gg - Merged latest set of changes for VMS.
- doc/README.VMS: Update from author.
- descrip.mms, vms_circlemud_gcc.opt, vms_gnuc.h: Removed.
- build_circlemud.com: Almost a 'Makefile' for VMS.
- comm.c: gettimeofday(): Removed VMS version, it now has it.
- game_loop(): Removed output_ready() special case.
- circle_sleep(): Removed special case for VMS.
- sysdep.h: output_ready() removed. 'vms_gnuc.h' removed.
-
-8/01/99
-
--- dk - Dropped in support for socklen_t, which is in the latest POSIX
- drafts and glibc2, to replace the accept_arg_t kludge. Please
- verify the veracity of the changes to the OS dependent conf.h.*
- files. Any platform using glibc2 or that has socklen_t won't
- compile correctly using those settings. Platforms using the
- 'configure' script should autodetect and work properly, although
- my system is libc5 based, so it's untested.
-
-8/4/99
-
--- gg - doc/README.AMIGA: New update.
-
-8/28/99
-
--- gg - act.item.c: Fixed 'junk 83467534657834 coins' bug.
-
--- gg - Released patchlevel 16.
-
-******** Patchlevel 17 ***************************************************
-
-8/28/99
-
--- gg - constants.c, structs.h: Welcome to bpl17.
-
--- gg - interpreter.c: Todd A. Laycock noted
- that we don't actually use ACMD(do_rent) anywhere, nor do we
- even have one.
-
-12/14/99
-
--- gg - act.wizard.c, spec_assign,c: Fix '< top_of_world' from
- Andrey Fidrya
-
--- gg - modify.c: string_add(): Del
- noticed a missing \r\n if people overflowed max_str on
- the first line.
-
-12/17/99
-
--- gg - comm.c: perform_act(): "Bob Castillo"
- noticed that illegal act() codes crash the MUD. Oops.
- Fortunately, it only occurs due to lib/misc/socials or
- aedit (the social editor) as user input is escaped to prevent
- any act() codes at all.
-
--- gg - act.informative.c: look_at_char(): Mob names aren't
- capitalized due to \r\n prepended.
- db.c: is_empty(): Crashes on NOWHERE and prevented
- success by immortals.
- act.wizard.c: do_return(): When disconnecting someone
- upon return, make sure to not trash our own connection.
- act.wizard.c: do_dc(): Needed to fix a case when
- disconnecting people not in the game.
- All spotted by "Andrey Fidrya"
-
-12/31/1999
-
--- dk - ChangeLog dates are now Y2K compliant! And just in the nick of
- time! Thanks to all the COBOL hackers that brushed off their
- cobwebs and worked around the clock to fix it.
-
-01/01/2000
-
--- dk - Happy New Year and Ante-Millennium.
-
-
-01/14/2000
-
--- dk - comm.c: Changed some 'int's to 'socket_t's. That's what it's
- there for, so that's what we'll use it for. (Why didn't anyone
- else notice this?! Bizarre.)
-
-1/20/2000 -- See, I told you.
-
--- gg - house.c: Removed a lot of '< 0' == 'NOWHERE' assumptions.
-
--- gg - comm.c: Having a $ as the last character on the line
- could do bad things since bpl4. Found by Bob
- Castillo .
-
-1/23/2000
-
--- gg - house.c: Removed a lot of '>= 0' != 'NOWHERE' assumptions.
- Del noticed I missed those.
-
--- gg - comm.c: process_input(): Fixed the fact we write too much
- to memory in the input buffer. Found by Bob Castillo
- since it's much more noticeable in an unsigned variable.
-
--- gg - comm.c: echo_on(): We don't need NAOFFD or NAOCRD, they
- cause us problems, and others don't use them either.
-
--- gg - db.c: file_to_string_alloc(): 'using' is a keyword in C++.
-
--- gg - Batch of Rick Glover reports:
- act.comm.c: do_spec_comm(): Use switch instead of if..else.
- db.c: count_alias_records(): Don't count empty aliases.
- parse_object(): in_room=NOWHERE is superfluous.
- interpreter.c: nanny(): CON_CLOSE is possible.
-
--- gg - Released patchlevel 17.
-
-******** Patchlevel 18 ***************************************************
-
-1/23/2000
-
--- gg - constants.c/structs.h: Welcome to bpl18.
-
--- gg - Makefile.lcc: Remove some constants I have to change every patch.
-
--- gg - doc/README.CYGWIN: bpl17 -> bpl18
-
-7/3/2000
-
--- gg - doc/license.doc: Add copyright information that seems lacking
- elsewhere.
-
--- gg - build_circlemud.com: Update from author.
-
--- gg - utils.h: -1 => NOBODY/NOWHERE/NOTHING cleanups.
-
--- gg - spells.c: spell_teleport(): No teleporting into ROOM_GODROOM.
-
--- gg - spec_procs.c: Restrict pets to NPCs.
-
--- gg - interpreter.c: is_abbrev(): s/returnss/returns/
-
--- gg - handler.c: affect_join(): Keep 'next' pointer for extracted
- objects in list.
-
--- gg - act.wizard.c: perform_immort_invis(): Remove redundant
- IS_NPC check.
-
--- gg - utils.c: basic_mud_log(): Cancel message if stream hasn't
- been initialized.
-
-7/7/2000
-
--- gg - utils.c: mudlog(): log(var) => log("%s", var); to avoid
- interpreting %% codes.
-
--- gg - db.c: parse_object(): Print the offending character.
- check_object(): Drink aliases should last now. The code
- to remove the aliases shouldn't care where it is, though.
-
--- gg - act.item.c: name_from_drinkcon()/name_to_drinkcon():
- Much more intelligent support for removing/adding the
- drink name to containers.
-
--- gg - lib/world/obj/0.obj: An extra ~ escaped the removal of
- object #99.
-
-10/27/2000
-
--- ae - act.informative.c: Fixed do_time() with the fix submitted by Nate
- Winters that corrected the output on the 11th,
- 12th, and 13th of a month (it used to output '11st', '12nd', and
- '13rd'. Not so good really.
-
-11/3/2000
-
--- gg - shop.c: Del noted the
- 'show shop' header was at the bottom of pages.
-
--- gg - utils.c: get_line(): "Andrey Fidrya"
- has files without a \n on the last line.
-
-11/15/2000
-
--- gg - act.other.c: do_quit: !GET_INVIS_LEV is redundant.
-
-9/18/2000
-
--- ae - comm.c: Added in $u and $U act() codes to perform_act(). These allow
- the user to uppercase the first letter of the previous ($u) or next
- ($U) word. For example, from the social for 'snarl':
- $n snarls angrily at $N. $e$u seems incapable of controlling $mself.
- $n snarls viciously at you. $U$s self-control seems to have gone bananas.
- In the old style, these would have come out as:
- George snarls angrily at Daniel. he seems incapable of controlling himself.
- George snarls angrily at you. his self-control seems to have gone bananas.
- In the new, we get:
- George snarls angrily at Daniel. He seems incapable of controlling himself.
- George snarls angrily at you. His self-control seems to have gone bananas.
- This comes a little bit closer to proper sentence output and looks
- much nicer to boot.
-
-12/07/2000
-
--- ae - Removed some 'offensive' language from act.item.c and magic.c.
-
-1/17/2001
-
--- gg - db.c: load_zones(): More accurate counting based in part
- on suggestions by Rick Glover. Also added SYSERR.
-
--- gg - act.offensive.c: do_order(): No "order followers". Based
- on reports from Andrey Fidrya. We'll need similar fixes
- for other areas and can turn it back on then.
-
--- gg - db.c: file_to_string(): Check for empty files or we corrupt
- memory. From "Bob Castillo" . Also
- took care of duplicated feof() test.
-
-1/25/2001
-
--- gg - spells.h, magic.c, spell_parser.c, constants.h, constants.c:
- spell_wear_off_msg[] died. It moved to spell_info[] and I
- fixed 3 mispelings in the process. (That was on purpose.)
-
--- gg - Makefile.in: magic.c depends on constants.h
-
--- gg - comm.h: Move PAGE_(WIDTH|LENGTH) from modify.c for computations
- using page_string(). Needed by the shop code.
-
--- gg - mobact.c: Fixed MOB_AGGR and MOB_AGGR_TO_ALIGN logic. Any
- aggressive mobs also aggressive_to_alignment weren't properly
- attacking everybody, just the alignment.
-
--- gg - objsave.c: Crash_load(): Plurality.
-
--- gg - structs.h: Formatting and comment adjustment on CON_ and MOB_.
-
--- gg - comm.c: close_socket(): Make "closing link" message accurate.
-
--- gg - generic_find(): Fix for '2.bread' with one on the ground and
- one in your inventory.
-
--- ae - spec_procs.c: Added a CAN_SEE() check into npc_steal() to stop mobs
- with the thief special from stealing from people that they can't even
- see. Reported by Vladimir Prelovac
-
-1/26/2001
-
--- ae - act.other.c: Shifted the checking for duping into extract_char(). I
- was toying and discovered that renting out skips all of the dup checks
- that we had in and so does dieing. Whoops. Also, we were setting the
- state of the descriptor to CON_DISCONNECT when that state is used
- everywhere else for players that have the state of CON_PLAYING, so I
- changed that to CON_CLOSE. (also note 'handler.c')
-
-2/18/2001
-
--- gg - comm.c: perform_socket_read(): Handle ECONNRESET by booting
- the person as we do for a 0 length read.
-
-3/4/2001
-
--- gg - db.c, db.h: fread_string(): Doesn't modify 'error'.
-
--- gg - util/shopconv.c: fread_string(): Fix horrible buffer overrun
- as well as making the return codes not pretend to be ok.
-
--- gg - shop.c: read_shop_message(): Fix think-o on fread_string's
- string parameter.
-
--- gg - handler.c: get_obj_vis(): Make sure 'number' isn't NULL.
- extract_char(): Extensively rearranged.
-
--- gg - handler.c: get_obj_vis(): Really support numbering.
-
--- gg - act.wizard.c: find_target_room(): Cleanup and extend to
- find location of objects worn or carried.
-
--- gg - db.c: load_zones(): Skip first 3 lines to avoid mistaking
- zone name for a command.
-
--- gg - boards.c: init_boards(): -1 => NOTHING
-
--- gg - comm.c: game_loop(): Use RL_SEC more.
- heartbeat(): More PULSE_* constants.
-
--- gg - structs.h: PULSE_* constants, OPT_USEC explanation.
-
--- gg - handler.c: extract_char(): Should only be one switch
- target, abort on finding it. Also adjusted comment.
-
-3/10/2001
-
--- gg - class.c: invalid_class(): Reformatted so people
- can actually read it.
-
--- gg - utils.h: ANA/SANA: No 'Y'. (Compare to 'AN')
- From: Peter Ajamian
-
-3/18/2001
-
--- gg - handler.[ch], structs.h, comm.c, act.offensive.c,
- fight.c: New delayed extraction sequence to avoid
- dangling pointer crashes.
-
--- gg - Released patchlevel 18.
-
-******** Patchlevel 19 ***************************************************
-
-3/18/2001
-
--- gg - constants.c, structs.h, Makefile.lcc, doc/README.CYGWIN:
- Welcome to bpl19.
-
-5/1/2001
-
--- ae - Changed some '256' notes to READ_SIZE (db.c) or MAX_INPUT_LENGTH
- (mail.c and handler.c). These are to keep the consistency across
- functions, etc.
-
--- ae - act.item.c: Removed a check for too many objects from the beginning
- of do_get(). As pointed out by Vladimir Prelovac
- ,
- 1. If there isn't anything to get you still get that message
- 2. The check is already made at the appropriate time in all the other
- functions that do_get() calls (in can_take_obj()).
-
--- ae - constants.c: We forgot the string for the NOTDEADYET flags. Oops.
- Added in 'DEAD' (with comments) for completeness.
-
-5/8/2001
-
--- ae - Makefile.in: Modified makefile (and added htmlheaders/footers) to
- allow for cxref data creation more readily.
-
-5/9/2001
-
--- ae - Del submitted a 'bug' (wording problem) with a chunk in
- act.movement.c that has to do with ROOM_TUNNEL. There are two
- options for fixing it, so I chose the middle ground: adding a
- config variable for it to config.c. This variable (tunnel_size)
- indicates how large the tunnel is and defaults to 2.
-
-5/10/2001
-
--- ae - act.wizard.c: Added in code to remove holylight, syslog, and
- nohassle when wiz+ are demoted below level 31 with do_advance().
-
--- ae - fight.c: If we don't have a fight message to send (ie, suffering,
- poison, etc), then don't send the colours, and don't try to send
- the message that we don't have. Reported by Andrey Fidrya
-
-
--- ae - db.c: This fixes a possible overflow problem in pfiles by truncating
- the description if it is too long. Reported by Andrey Fidrya
-
-
--- ae - We had a reference to SKILL_PUNCH (#136), but in the base code,
- 'punch' is an action, not a skill. Not only that, but we don't
- even reference it in the lib/ anywhere. (spells.h, spell_parser.c)
-
-5/16/2001
-
--- ae - coding.doc: Added in a section 4 (special procedures) that was
- submitted to us ages ago by Luis Pedro Passos Carvalho
- . Unfortunately, due to problems with the CDP,
- it languished. We just have to remember to keep the text when we
- get the CDP up and running again.
-
-5/18/2001
-
--- gg - Global: IS_OBJ_STAT -> OBJ_FLAGGED for consistency with
- MOB_FLAGGED and OBJ_FLAGGED.
-
--- gg - Global: Moved a bunch of global variables to db.h.
-
--- gg - act.informative.c, db.c, handler.c, interpreter.c, mobact.c,
- random.c: Remove 'register' keyword, let the compiler figure
- out what is best.
-
--- gg - castle.c: Fix "zones are 100 rooms" assumption.
-
--- gg - class.c: Fix trailing comma in prac_params[].
- From: Del
-
--- gg - constants.c: Fix "the Day of the Great Gods" capitalization.
- From: Carlos Myers
-
--- gg - mail.c: scan_file(): Mail file is binary, open as such.
- From: Marc Lank
-
--- gg - interpeter.c: ACMD(do_info) and ACMD(do_offer) don't exist.
- From: Del
-
--- gg - magic.c: mag_points(): Rename 'hit' to 'healing' to avoid
- the function named hit().
-
--- gg - shop.c: Added missing read_shop_message() declaration.
-
--- gg - shop.h: Removed unused GET_OBJ_NUM() macro.
-
--- gg - utils.h: Remove IF_STR(), make OBJWEAR_FLAGGED use the
- GET_OBJ_WEAR information.
-
--- gg - act.item.c: Removed superfluous '*next_obj'. (See the
- function variable declaration section.)
-
--- gg - act.wizard.c, db.c, db.h: Removed the stupid
- "zone number * 100 = starting room" assumptions.
-
- ||| ----- ----- ----- NOTE ----- ----- ----- NOTE ----- ----- ----- |||
-
- This now means you can have zones spanning anywhere, including over
- each other. You can have zone #5 going from room 1354 to 2139.
- That doesn't prevent zone #10 from going from 936 to 1734. We DO
- NOT check for overlap. Why? Because it can be useful. No longer
- are you restrained to having a zone repopulate when no one is in
- the whole place, now you can do room by room (up to the limit of
- 32,767 zones) for some places within a zone. In short, you no
- longer have to think of a "zone" in the same way any longer. Now
- it's simply a collection of loading commands for mobs/objs when a
- timer fires and/or no one is in it.
-
- ||| ----- ----- ----- NOTE ----- ----- ----- NOTE ----- ----- ----- |||
-
--- gg - castle.c: Fixed zone*100 assumptions.
- db.c: Added real_zone() for castle changes.
- Changed -1's in real_mobile and real_object appropriately.
-
--- gg - comm.c: close_socket(): Move NULL assignment up to fix mobile switching
- problem upon disconnection. (The switched into mobile still "busy" even
- though you reconnect after a drop.)
-
--- gg - comm.h: USING_LARGE/USING_SMALL: Not used, removed.
-
--- ae - zone file update: The zone files were all updated to suit the top
- and bottom indicators put into the code.
-
--- gg - db.c: load_zones(): See warning:
-
- ///// WARNING \\\\\
- The powers-that-be decided to change the format of the zone files
- to be more reasonable with the 'bottom room' number.
-
- TopRoom Lifespan ResetMode => BottomRoom TopRoom Lifespan ResetMode
-
- Stock zones will be updated but you will need to change your own
- zones by hand or your MUD will error out and not restart.
- \\\\\ WARNING /////
-
--- gg - graph.c: VALID_EDGE prototype.
-
--- gg - act.informative.c, constants.c, constants.h: where[] -> wear_where[]
-
-5/22/2001
-
--- ae - class.c: changed 'return 1', and 'return 0' to 'return TRUE' and
- 'return FALSE' respectively. This brings it into the same context
- as some of the other similar functions.
-
-5/23/2001
-
--- gg - act.item.c, act.wizard.c, handler.c, handler.h: Fix missing number
- (5.Y) support for equipment due to generic_find() fix.
-
-6/14/2001
-
--- gg - utils.c: dice(): Use number().
- number(): Add rand() comment.
-
--- gg - comm.c: init_game(): Save the MUD time on shutdown.
- db.c: reset_time(): Load beginning time from lib/etc/time.
- db.h: TIME_FILE: "lib/etc/time"
- utils.c: mud_time_to_secs(): New.
-
--- gg - db.c: interpret_espec()/parse_espec(): Finalize behavior
- of Boolean options. (i.e., don't crash)
-
--- gg - db.c: parse_mobile(): Clear MOB_NOTDEADYET flag on load.
-
--- gg - act.informative.c: sort_commands(): YUCK! Removed the
- wacky sorted command structure in favor of a new
- one both smaller and more to the point. Also
- killed YetAnotherBubbleSort(tm) in the process.
- ACMD(do_commands): Your brain will no longer stare at
- the 'if' statement and go 'Duh?'. Also fixed an
- extra \r\n pair on even multiples of 7.
-
--- gg - act.offensive.c: ACMD(do_order): Del
- spotted an apparent left-over from Diku, 'org_room'.
- Other than 'order followers cast 'teleport' leader',
- I'm not sure what it was supposed to do...but it's
- gone now.
-
--- gg - boards.c: Board_display_msg()/Board_remove_msg(): Use
- !is_number instead of !isdigit to prevent commands
- like 'remove 2.ring' from affecting the messages on
- a board instead.
-
--- gg - objsave.c: Crash_idlesave(): Make the GET_EQ() loop match
- the one in Crash_crashsave(), instead of saving the
- first object in your inventory for every object you
- currently had equipped.
-
--- gg - db.c: parse_simple_mob(), parse_mobile(), parse_object():
- Use more macros wherever already defined for them.
-
--- gg - objsave.c: Crash_delete_crashfile(), Crash_clean_file(),
- Crash_listrent(): If we can't read the rent_info
- information, punt early before we use garbage.
- Also fixed yet another '> -1' => NOTHING issue.
-
--- gg - act.wizard.c: do_stat(): 'stat file character' isn't on
- the character list; use extract_char_final().
-
--- gg - act.informative.c: do_examine(): Fix not being able to
- examine the inside of a 2.foo container.
-
--- gg - handler.c: extract_pending_chars(): O(n^2) -> O(n)
-
-6/25/2001
-
--- ae - handler.c: we forgot to add GET_CHA to affect_total(), noted
- by Del .
-
--- ae - autorun: Peter Ajamian submitted a new autorun that is much more
- configurable and robust. Information on it is contained
- autorun.README and the old autorun is still available as
- autorun.sh
-
-6/26/2001
-
--- ae - db.c: Changed the order of the available zone commands in
- load_zone() to match the order of the switch statement
- in reset_zone(). This makes it easier to double check
- the lists against one another. Also added a comment to
- each location pointing out that additions need to be made
- to both locations if a new zone command is added.
-
-6/27/2001
-
--- ae - act.wizard.c, class.c: Todd Laycock
- pointed out that with some 'careful' use of the advance
- command at the wrong time, people could end up snooping
- those of a higher level, and possibly introduce a nice
- little 'snoop loop'. The addition of a 'snoop_check()'
- routine that checks for higher/equal levels of snoopers
- or snoop_bys and stops snooping if this is found was
- introduced and is called from advance_level().
-
--- ae - shop.c: Rick Glover pointed out that the code
- in shopping_list() would rarely (if ever) give the correct
- results if someone was listing for an object and none were
- found. This code chunk got rewritten and a check for any
- objects found was added.
-
--- ae - *.c: Reformatted code to match what we do elsewhere (ie rather
- than 'struct blah * data', we generally use
- 'struct blah *data'.
-
--- ae - modify.c: Peter Ajamian submitted a patch
- that would fix the occasional strange behaviour of the
- prompt sometimes overwrites the last line of paged text in
- compact mode.
-
--- ae - mail.c: The postmaster will no longer allow you to send mail to
- deleted characters. This is done with a check called
- mail_recip_ok() which loads the character (if he exists) and
- checks for the PLR_DELETED flag. Other checks can be added
- as desired. Noted by Bob Castillo
-
--- ae - handler.c: Andrey Fidrya pointed out that
- while we check to ensure that a mob's prey is still in
- the world, that memory has the potential to be reassigned
- when the prey leaves the world. As such, in the
- extract_char_final() routine, we scan the world for those
- hunting the char being extracted and stop the hunt.
-
--- ae - act.wizard.c: In the continuing series of bugs reported by
- Andrey Fidrya , 'stat file '
- (when done on a player in-game) will turf his objsave
- file. Anyhow, the pfile should be the same as the in-game
- character regardless, so we may as well just stat the
- character and avoid the rent eating problem entirely.
-
-7/1/2001 -- gcc 3.0 warning day. Part 1.
-
--- gg - act.informative.c: Prototype sort_commands_helper.
-
--- gg - comm.c: main(); db.c: parse_room(), fread_string():
- Fix bad usages of variable argument functions.
-
--- gg - act.informative.c: do_users(): Fix up 'format' usage so it's more
- concise and gcc can check the arguments to sprintf().
-
--- gg - ChangeLog: Fix bpl12 being released twice.
-
--- gg - ban.c: do_ban(): Change to allow gcc to check arguments to
- variable argument functions.
-
--- gg - comm.c, utils.h: Move mud_time_to_secs() prototype.
-
-7/11/2001
-
--- gg - comm.c: Must not ever do function calls from an interrupt
- handler without making sure every function they call are
- reentrant. Think of the server as multi-threaded for it.
-
-7/24/2001
-
--- gg - db.c: Remove useless 'rec_count' increment.
-
-7/26/2001
-
--- gg - handler.c: extract_pending_chars(): Avoid free()'d memory
- when a chain of people die.
-
--- gg - comm.c, db.c: Save MUD time every 30 minutes and at
- shutdown using save_mud_time().
-
-8/2/2001
-
--- gg - comm.c: new_descriptor(): Useless memset() removed.
-
-8/14/2001
-
--- gg - act.informative.c: show_obj_to_char(): Die! Die! Die!
- All callers updated to new SHOW_OBJ_{LONG,SHORT,ACTION}
- mode parameters.
- show_obj_modifiers(): Split out of show_obj_to_char()
- for stuff like "(invisible)" and "humming sound."
- act.comm.c, structs.h: MAX_NOTE_LENGTH moved.
-
--- gg - Released patchlevel 19.
-
-******** Patchlevel 20 ***************************************************
-
-8/29/2001
-
--- gg - src/Makefile.lcc, doc/README.CYGWIN, src/structs.h: bpl19 -> bpl20
-
--- gg - src/structs.h: shop_rnum, shop_vnum
-
--- gg - fight.c: compute_thaco(): New function split out of hit().
- General: Gratuitous () removal.
- hit(): Made hit/miss logic easier to follow.
-
--- gg - act.informative.c, act.item.c, act.other.c, act.wizard.c, class.c,
- db.c, limits.c, objsave.c, olc.c, shop.c, spec_procs.c, utils.c:
- Remove redundant casts.
-
--- gg - shop.c: Clean up buffer sizes, use NULL and '\0' where
- appropriate, redundant cast removal, remove
- gratuitous parentheses.
-
--- gg - General: SPECIAL() and ACMD() generally assume their argument is
- writable and MAX_INPUT_LENGTH large so give an empty
- temporary buffer to scribble on.
-
--- gg - act.wizard.c: Prototype snoop_check().
- mail.c: Prototype mail_recip_ok(), merge two 'local functions'
- sections, 'const char *name' for mail_recip_ok().
- db.c, db.h: load_char(): 'const char *name'
- interpreter.c, interpreter.h: find_name(): 'const char *name'
-
-9/13/2001
-
--- ae - world/mob/186.mob: mob #18610 had a flag problem -- too many flags
- that didn't exist. Reported by Vladimir Nano
-
-
--- gg - shop.c: shopping_buy(): sprintf -> strcpy.
-
--- gg - db.c: check_bitvector_names(): New, checks for invalid bits set.
- check_objects(): Use check_bitvector_names().
- parse_mobile(): Check bitvectors loaded.
- Various: More GET_OBJ_* macros.
- constants.c: Count number of array entries for later checking.
-
-10/1/2001 -- George's e-mail backlog clearing day.
-
--- gg - act.wizard.c: do_restore(): Don't set the skills of a do_restore'd
- mobile. Noted by Albert Brauneis .
-
--- gg - db.c: file_to_string_alloc(): Be nicer when trying to load text
- files that people are reading. Idea from Peter Ajamian.
-
--- gg - handler.c: create_money(): Don't be so repetitive. At least until
- a variable argument strdup() function exists. Suggested by
- Axiem j'Terre .
-
--- gg - act.movement.c: do_doorcmd(): Do SET/REMOVE instead of TOGGLE to
- avoid exacerbating any unsynchronized door problem. Suggested by
- Del .
-
--- gg - Everywhere: xxx->in_room => IN_ROOM(xxx)
-
--- gg - class.c: title_female(): Extra implementor level removed as noted
- by Julian Buckley.
-
--- gg - interpreter.c: nanny(): Remove extra echo_on(). Noted by
- Del
-
-10/15/2001
-
--- gg - shop.c: ok_damage_shopkeeper(): Charmed shopkeepers aren't attack
- exempt. Set the shopkeeper MOB_NOCHARM if you don't want it in
- that situation in the first place.
-
--- gg - spells.c: spell_charm(): Charisma-based spell duration.
-
--- gg - mobact.c: mobile_activity(): Check charmed follower limits and
- "leash" any mobiles with memory based on master's charisma.
-
-10/20/2001
-
--- gg - mobact.c: Fix check to make sure we have a 'snarl' social.
-
--- gg - spec_procs.c: Reformatting. Change 0/1 to FALSE/TRUE.
- snake(): Fix poison frequency bug.
- cityguard(): Charisma modifications. Chris Epler's idea.
-
-10/21/2001
-
--- gg - lib/world/{obj,zon}/: Various extraneous spaces, ~, and $ removed.
-
-11/12/2001
-
--- ae - lib/world/shop/: Changed the shops from using hard-coded values for
- the item types to using the existing support for keywords.
- Also added a small (and dirty) conversion script written by
- gg to convert homegrown shops. (shop-convert.pl)
-
-11/14/2001
-
--- ae - lib/world/shop: 30.shp, 54.shp: Removed Uncle Juan's shop (3008).
- He still exists in the mob file (3008) and the items he sold
- still exist (3012, 3013, 3014), but his shop and room (3056)
- don't. Fixed an erroneous room in shop 5433, it had the wrong
- room listed therein.
-
--- gg - db.c: file_to_string_alloc(): Check showstr_count, not showstr_vector.
- modify.c: show_string(): NULL showstr_vector after free().
-
--- gg - shop.c, shop.h: shop->in_room should be room_vnum, not room_rnum.
- Stupid mixing of terminology!
- shop.c: ok_shop_room(): 'room' is a room_vnum.
-
-11/15/2001
-
--- ae - shop.c: SHOP_FUNC() in shopkeeper special should call the function
- with argument (which is passed to it), not 'arg' (which is a
- global, and as such, going away). Reported by Rich Paret
- .
-
--- ae - act.wizard.c: snoop_check() assumes a link exists. It shouldn't.
- Reported by Kras Kresh .
-
-11/24/2001
-
--- gg - sysdep.h: New configurable CIRCLE_GNU_LIBC_MEMORY_TRACK.
- comm.c: main(): Call 'mtrace()' if C_G_L_M_T (see above) is on.
- Call destroy_db() when finished.
- db.c: free_extra_descriptions(), destroy_db(): New.
- reset_zone(), free_obj(): Some NOTHING/NOWHERE/NOBODY fixes.
- free_obj(): Use free_extra_descriptions().
- db.h: Prototype free_extra_descriptions(), destroy_db().
- shop.h: destroy_shops(): New.
-
-11/26/2001
-
--- gg - comm.c, mail.h, spells.h, structs.h, utils.h: Minor quibble;
- negative numbers are actually unary expressions.
-
-11/30/2001
-
--- ae - act.wizard.c: do_advance() had a ch and victim reversed in a flag
- check. Oops. Reported by Patrick O'Laughlin
-
-
-12/4/2001
-
--- gg - act.item.c: name_from_drinkcon();
- act.movement.c: ok_pick();
- act.wizard.c: do_at(), do_goto(), do_teleport(), do_stat_object(),
- do_load(), do_vstat(), do_zreset(), perform_set();
- db.c: check_start_rooms(), read_mobile(), read_object();
- graph.c: find_first_step();
- handler.c: char_to_room(), obj_to_room(), extract_obj(),
- extract_char_final();
- objsave.c: Obj_from_store();
- olc.c: do_olc();
- shop.c: shop_producing(), list_all_shops(), list_detailed_shop();
- spec_assign.c: ASSIGNMOB(), ASSIGNOBJ(), ASSIGNROOM();
- utils.h: various macros;
- Final (?) batch of NOBODY/NOWHERE/NOTHING changes.
-
--- gg - db.h: Export "top_of_*" variables.
-
-12/10/2001
-
--- ae - spec_procs.c: magic_user() special tried to cast SLEEP in combat.
- SLEEP cannot be cast in combat -- changed this to POISON
- instead. Reported by Jason Ziegler
- limits.c, config.c: gain_exp() has a user definable bit of
- behaviour to stop mortals from levelling up to immort level
- if the mud admin desires. The default behaviour is to allow
- this. Enough people asked how to do this so it got added.
-
-12/11/2001
-
--- ae - 25.obj: Fixed some keys that were demarked as food. Doh.
- Reported by The Arrow
-
-1/2/2002
-
--- gg - act.wizard.c: do_stat(): Actually use the 'name' variable.
- Reported by .
-
--- gg - utils.c: number(): Duh, messed up the comment by accidently swapping
- the 'from' and 'to' variables. Must've been late.
- Noted by Juliano Ravasi Ferraz .
-
-1/10/2002
-
--- gg - db.c: renum_zone_table(): Better explanation of what it does, also
- noting some assumptions it makes. Fixed to use room_rnum
- instead of just 'int'.
-
--- gg - utils.c: room_is_dark(): New, from the old IS_DARK() macro.
- utils.h: Change IS_DARK; tweak some bounds checking on macros.
-
--- gg - act.social.c: free_social_messages(): New.
- ban.c: Free_Invalid_List(): New.
- boards.c: Board_clear_all(), Board_clear_board(): New.
- boards.h: Prototyping the above.
- comm.c: main(): Big list of other memory to free on shutdown.
- db.c: free_text_files(), free_player_index(), free_help(): New.
- do_reboot(): Use free_help().
- db.h: Prototype the above three new functions.
- fight.c: free_messages(), free_messages_type(): New.
- mail.c: clear_free_list(): New.
-
--- gg - castle.c: castle_mob_spec(): New.
- assign_kings_castle(): Use castle_mob_spec().
- castle_virtual(): Use correct NOWHERE/NOTHING/NOBODY.
-
--- gg - shop.c: read_type_list(): Handle end markers a little better.
-
--- gg - castle.c: block_way(): room_vnum not room_rnum.
- From Juliano Ravasi Ferraz .
-
-1/13/2002
-
--- gg - utils.c: get_line(): Handle \r in case the C library doesn't.
- Fixes running under Cygwin which doesn't remove it.
- From Patrick Dughi .
-
--- gg - structs.h: Move toward unsigned index variables. Leave it as a
- configuration option, defaulting to signed, for now.
-
--- gg - act.wizard.c: do_purge(): Properly destroy equipment with
- delayed extraction behavior. From
- Juliano Ravasi Ferraz .
-
--- gg - handler.c: extract_char(): Must remember the link-challenged.
-
--- gg - act.other.c, act.wizard.c, class.c, comm.c, db.c, db.h, handler.c,
- interpreter.c, limits.c, objsave.c: No longer twiddle the load
- room in save_char(), nor pass it as a parameter. Any place
- needing to change it use GET_LOADROOM. It's cleared upon login
- to prevent it from sticking around forever, unless PLR_LOADROOM
- is set. From Juliano Ravasi Ferraz .
-
-1/14/2002
-
--- ae - doc: Added the new pdf versions of the documents that have outdated
- all of the prior text files. With this patch level, most of
- the documents are (unfortunately) only available in PDF
- format, but with Patch Level 21, they will be available in
- text and html also.
-
-1/15/2002
-
--- gg - db.c: parse_simple_mob(): Format correct number (3) of arguments.
- From Juliano Ravasi Ferraz .
-
--- gg - act.wizard.c: do_teleport(): Stupid logic inversion fixed. This
- was introduced in an earlier change this patchlevel.
-
--- gg - act.wizard.c: do_load(): 'mob_vnum r_num'...? Fixed. Another
- inter-patchlevel fix.
-
--- gg - act.wizard.c: do_purge(): When clearing objects from characters,
- also clear the ground afterwards.
-
--- gg - ban.c: Free_Invalid_List();
- db.c: free_text_files(), free_help(), free_player_index():
- Make usable even when not shutting down.
-
--- gg - act.informative.c: print_object_location();
- objsave.c: Crash_is_unrentable():
- '[<>]=? NOWHERE' is a nonsensical comparison.
-
--- gg - shop.c: destroy_shops(): Make usable without shutdown.
-
--- gg - Released patchlevel 20.
-
-******** Patchlevel 21 ***************************************************
-
-1/6/2002
-
--- gg - Makefile.lcc, structs.h: bpl20 -> bpl21
- README.CYGWIN: Reword to avoid changes every patchlevel.
-
--- gg - db.c: Remove write-only variable 'top_of_p_file'.
- From Juliano Ravasi Ferraz .
-
--- gg - licheck: Last-minute file rename broke printing license.
-
-1/27/2002
-
--- gg - act.other.c, act.wizard.c, ban.c, class.c, comm.c, db.c, fight.c,
- house.c, interpreter.c, limits.c, modify.c, objsave.c,
- spells.c, utils.c, utils.h: Variable argument mudlog().
-
--- gg - comm.c, comm.h, handler.c, interpreter.c, modify.c: Replace
- SEND_TO_Q with varargs write_to_output().
-
--- gg - utils.c: strlcpy(): New.
- sprintbit(), sprinttype(): 'length' parameter.
-
--- gg - castle.c: tim(), tom(), dickndavid(): Use 'argument', not 'arg'.
-
--- gg - utils.c, utils.h, configure.in: Add proper autoconf support for
- strdup and strlcpy.
-
--- gg - sysdep.h, utils.c, utils.h: Do autoconf checks for str(n)casecmp
- and str(n)icmp.
-
--- gg - s/str_dup/strdup/ -- it's now an autoconf check.
-
--- gg - Variable argument send_to_char().
- comm.c: Remove sanity_check().
-
-1/31/2002
-
--- gg - sysdep.h, conf.h.in: Added autoconf check for mcheck.h.
-
--- gg - structs.h: Remove unused 'last_direction' from mob_special_data.
- From: Juliano Ravasi Ferraz
-
--- gg - structs.h: Make mob_special_data.attack_type a byte.
- act.wizard.c: Cast attack_type to integer for array access.
- From: Juliano Ravasi Ferraz
-
--- gg - act.movement.c act.wizard.c comm.c handler.c magic.c,
- spec_procs.c spells.c utils.c: Remove redundant prototypes.
-
--- gg - class.c, fight.c, objsave.c, shop.c: Added some casts for
- C++ warnings, some of which I think I removed recently..
-
--- gg - act.movement.c: do_doorcmd(): Since LOCK_DOOR is no longer
- a toggle and does what it says, lockpicking needed a
- new TOGGLE_LOCK macro to work properly. (Unless you
- always wanted to pick the lock locked, that is.)
-
--- gg - structs.h: 'struct index_data' needs to use the *_vnum types.
- From: Anton Graham
-
--- gg - spec_procs.c: SPECIAL(dump): Use SCMD_DROP for do_drop() call.
- From: Juliano Ravasi Ferraz
-
--- gg - interpreter.c: find_name() and get_ptable_by_name() did the
- same thing. Delete find_name() as it doesn't relate
- to other functions as much.
- From: Juliano Ravasi Ferraz
- db.c: get_{ptable,id}_by_name(): Don't use one_argument since
- names don't have whitespace anyway.
-
--- gg - db.h: Remove 'arg', 'buf', 'buf1', and 'buf2' global buffers.
-
--- gg - fight.c: death_cry(), damage();
- spells.c: spell_locate_object():
- ->in_room to IN_ROOM()
-
--- gg - act.wizard.c: do_restore(): Allow people to restore themselves.
- That's what I get for changing my mind at the last minute
- for '>=' instead of '>'.
-
--- gg - perl -i -pe 's/([^_])number\(/$1rand_number\(/g;' *.[ch]
- Renamed number() to rand_number() to avoid shadowing variables
- and also avoid a BSD function reportedly with that name.
-
--- gg - Fixed -Wshadow warnings, most having to do with 'index'.
-
-2/15/2002
-
--- gg - act.movement.c: Removed unused DOOR_LOCK macro.
- From: Juliano Ravasi Ferraz
-
--- gg - interpreter.c: special(): Delayed extraction can result in dead
- mobiles during special procedure check so avoid anyone
- to be removed.
- From: Welcor
- fight.c: perform_violence(): Likewise.
-
-2/20/2002
-
--- gg - comm.c: vwrite_to_output(): Fix sign/unsign warning.
- write_to_descriptor(): Not worth using varargs here.
- comm.h: Update write_to_descriptor() prototype.
-
-3/3/2002
-
--- gg - act.item.c: give_find_vict(): Use skip_spaces().
- From: Juliano Ravasi Ferraz
-
--- gg - fight.c: make_corpse(): Fix odd test. "A || (!A && B)"
- From: Juliano Ravasi Ferraz
-
--- gg - act.item.c: do_put(): Remove extra-dimensional bags.
- From: Juliano Ravasi Ferraz
-
--- gg - utils.h: Fixed unused OBJAFF_FLAGGED.
- From: "Kras Kresh"
-
--- gg - shop.c: Give discounts (or price-inflation) based on charisma.
-
--- gg - act.wizard.c: do_advance(): Run autowiz when demoting gods.
- class.c: do_start(): Reset max hit/mana/move but don't reset playtime.
- db.c: init_char(): Use macros for more structure accesses. Don't set
- hit/mana/move for characters here, but do set them for the
- first character (implementor). Also comment the height/weight
- values better.
- limits.c: check_autowiz(): Rename to run_autowiz() and change to run
- instead of test.
- gain_exp(), gain_exp_regardless(): check_autowiz -> run_autowiz.
-
-3/20/2002
-
--- gg - cnf/aclocal.m4: Use 'official' method of a 3rd argument to AC_DEFINE()
- to generate autoheader hints instead of a local hack to
- autoheader itself.
- cnf/configure.in: Add checks for more functions, more prototypes, and
- mcheck.h.
-
--- gg - conf.h.in: Regenerated due to AC_CHECK_PROTO changes.
-
--- gg - act.wizard.c: do_stat_character(): Adjusted formatting of output.
-
--- gg - alias.c: write_aliases(), write_aliases(); objsave.c: Add buffer
- length argument to get_filename().
- read_aliases(): Error-check fscanf() results. Avoids infinite loop
- while sucking down memory.
- utils.c: get_filename(): Need a buffer length argument to write
- proper amount.
- utils.h: get_filename() prototype adjustment.
-
--- gg - structs.h: title_type is no longer used.
-
-4/9/2002
-
--- gg - castle.c: king_welmar(), castle_twin_proc();
- comm.c: process_output();
- db.c: parse_room(), char_to_store(), fread_string(), file_to_string();
- handler.c: create_money();
- shop.c: shopping_buy();
- spec_procs.c: mayor(), puff();
- utils.c: mudlog():
- String buffer size assumption comments.
-
--- gg - configure: Regenerated from configure.in
-
--- gg - act.informative.c: show_obj_to_char(): Might as well use snprintf().
- db.c: global: Remove unused spell_info[] extern;
- load_help(): Avoid help entry overflows.
- shop.c: evaluate_expression(): Increase 'name' buffer size.
- act.item.c: name_from_drinkcon();
- act.wizard.c: perform_set();
- ban.c: load_banned(), do_ban();
- comm.c: make_prompt(), new_descriptor(), perform_subst();
- db.c: save_char();
- interpreter.c: nanny();
- mail.c: store_mail();
- mobact.c: aggressive_mob_on_a_leash();
- modify.c: show_string();
- shop.c: evaluate_expression(), shopping_list();
- spec_procs.c: cityguard();
- spell_parser.c: say_spell(), find_skill_num();
- spells.h: struct spell_info_type;
- utils.c: strlcpy():
- String buffer size comments.
-
--- gg - class.c; spec_procs.c: guild_guard(); structs.h: Fix use of integers
- for room virtual numbers in guild_info[] array.
- From: Edward J Glamkowski
- class.c: find_class_bitvector();
- act.informative.c: do_who(), do_users():
- Make find_class_bitvector() use parse_class() and loop itself.
- Partially from: Edward J Glamkowski
-
--- gg - comm.c: make_prompt(): People with 'disp none' need prompt[]
- cleared first.
-
--- gg - utils.c: mudlog(): Fixed parenthesis lost in reformatting.
- From: kras_kresh@hotmail.com
-
-4/15/2002
-
--- gg - Makefile.in, conf.h.in, sysdep.h: Check for snprintf().
- bsd-snprintf.c, bsd-snprintf.h: BSD-licensed replacements for
- snprintf() and vsnprintf() for platforms lacking them.
- cnf/configure.in: HAVE_(V)SNPRINTF checks.
- configure: Regenerated.
-
-******** Patchlevel 22 ***************************************************
-
-4/30/2002
-
--- gg - Makefile.lcc, structs.h, constants.c: bpl21 -> bpl22
-
--- gg - class.c: level_exp(): Fixed thief experience progression to be
- less jumpy. Old: 10k 20k 30k 70k.
-
--- gg - boards.c: find_board(): Check immortals' inventories for boards
- so they can carry them around. Requires the config.c
- setting 'load_into_inventory = YES' to actually be useful.
-
-5/1/2002
-
--- gg - shop.c: assign_the_shopkeepers(): Avoid assigning 'shop_keeper'
- special procedure to SHOP_FUNC().
- From: "Kras Kresh"
-
--- gg - act.movement.c: ok_pick(): Actually use dex_app_skill[].p_locks.
- From: Edward J Glamkowski
-
--- gg - objsave.c: gen_receptionist(): Make random actions work again.
- From: "Kras Kresh"
-
--- gg - house.c: House_list_guests(): Print out when all guests listed
- are actually deleted instead of leaving empty "Guests:".
- From: "Bob Castillo"
-
-5/2/2002
-
--- gg - handler.c: affect_total(): Bring affect_total() in line with
- do_set()'s handling of godly statistics.
- From: Edward J Glamkowski
-
-5/3/2002
-
--- ae - act.informative.c: do_weather(): added info on the actual numbers
- for god+.
- From: Edward J Glamkowski
-
-5/17/2002
-
--- gg - utils.c, utils.h: get_filename(): 'name' should be 'const char *'.
-
--- gg - interpreter.c: nanny(): Remove aliases upon self-delete.
- alias.c: delete_aliases(): New.
-
--- gg - conf.h.win: Updated to new 'configure' checks.
- sysdep.h: Aliases for (v)snprintf and MAX_PATH for Windows.
-
-5/19/2002
-
--- ae - building.tex: corrected the order of UNDERWATER and FLYING sector
- types. From: nano.vladimir@slsp.sk
-
--- ae - shop.c: list_detailed_shop(): A few \r\n markers were missing in the
- output, specifically before the Shopkeeper:, Buys:, and
- Buy at: lines.
- From: Edward J Glamkowski
-
-6/13/2002
-
--- gg - doc/coding.doc: Beginnings of Chapter 2.
-
-6/17/2002
-
--- gg - doc/coding.doc: Sections 2.2.1 (partial) and 2.2.3. Some additions
- to section 2.4.5. Also ran it through ispell.
-
-6/21/2002
-
--- gg - doc/coding.doc: Finish (?) section 2.4. Add TODO list.
-
--- gg - doc/coding.doc: Finish section 2.2.2.
-
--- gg - handler.h: Remove prototypes for non-existant functions:
- get_obj, get_obj_in_list, Crash_get_filename.
-
--- gg - comm.h: Remove prototype for non-existant function: perform_to_all.
-
-6/24/2002
-
--- gg - doc/coding.doc: Finish section 2.2.1.
-
-6/25/2002
-
--- gg - doc/coding.doc: Finish sections 3.6 and 3.7.
-
-6/28/2002
-
--- gg - act.informative.c: look_at_room(): Use '%s' format for rooms.
-
--- gg - act.informative.c: list_one_char(): Missed a '+1' when converting
- UPPER() usage. Found by Ken Ray .
-
-9/06/2002
-
--- ae - building.tex: Fixed a double "action bitvector" description (the
- second was a typo for "affection bitvector").
- From Ken Ray
-
--- ae - 30.obj: Changed the sdesc of #3003 (firebreather) to 'bottle'.
- From Ken Ray
-
--- ae - Various READMEs: Changed 'circle30bpl12' to be generic, and fixed some
- small typos. From Julian Buckley
-
-9/25/2002
-
--- gg - act.other.c: do_display(); structs.h: Auto-prompt display.
-
--- gg - act.wizard.c: do_wiznet(): Add missing "%s" formats in send_to_char().
-
--- gg - boards.c: Board_remove_msg(): Clear orphaned board message when
- shifting the list down. Caused free() problems on shutdown.
-
--- gg - comm.c: make_prompt(): Reorganization to make adding bits easier.
-
--- gg - act.comm.c: do_gen_comm(): Missing \r\n at end of message.
- From: "Thomas Arp"
-
--- gg - act.item.c: perform_put(): Don't allow cursed items to be put into
- a container not in the character's inventory.
-
--- gg - comm.c: affect_update() is in magic.c, not spells.c
- From: Mathew Earle Reuther
-
--- gg - act.other.c: do_gen_tog(): Add 'bitvector_t' comment on variable.
- From: Mike Stilson
-
--- gg - act.other.c: do_quit(): Fix load room setting to virtual.
- From: "The Fungi"
-
--- gg - shop.c: list_detailed_shop(): Fix '>= 0' check to be '!= NOBODY'.
- From: "The Fungi"
-
--- gg - act.informative.c: do_where(); act.wizard.c: do_show();
- spec_procs.c: list_skills(); utils.c: sprintbit():
- 'nlen' should be 'int', to check return value of snprintf().
- From: Thomas Arp
-
--- gg - shop.c: customer_string(): Loop reorganized to be cleaner and
- remove a pointless use of strlcpy().
-
-10/03/2002
-
--- gg - interpreter.c: perform_dupe_check(): Make immortals that have switched
- into disconnected mortal bodies do a return instead of being
- disconnected. Noted by: "Kras Kresh"
-
--- gg - magic.c: mag_unaffects(): Make SPELL_HEAL special-case into a generic
- solution instead.
-
--- gg - interpreter.c: nanny(): Destroy d->character if player answers 'N' to
- "Did I get that right?" prompt. There may be lingering
- information from a deleted character.
- From: "Kras Kresh"
-
--- gg - shop.c: shopping_list(): Only display "none of those found" message
- if actually asked to search for an object.
- From: "Ken Ray"
-
--- gg - comm.c: game_loop(): Change handling of process_output() and
- ->has_prompt.
- vwrite_to_output(): Truncate text to fit on overflow instead
- of throwing it away.
- write_to_descriptor(): Return number of bytes written.
- process_output(): Keep data on socket write block.
-
-******** CircleMUD 3.1 ***************************************************
-
-11/15/2002
-
--- gg - comm.c: echo_on(), echo_off(): "%s" format strings, though not
- necessary.
- make_prompt(): Revert changeset #1.115.
- process_output(): Cast 'result' to avoid unsigned warnings.
-
--- gg - structs.h: Force 'byte' to signed char. Some platforms use
- an unsigned char by default.
-
--- gg - limits.c: gain_condition(): Cosmetic return -> break change.
-
--- gg - lib/text/credits: Added Alex Fletcher, George Greer, and Daniel
- Koepke. Changed jelson@ address to cdev@.
-
--- gg - shop.h: Make it more obvious the WILL_* #define values are
- bitvectors and not simply counting.
- From: Carlton Colter
-
--- gg - comm.c: process_output(): Correctly switch to large buffer
- when text would just barely fit in the small buffer
- then forget to change.
- From: Yoram Harmelin
-
--- gg - cnf/configure.in, cnf/aclocal.m4: Added -fno-builtin detection
- to fix prototype testing. Functions such as bzero(),
- printf(), and fprintf() were receiving false negatives.
- configure: Regenerated.
-
-11/17/2002
-
--- gg - utils.h: Make TOGGLE_BIT "x^=y" instead of "x=x^y" to avoid
- a VC++ warning.
-
--- gg - house.c: House_delete_file(): Make 'vnum' a 'room_vnum' type.
-
--- gg - castle.c: castle_mob_spec(): Use 'mob_vnum' type.
-
--- ae - Updated docs, and added coding.tex/coding.pdf
-
--- gg - autorun, autorun.cmd, autorun.pl, autorun.sh: Remove '3.0'
- version number, to avoid needing to update it.
-
--- gg - Makefile.lcc, constants.c, structs.h: bpl22 -> 3.1
-
--- gg - Makefile.amiga, Makefile.arc, Makefile.in, Makefile.lcc, Makefile.msvc,
- Makefile.os2, Smakefile, magic.c, structs.h, Makefile.in:
- Remove '3.0' version numbers to avoid updates.
-
--- gg - util/Makefile.in: Remove '3.0' version numbers to avoid updates.
-
--- gg - lib/world/README: Remove '3.0' version numbers to avoid updates.
-
--- gg - lib/text/greetings, lib/text/imotd: Change 3.0 to 3.1.
-
--- gg - doc/README-NOW: Deleted.
-
--- gg - doc/README.AMIGA, doc/README.ARC, doc/README.BORLAND, doc/README.CYGWIN,
- doc/README.MSVC4, doc/README.MSVC5, doc/README.MSVC6,
- doc/README.OS2, doc/README.UNIX, doc/README.VMS,
- doc/README.WATCOM, doc/README.WIN: Remove '3.0' version numbers
- to avoid updates.
+-- ae - spells.c: fixed an output type in locate_object courtesy of
+ Edward Glamkowski
diff --git a/bin/vms_circlemud.com b/bin/vms_circlemud.com
new file mode 100644
index 0000000..8bd47e0
--- /dev/null
+++ b/bin/vms_circlemud.com
@@ -0,0 +1,48 @@
+$!
+$! VMS_CIRCLEMUD.COM
+$! Written By: Robert Alan Byer
+$! byer@mail.ourservers.net
+$!
+$! This command procedure is called from [-]VMS_AUTORUN.COM to run CIRCLE.EXE
+$! as a standalone detached process.
+$!
+$! The CIRCLE.EXE accepts the following parameters.
+$!
+$! -m Mini-Mud Mode. Mini-mud will be one of your most powerful
+$! debugging tools; it causes Circle to boot with an abridged
+$! world, cutting the boot time down to several seconds. It
+$! is useful for testing features with are not world-related.
+$! (i.e. new commands or spells)
+$!
+$! -q Quick boot. Prevents checking of times out object files.
+$! Every time Circle boots, it checks every object file to
+$! see if it has timed out; if so, it is deleted. This is
+$! done primarily to save disk space. If time is more important
+$! to you than disk space, use the -q option. "-q" is
+$! automatically activated when you use "-m"
+$!
+$! -d Data directory. Useful as a debugging and development tool,
+$! if you want to keep one or more sets of game data in addition
+$! to the standard set, and choose which set is to be used at
+$! run-time. Example, you can copy the entire world into a
+$! seperate directory so you can test additions without
+$! messing up the existing world files. The default directory
+$! is "lib". Any core dumps (may they never happen to you!)
+$! will take place in the selected data directory.
+$!
+$! port Port selection. Allows you to choose on which port the
+$! game is to listen for connections. The default is 4000,
+$! which is historically the port used by most DikuMUDs.
+$!
+$!
+$! Define The Symbol For CIRCLE.EXE
+$!
+$ CIRCLE :== $CIRCLEMUD_ROOT:[BIN]CIRCLE.EXE
+$!
+$! Run CircleMUD.
+$!
+$ CIRCLE
+$!
+$! Time To Exit This Procedure.
+$!
+$ EXIT
diff --git a/bin/vms_circlemud_utils.com b/bin/vms_circlemud_utils.com
new file mode 100644
index 0000000..9ead68f
--- /dev/null
+++ b/bin/vms_circlemud_utils.com
@@ -0,0 +1,16 @@
+$!
+$! VMS_CIRCLEMUD_UTILS.COM
+$! Written By: Robert Alan Byer
+$! byer@mail.ourservers.net
+$!
+$! Define The CircleMUD Symbols.
+$!
+$ DELOBJS :== $CIRCLEMUD_BIN:DELOBJS.EXE
+$ LISTRENT :== $CIRCLEMUD_BIN:LISTRENT.EXE
+$ MUDPASSWD :== $CIRCLEMUD_BIN:MUDPASSWD.EXE
+$ PLAY2TO3 :== $CIRCLEMUD_BIN:PLAY2TO3.EXE
+$ PURGEPLAY :== $CIRCLEMUD_BIN:PURGEPLAY.EXE
+$ SHOPCONV :== $CIRCLEMUD_BIN:SHOPCONV.EXE
+$ SHOWPLAY :== $CIRCLEMUD_BIN:SHOWPLAY.EXE
+$ SPLIT :== $CIRCLEMUD_BIN:SPLIT.EXE
+$ WLD2HTML :== $CIRCLEMUD_BIN:WLD2HTML.EXE
diff --git a/doc/Changelog-3.0 b/doc/Changelog-3.0
new file mode 100644
index 0000000..a57065e
--- /dev/null
+++ b/doc/Changelog-3.0
@@ -0,0 +1,4253 @@
+Release history:
+
+Version 3.1 (yes, no beta pl): November 18, 2002
+Version 3.00 beta pl22 release: October 4, 2002
+Version 3.00 beta pl21 release: April 15, 2002
+Version 3.00 beta pl20 release: January 15, 2002
+Version 3.00 beta pl19 release: August 14, 2001
+Version 3.00 beta pl18 release: March 18, 2001
+Version 3.00 beta pl17 release: January 23, 2000
+Version 3.00 beta pl16 release: August 30, 1999
+Version 3.00 beta pl15 release: March 16, 1999
+Version 3.00 beta pl14 release: July 3, 1998
+Version 3.00 beta pl13a release: June 4, 1998
+Version 3.00 beta pl13 release: June 1, 1998
+Version 3.00 beta pl12 release: October 29, 1997
+Version 3.00 beta pl11 release: April 14, 1996
+Version 3.00 beta pl10 release: March 11, 1996
+Version 3.00 beta pl9 release: February 6, 1996
+Version 3.00 beta pl8 release: May 23, 1995
+Version 3.00 beta pl7 release: March 9, 1995
+Version 3.00 beta pl6 release: March 6, 1995
+Version 3.00 beta pl5 release: February 23, 1995
+Version 3.00 beta pl4 release: September 28, 1994
+Version 3.00 beta pl1-3, internal releases for beta-testers.
+Version 3.00 alpha: Ran on net for testing. Code not released.
+Version 2.20 release: November 17, 1993
+Version 2.11 release: September 19, 1993
+Version 2.10 release: September 1, 1993
+Version 2.02 release: Late August 1993
+Version 2.01 release: Early August 1993
+Version 2.00 release: July 16, 1993 (Initial public release)
+
+
+
+Legend
+------
+JE = Jeremy Elson (jelson@circlemud.org) Since Jul 16, 1993
+AE = Alex Fletcher (furry@circlemud.org) Since Feb 23, 1995
+GG = George Greer (greerga@circlemud.org) Since Oct 14, 1997
+DK = Daniel A. Koepke (dkoepke@circlemud.org) Since Jul 11, 1999
+
+ New applicants must have a last name alphabetically after
+'Koepke' and will only be accepted on December 2, 2001.
+
+--- 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 occasion, 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 ) 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
+
+2/22/95 JE change RLIMIT code for systems that don't have RLIMIT_INFINITY
+ reported by Steven Serocki
+
+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
+
+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
+
+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
+
+3/9/95 JE "set class" output corrected.
+ Spotted by Ryan Baker .
+
+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 poisoned 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-invisibility 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 utilities that no longer exist).
+ Found by Jared McDonald
+
+5/23/95 JE Released patchlevel 8.
+
+
+--- Patchlevel 9
+
+(No dates on this patchlevel... sorry!)
+-- Made Circle self-configuring using the GNU 'autoconf' package; created
+ new header files conf.h and sysdep.h. Most standard library files are
+ now conditionally included from sysdep.h and have been removed from the
+ .c files. -lsocket/-lnsl libraries are automatically used if needed.
+ Circle's built-in 'random' function is used only if there is no random()
+ on the system.. many other autoconfigured aspects as well.
+
+-- Rewrote much of the code for the login/load sequence to prevent duping.
+ Duping should hopefully be impossible now. Fixed the dumb bug that allowed
+ people to cut off players by logging in and out without a password.
+
+-- Added 20 second limit to entering a password before you're cut off.
+
+-- Fixed the braindead way LOADROOM works. Syntax is now simply "set ras
+ loadroom " or "set ras loadroom off". Loadroom now properly set
+ when someone quits out of their house, so they go back there by default.
+
+-- Truncate message board titles to 80 characters or less - fixes a crash
+ bug.
+
+-- Changed tunnels so that they are "full" only if filled with a PC, not
+ just any char.
+
+-- Redid the code for setting the minimum levels classes need to be before
+ they can use spells and skills, and moved it to class.c. It's now *much*
+ easier to add new classes--- stupidly, under the old system, every time
+ you added a new class all of the existing spello() calls had to be
+ changed! See class.c to see how spell-level setting is done now.
+
+-- Fixed the bug which popped up in systems such as FreeBSD which incorrectly
+ reported the number of available file descriptors if the number was
+ unlimited (RLIM_INFINITY).
+
+-- Fixed a bug causing crashes if text files (motd/imotd/news/etc) are empty.
+
+-- FINALLY fixed the dumb bug causing the first char (implementor) to log
+ in to come in with all stats of 0.
+
+-- Changed magic.c so the number of affects a spell can have is not
+ arbitrarily limited to 2.
+
+-- Immortals can walk past guildguards.
+
+-- Fixed up some spells (create water works now).
+
+-- Added 'show houses' for Mr. Christopher Epler. :)
+
+-- Fixed a small error in one of the comments in boards.c describing how
+ to add a new board.
+ Found by Stefan Rensing
+
+******** Patchlevel 10 ***************************************************
+
+-- Fixed all the (dumb) definitions of str_app, int_app, etc. -- these
+ used to be arrays of 36 because a long time ago I stupidly thought those
+ arrays had to be extended to the number of levels on the MUD. They have
+ been correctly changed to reflect the possible attribute values of
+ characters (3-18 for PCs, 3-25 for NPCs and Gods).
+
+-- Added Michael Buselli's patches for an enhanced "more" pager that lets
+ you go back, forward, refresh, etc. Nice work, Michael.
+
+-- Made Circle compile under HP/UX with the help of Ben Denckla (required
+ an #ifdef for RLIM_INFINITY). Made some other fixes to get_max_descs()
+ in comm.c as well. I hate this function.
+
+-- Removed the REUSEPORT setsockopt() call from comm.c when opening the
+ mother connection. This never made any sense in the first place since
+ REUSEPORT is a UDP and not a TCP thing, plus it broke Circle under IRIX
+ 5.3+.
+
+-- Incorporated David Carver's OS/2 patches. Circle should now compile
+ under OS/2 more or less out of the box (instructions included).
+
+-- Added error checking to number() in case its called with the arguments
+ backwards.
+
+-- Added the skill_name() function to safely resolve spell numbers to
+ spell or skill names. Now used to stat potions, staves, etc.
+
+-- Fixed the but in the usage of is_abbrev in find_skill_num that prevented
+ spell names from being abbreviated. Reported by numerous people.
+
+-- Fixed a bug which prevented mag_materials() from working at all (although
+ it isn't used in standard Circle code, anyway.)
+
+-- Changed a str_cmp to isname in the FIND_OBJ_EQUIP case of generic_find()
+ in handler.c for better location of objects.
+ Sent by one of our best bugfinding teams, Eric Green and Stefan Wasilewski,
+ KEEP IT UP, GUYS! :-)
+
+-- Fixed the operation of peaceful rooms so that bash, etc, also don't work.
+
+-- Fixed a dumb bug where aliases (which use player_specials) were freed
+ *after* player_specials were freed. Reported by numerous people.
+
+-- Added values for movement loss for flying and underwater sector types.
+
+-- Bug fixed in do_set which made the PC/NPC checks not work.
+
+-- Changed backstab multipliers from a table to a formula to make adding
+ new levels easier. (Adding new levels is now trivial; you just have to
+ change the #defines in structs.h for the LVL_xx constants, and then
+ define the titles and exp required for each level in constants.c).
+
+-- do_stat_obj (act.wizard.c) updated to reflect building.doc (very old
+ bugs lurking in here) -- stat display changed to reflect real meanings
+ of values[0] - values[3] of objects.
+
+-- do_steal changed to simplify the no-psteal code (psteal simply always
+ fails on muds where it is not allowed).
+
+-- You can't wake up someone who's dying. (do_wake)
+ Patch sent by Lincoln Chan
+
+-- Message seen when a door opens from the other side fixed. (do_open)
+ Patch sent by Lincoln Chan
+
+-- All utilities ported and fixed.
+
+-- Some changes to Makefile template Makefile.in
+
+-- Help system completely rewritten to use split help files and an
+ 'index' file just like the world files; help files are loaded into
+ memory entirely instead of keeping file positions and an open file.
+ New copy of help files imported from Chris Epler (cepler@cambot.res.jhu.edu)
+
+-- Rewrote one_word() in interpreter.c (used to be modify.c) as part of the
+ help system rewrite.
+
+-- New world/ hierarchy from Furry (furry@cambot.res.jhu.edu)
+
+-- New 'messages' file from Furry (furry@cambot.res.jhu.edu)
+
+-- New 'configure' script which should detect nsl and socket libraries
+ more reliably.
+
+-- All scripts rewritten (autorun, automaint, purgeobjs, etc.) to use sh
+ instead of csh. They've been fixed, too (most of them were broken because
+ they had not been modified since the location of certain files changed).
+ Autorun rewrite by Stuart Lamble
+
+-- New FAQ by Furry (furry@cambot.res.jhu.edu)
+
+
+******** Patchlevel 11 ***************************************************
+
+
+-- Patches to make Circle compile under MSVC++ 4.0 under Windows 95:
+ Created a 'conf.h.win' to act as Windows' conf.h. Created a new
+ constant, CIRCLE_WINDOWS, to use for #ifdef's. Changed OS2's constant
+ from OS2 to CIRCLE_OS2 for consistency.
+
+ Changes to some of the types throughout the code (e.g. changing some
+ int's to size_t's.
+
+ Changed the type of all sockets from int to socket_t; sysdep.h
+ typedef's int as being socket_t under UNIX and SOCKET to socket_t
+ under Windows.
+
+ Changes to some of the code in comm.c (with ifdef's) to account for
+ some of the differences between WinSock and Berkeley Sockets.
+
+ Wrote a "fake" gettimeofday() function which is an interface to the
+ Win32 GetTickCount() and a WinSock-compatible nonblock().
+
+ Renamed 'act.obj.c' to 'act.item.c' to defeat an apparent bug in
+ MSVC++ that refuses to properly object files that have the word
+ "obj" in their name (i.e. act.obj.obj).
+
+ Changed the boot-up procedure so that the max player calculation is
+ done before socket initialization (this is done so that the max can
+ be reduced from the MAX_PLAYERS value in comm.c if WSAStartup() tells
+ us we have less than that number of max sockets available.
+
+ Created a CLOSE_SOCKET macro: under UNIX, this is #defined as
+ close(); under Windows, it's defined as closesocket.
+
+ #defined log(x) as basic_mud_log(x) to prevent namespace collision
+ with the mathematical log() function.
+
+-- Various fixes to the 'configure' script:
+ The '-lsocket' library should hopefully be detected more reliably
+ (by detecting -lnsl first; some systems need -lnsl before -lsocket
+ will link successfully).
+
+ The -cckr option is given to the compiler if we are not using gcc and
+ it is determined that your system's cc can take the -cckr argument.
+
+ -fno-strict-prototypes given if we're using gcc (this should hopefully
+ alleviate the continuing headache of getting function prototypes to
+ work).
+
+ Include a prototype for random and srandom if it's determined that
+ we're using Circle's random/srandom functions and not libc's.
+
+ Check for the presence of arpa/telnet.h, and use our own local copy
+ (telnet.h is now included with the Circle distribution) if it does
+ not exist.
+
+ Check for sys/types.h before including it.
+
+ Configure recreated with GNU autoconf v2.9 (previously was 2.7).
+
+-- Made some fixes to the autorun script: most notably, it was not passing
+ command-line parameters to the MUD, meaning that you had to change the
+ port in config.c in order for it to be changed if you were using autorun.
+ This means that port-number changing now works the way it was documented
+ (autorun setting takes precedence over config.c).
+
+-- Made some changes to conf.h.os2 to reflect the new configure script and
+ the changing of the constant from OS2 to CIRCLE_OS2.
+
+-- Moved heartbeat functions out of game_loop and into their own function
+ which is called by game_loop (seems more logical this way to me).
+
+-- game_loop, comm.c: The code which controls the tick-timing was rewritten;
+ the timer is now much more accurate (does not drift with time), and
+ gracefully handles making up for lost ticks if the MUD is suspended for
+ more than a single tick-length (e.g. if the scheduler keeps it waiting
+ for a long time under heavy load). Added a 'timeadd' function to add
+ two timevals for use with the calculations.
+
+-- Added a timeout to the "What is your name?" prompt; should prevent denial
+ of service attacks whereby people use up all available descriptors by
+ repeatedly telnetting into the game and staying idle. (Though I have not
+ received reports of this happening, I'm sure someone has thought of it.)
+
+-- Fixed various typos in the code, help files, and libraries.
+
+-- do_advance, act.wizard.c: Does not allow someone to be advanced to the
+ level they already are.
+
+-- invalid_name, ban.c: Changed the buffer size from MAX_NAME_LENGTH to
+ MAX_INPUT_LENGTH; was causing crashes when very long names were given.
+
+-- Fixed look_in_obj, act.informative.c, to prevent crashes when looking into
+ fountains or cups with invalid values.
+
+-- Changed the semantics of top_of_helpt so that it points to the top element,
+ not the number of elements, in the help table (done to be consistent with
+ the other top_of_xxx variables). Fixed do_help in act.informative.c to
+ prevent crashes if "help zzzzzz" is typed.
+
+-- Reshuffled the position of alias freeing in free_char yet again (I think
+ I've finally gotten this one right).
+
+-- handler.c, affect_from_char(): Changed the list traversal over to the
+ classic method used when traversing a list and deleting items as we go
+ (i.e. keeping around a temp variable with hjp->next). (This bug was found
+ courtesy of Win95's completely unforgiving memory manager.. unlike most
+ UNIX memory managers, it causes crashes if you try to use memory that
+ was just freed.... Win95 is almost as good as Electric Fence! :-))
+
+-- handler.c, extract_char(): Changed "if (ch->desc != NULL)" to
+ "if (!freed && ch->desc != NULL)" because ch was potentially freed in the
+ previous statement. (This bug was also found by Win 95...)
+
+-- limits.c, point_update(): gain_condition called first rather than last;
+ causes crashes when gain_condition() is called on a character that has just
+ bled to death (i.e. killed by point_update()). (This bug was also found
+ by Win 95...)
+
+-- Some similar cases of structures being used after they were freed in
+ shop.c fixed (found by Win95...)
+
+-- Fixed the pet shops so pets are no longer priced at 0 coins; pet prices
+ are now 300 coins times the level of the pet.
+
+-- spell_parser.c, get_skillname(): If the skill is -1, return UNUSED instead
+ of UNDEFINED (makes stat and scroll of identify output look better).
+
+-- Added more sanity checks to spell_parser.c (spell_level() and cast_spell())
+ to prevent crashes if scrolls are created with wild spell numbers.
+
+-- spell_parser.c, spello() and unused_spell(): Changed to use a loop
+ instead of enumerating all classes; should make adding new classes easier.
+
+-- spells.h: Changed types of mana_{min,max,change} to int to correctly handle
+ spells which take large mana requirements.
+
+-- handler.c, generic_find(): Silly bug introduced in pl10 fixed whereby
+ you can't look in objects if you are equipped.
+
+-- mail.h: Changed a '1' to a 'sizeof(char)' in the MudMail system (caused
+ assertion failures on architectures where sizeof(char) != 1)
+
+-- utils.c, sprinttype(): Cleaned up the code. Looked silly before.
+
+-- Fixes to autowiz.c: Added an fflush() at the end so that wizlists are
+ correctly updated. Also removed some old bzero() calls that were still
+ lurking from the old days (modern SYSV systems don't like bzero() at all.)
+ Took out the SO_REUSEPORT socket option.
+
+-- Fixed wld2html.c: The parser code was quite old and could not handle
+ the 3.0 world files with ASCII bitvectors. wld2html now works correctly.
+
+-- Changed "++col" to "col++" in Michael Buselli's pager code (patch sent by
+ him).
+
+-- Brought in the new world files and 'messages' file from Furry (scrolls
+ of identify and the 'harm' spell now work) and new help files from
+ Chris Epler.
+
+-- Took out the very old bug, typo, and idea files from the standard
+ distribution.
+
+
+******** Patchlevel 12 ***************************************************
+
+-- I changed the logic of prompt generation so that prompts are generated
+ as plain output, the same as all other output (e.g. using send_to_char()),
+ specifically so that both the regular output and the player's new prompt
+ can be written to the operating system using a single write() system call.
+ In many cases, this cuts in half the number of TCP packets generated
+ and received! This is a big win for slow machines and machines with
+ slow Internet links (e.g. a modem)!
+
+
+To illustrate this point, I'll show typical TCP exchanges between MUD
+clients and servers under pl11 vs. pl12. These exchanges were all
+recorded using Van Jacobson's tcpdump tool, which can be downloaded from
+ftp.ee.lbl.gov. The window advertisements have been removed from the
+output to make it more readable.
+
+Here's a typical packet exchange between a MUD client and server under
+pl11 when a player enters a command (in this case, "look"):
+
+16:17:35.287187 client.32877 > mudserver.4000: P 41:47(6) ack 2579
+16:17:35.333721 mudserver.4000 > client.32877: . ack 47
+16:17:35.334197 mudserver.4000 > client.32877: P 2579:3132(553) ack 47
+16:17:35.376089 client.32877 > mudserver.4000: . ack 3132 win 8760 (DF)
+16:17:35.376162 mudserver.4000 > client.32877: P 3132:3134(2) ack 47
+16:17:35.426039 client.32877 > mudserver.4000: . ack 3134
+
+The first packet is the 6-byte command, "look\r\n", sent from client to
+server. The second packet is the server's TCP acknowledgement (ACK) of
+those 6 bytes. The third packet is the 553-byte output of the command
+"look" sent from server to client. The fourth packet is the client's TCP
+ACK of those 553 bytes. The fifth and sixth packets are the 2-byte prompt
+sent from server to client followed by the client's TCP ACK.
+
+Note that the second and third packets are often compressed into a single
+packet, if the MUD happens to service that player before the server TCP
+stack's delayed ACK timer expires.
+
+This is a much bigger waste of resources than you might expect; keep in
+mind that each of these packets usually carry at least 40 bytes worth of
+overhead, and IP packet processing is typically takes a lot of CPU time.
+
+Here's the same exchange under pl12:
+
+16:20:15.445465 client.32878 > mudserver.4000: P 29:35(6) ack 2016
+16:20:15.492610 mudserver.4000 > client.32878: . ack 35
+16:20:15.504223 mudserver.4000 > client.32878: P 2016:2571(555) ack 35
+16:20:15.549806 client.32878 > mudserver.4000: . ack 2571
+
+The same exchange now requires only 4 packets instead of 6. (Or, if we
+service the client before the delayed ACK timer expires, we could do it in
+3 packets.) Note that the third packet is now both the 553-byte output of
+"look" *and* the 2-byte prompt. This causes only a single TCP ACK from
+the client, instead of two ACKs as in the previous example.
+
+Here's a typical round of combat under pl11:
+
+16:19:02.673794 mudserver.4000 > client.32875: P 4976:5067(91) ack 120
+16:19:02.717357 client.32875 > mudserver.4000: . ack 5067
+16:19:02.717409 mudserver.4000 > client.32875: P 5067:5069(2) ack 120
+16:19:02.767418 client.32875 > mudserver.4000: . ack 5069
+
+The first packet is the combat message (e.g., "The beastly fido hits you
+very hard.") The second packet is the client's TCP ACK of those bytes.
+The third and fourth packets are the 2-byte prompt and its ACK.
+
+Under pl12:
+
+16:21:33.572363 mudserver.4000 > client.32876: P 8418:8505(87) ack 131
+16:21:33.620336 client.32876 > mudserver.4000: . ack 8505
+
+Each round of combat is reported using only a single TCP packet, which in
+turn elicits only a single ACK from the client. The exchange requires
+only 2 packets instead of 4. If you have a large MUD, where many players
+might simultaneously be in combat, the savings can be very significant.
+MUDs with slow links or slow CPUs will probably benefit the most from this
+change.
+
+
+-- comm.c, and structs.h, various functions: replaced the "prompt_mode"
+ variable with the less obfuscated "has_prompt", which has the opposite
+ meaning.
+
+-- mobact.c:mobile_activity() - What a terrible bug!! Mob spec-procs
+ were never called if the mob was fighting or asleep. The mayor would
+ never wake up, but more importantly, mobs with special specprocs for
+ fighting (e.g. mobs that use magic during battle) were never getting
+ called. The check for FIGHTING and !AWAKE has been moved to after
+ the specproc calls but before the mob default actions.
+ Found by realm@styx.ph.msstate.edu.
+
+-- act.offensive.c:do_flee() - Added check to make sure you're at least in
+ POS_FIGHTING (not injured) to flee; necessary because wimpy calls
+ do_flee() directly and doesn't go through the interpreter.
+
+-- spells.c:spell_summon() - Changed so that a MOB_NOSUMMON flag prevents
+ mobs from being summoned instead of MON_NOCHARM. Found by Daniel
+ Burke.
+
+-- magic.c:mag_affects() - Changed the protection against re-affecting
+ affected mobs to check all possible spell affects instead of only the
+ first two (an oversight from when mag_affects was changed from 2
+ affects to an arbitrary number). Found by Daniel Burke.
+
+-- shop.c, shop.h: Moved 3 arrays from shop.h to shop.c so that shop.h can be
+ multiply included if necessary. Suggested by Anil Mahajan.
+
+-- act.wizard.c:do_advance(): Changed to show the diminishment message to
+ the victim instead of the imp. Found by glennmc@ccsi.com.
+
+-- act.wizard.c:do_stat_character(): Added error checking to aff->type
+ array indexing to prevent crashes. Suggested by Anil Mahajan.
+
+-- act.offensive.c:check_killer(): Using 'murder' automatically sets your
+ KILLER flag (if pk is not allowed), even if you miss the first hit.
+ Suggested by Alex Fletcher .
+
+-- magic.c:mag_points(): Added update_pos to the end to correctly upgrade
+ (or downgrade) the position of your victim after healing. Found by
+ Johan Dustler.
+
+-- act.wizard.c:do_set(): Broke this monster into two functions, which
+ makes it easier to read and plugs the 'set file' memory leak.
+
+-- spells.c:create_water(): Only remove the name from the drink container
+ if it wasn't previously empty. Prevents permanent keywords from being
+ removed. Found by Eric Green.
+
+-- fight.c:group_gain(): Made the max possible exp gain when killing
+ a player equal to 2/3 the max_exp_loss. This prevents illegal exp
+ creation on pk muds. Found by Apua Cesar de Miranda Paquola
+ and Dirani (spharion@dcc.unicamp.br).
+
+-- fight.c:damage(): Cleaned up code, fixed similar bug to prevent
+ exp gain by bleeding to death.
+
+ CHANGED: You no longer gain xp when you're damaging yourself.
+
+-- shop.h; shop.c:trade_with(): Clarified the error message given to
+ people attempting to sell a worthless item to a shop. Submitted by
+ Chris Epler .
+
+-- act.wizard.c, do_dc(): If you try to disconnect a God you can't see,
+ you are given "No such connection" to hide the presence of the God.
+ Suggested by Fred Herbert .
+
+-- act.wizard.c, do_gecho(): Added delete_doubledollar() to prevent
+ $$'s on gechos. Suggested by Jestyr Saaven .
+
+-- act.wizard.c, do_show(): Changed 'show godrooms' to traverse the world
+ print rooms marked GODROOM instead of printing rooms in a particular zone
+ number. Suggested by Jestyr Saaven .
+
+-- act.wizard.c, do_stat_room(): Changed to display the zone's vnum, not
+ rnum. Found by Jay Vanderwood
+
+-- Tried to use the typedefs mob_rnum, mob_vnum, room_rnum, room_vnum,
+ obj_rnum and obj_vnum consistently throughout the code. Don't know
+ if I found them all, but here's hoping...
+
+-- fight.c:damage() - Added die() after an "attempt to damage a corpse",
+ so if someone does manage to get into the POS_DEAD state, they'll
+ die for real. Suggested by root .
+
+-- ban.c:Read_Invalid_List() - Changed so that names are read with one
+ pass through the file instead of two.
+
+-- act.item.c:perform_drop_gold() - Changed hide_invis from FALSE to TRUE
+ on act() so room observers cannot see invis people dropping gold; changed
+ to be consistent with item dropping which already works this way.
+ Suggested by Chris Epler
+
+-- fight.c:damage() - Changed handling of AFF_SANCTUARY so that damage
+ is only cut in half if it is 2 or more (i.e. to prevent 1 from turning
+ into 0). Indirectly suggested by dodger@WPI.EDU (DoDGeR) who reported:
+ "If you bash a sanct'ed mob, you always see the failure message because
+ the sanct turns the damage from 1 to 0 and that tells skill_message to
+ print the miss message."
+
+-- autorun.pl: Made part of the standard distribution (Perl version of
+ autorun), by D. Hall of Vi'Rage Studios
+
+-- Updated FAQ and PORTING documents
+
+-- Made many changes to configure.in and regenerated 'configure' script
+ with most recent version of autoconf (2.12). configure now checks
+ which libc functions and system calls are correctly prototyped, and
+ only prototypes those functions that aren't. Also, it doesn't include
+ the malloc, nsl, socket, and crypt libraries unless those functions
+ are missing from libc. This solves problems that autoconf was having
+ with IRIX, where it would use lsocket and lnsl, unnecessarily generating
+ linker warnings when those libraries would shadow libc functions. On
+ the other hand, this will cause a problem on OS's where a dummy
+ crypt() is shadowed by a real crypt in libcrypt. Future releases may
+ check crypt() to see if it actually works.
+
+-- constants.c: changed experience and title tables to be functions
+ returning values instead of arrays, to avoid crashes when newbie imps
+ try to add levels by changing the LVL_xx constants without extending
+ the arrays appropriately. SYSERR message is generated to indicate
+ incorrectly set up xp tables.
+
+-- comm.c, various functions - Made some changes to make porting to other
+ platforms easier; introduced the CIRCLE_UNIX constant.
+
+-- db.c, various functions: tried to make the parser a bit better at
+ reporting error messages (and not crashing.. ugh.)
+
+-- Various files: replaced ">> 2" with "/ 4". I can be a real idiot
+ sometimes.
+
+-- Added preliminary Amiga support with the help of Jack Patton and
+ Steffen Haeuser.
+
+-- act.wizard.c:do_dc() and structs.h:descriptor_data -- Added a
+ "close_me" flag to descriptor_data that dc uses to indicate a descriptor
+ should be killed off; just having dc() call close_socket() crashes if
+ you're disconnecting the person below you in the descriptor list.
+
+-- The script I use to pack up Circle into a tar and zip file was changed
+ to add token files to all empty directories to work around buggy unzip
+ programs that don't bother creating empty directories.
+
+-- act.other.c:do_display(): Now complains about unknown arguments.
+
+-- act.wizard.c:do_shutdown(); db.h: Added the constants FASTBOOT_FILE,
+ KILLSCRIPT_FILE, and PAUSE_FILE to the header file, and used them
+ instead of the literals in the code.
+
+-- olc.c:do_olc(): Fixed the warning given by gcc. Just FYI, (for whoever
+ "Y"ou are), I left that warning in on purpose, sort of as a subtle
+ reminder that OLC is not done. However I finally decided to change it
+ after the 10,000th "bug report".
+
+-- Gave the utilities their own Makefile (Makefile.in, actually; Makefile
+ is generated by configure)
+
+******** Patchlevel 13 ***************************************************
+
+11/4/97
+
+-- gg - magic.c: mag_summons(): Fixed animate dead and clone.
+ spell_parser.c:mag_assign_spells(): Added animate dead.
+ utils.h:IS_CORPSE(): Defined.
+
+-- gg - spec_assign.c:ASSIGNMOB(): Changed the redundant real_mobile() call.
+
+-- gg - mail.c:write_to_file(): Fixed problem where mail file would be left
+ open if the filepos was not a multiple of BLOCK_SIZE.
+
+-- gg - castle.c:assign_kings_castle(): Fixed a memory problem where we
+ would be writing to mob_index[-1].func if a mobile did not exist.
+ This is most noticeable in mini-mud mode.
+
+-- gg - utils.h:CAN_SEE_OBJ(): Fixed loophole where lower immortals can
+ 'stat' items of invisible immortals and see their name if they are
+ online. This also follows the line of thinking that if you can't
+ see the person, you can't see the objects they have either. Also
+ fixes doing a 'where' on objects to see if a 'someone' shows up
+ to detect higher level invisible immortals. Reported on the
+ CircleMUD mailing list.
+
+-- gg - interpreter.c:one_argument(): Can now handle a NULL pointer.
+
+-- gg - handler.c:obj_to_char()/obj_from_char(): Do not set the PLR_CRASH
+ flag on mobiles or they are flagged MOB_STAYZONE when given objects.
+ Reported on the CircleMUD mailing list.
+
+-- gg - mudpasswd.c/showplay.c/purgeplay.c: Abort if the pfile is a different
+ size than we expect, as per the main mud code.
+
+-- gg - act.comm.c:is_tell_ok(): Added.
+ act.comm.c:ACMD(do_reply)/ACMD(do_tell): Modified to use is_tell_ok()
+ to prevent replies while writing or to PRF_NOTELL people.
+
+-- gg - graph.c:ACMD(do_track): Don't bother to find_first_step() if the
+ player failed their track skill anyway. This avoids removing the
+ ROOM_BFS mark from every room and searching for the victim even if
+ they will not be successful later.
+
+-- gg - utils.c:get_line(): Set the buffer to NULL if there wasn't anything
+ read in. Fixes a problem reported by Andrew Helm .
+
+-- gg - mail.c: Changed 'return 0;' to 'return NULL;' where appropriate.
+ mail.c: Changed 'no_mail = 1;' to 'no_mail = TRUE;'.
+
+-- gg - act.movement.c:ACMD(do_move): Allow changing the position of the
+ movement commands. Only do this if you do not use the guildguard
+ special procedure or anything else with IS_MOVE() because they
+ will break, badly.
+
+-- gg - interpreter.h:IS_MOVE: Had hard coded directions, fixed.
+ This is still broken with regard to moving the directions around.
+
+-- gg - everything: Replace IS_SET macro with appropriate xxx_FLAGGED ones.
+ Also introduced OBJVAL/OBJWEAR/EXIT _FLAGGED macros.
+
+-- gg - utils.c:log()/mudlog(): Removed day of week as it is unnecessary.
+
+-- gg - spec_procs.c/limits.c: Changed to use IS_CORPSE().
+
+-- gg - act.item.c:perform_remove(): Can no longer remove cursed equipment.
+
+-- gg - comm.c:main(): Initialize dummy_mob to all 0's just in case...
+
+11/5/97
+
+-- gg - everything: Now has a customizable logging file for people using
+ Windows 95. The default is still to standard error, see config.c
+ to change it to a file.
+
+-- gg - config.c/limits.c: New variables, idle_time_rent, idle_max_level,
+ and idle_void for customizable timeout renting. Suggested by
+ Rasdan .
+
+-- gg - everything: Seek and destroy mission for << and >> where it should
+ logically be * and / (ie: Not doing bitvector work).
+
+-- gg - handler.c:affect_modify(): A suggestion for class and level added.
+
+-- gg - everything: Made language C++ friendly. Also adjusted 'const'
+ keywords in constants.c for correct linking.
+
+-- gg - interpreter.c: Removed old 'extern ... titles[]'.
+
+-- gg - class.c/magic.c:saving_throws[][][]: Moved to class.c.
+
+11/14/97
+
+-- gg - Changed all \n\r to \r\n to abide by the telnet specification.
+ (Original patch by John Evans.)
+
+11/16/97
+
+-- gg - comm.c: touch() and remove() KILLSCRIPT_FILE to prevent the
+ problem with many CircleMUD instances trying to run over and
+ over and over and over...
+
+11/18/96
+
+-- gg - Merged in preliminary Macintosh support by Dean Takemori
+ (dean@uhheph.phys.hawaii.edu)
+
+-- gg - comm.c: A large number of the system dependent includes are
+ already accessible via HAVE_blah_blah defines in sysdep.h so
+ I have commented them out for possible removal later to make
+ things look much less complicated. If things break due to
+ this, fix the conf.h file for that OS.
+
+-- gg - comm.c: set_sndbuf(): Fixed undefined reference problem by
+ moving the #if...#endif inside the function which will
+ reduce to 'return 0;' if we don't need the function.
+
+-- gg - comm.c: process_output()/write_to_descriptor(): These
+ functions are really ugly. Is there a EAGAIN in Macintosh?
+ If not, we could #define EAGAIN to EDEADLK for Macintosh and
+ use the existing Unix code...
+
+-- gg - Forgot to include the ! history patch but I updated the
+ TODO list a few days ago anyway...duh.
+
+-- gg - class.c: Saving throws are now a function just like experience.
+
+-- gg - class.c: Thaco chart is now a function also.
+
+11/19/97
+
+-- gg - interpreter.h: IS_MOVE(): Fixed, moving directions should now
+ theoretically be safe although not tested in practice.
+
+11/21/97
+
+-- gg - Changed all those d->connected to STATE(d). Also removed the value
+ dependent hack of !d->connected in favor of STATE(d) == CON_PLAYING.
+
+12/18/97
+
+-- gg - Changed mudlog() to simply use log() when writing to the log file.
+
+-- gg - Makefile: Removed /home/jelson/cxref/ from cxref path. Might I
+ recommend 'make cxref' simply create the listing and then a separate
+ 'make cxref-install' for updating the Documentation Project page?
+ This would be of more use to other people. :)
+
+-- gg - Replaced d->close_me hack with CON_DISCONNECT.
+
+12/27/97
+
+-- gg - Merged in Borland compiler changes.
+ spells.c: Removed non-existent cha_app_type extern.
+
+-- gg - sysdep.h: New #define SLASH for directory separator. Will cause
+ awful looking paths ("lib"SLASH"etc"SLASH"players") but needed for
+ Macintoshes which use a : instead.
+
+-- gg - Fixed 'return; break;' pairs pointed out by kingmundi@hotmail.com
+
+-- gg - class.c:find_class_bitvector: Fixed a bug where the number constants
+ for magic user, warrior, cleric, and thief could be rearranged causing
+ the who/users class listing to be wrong.
+
+12/29/97
+
+-- gg - db.c:clear_object: worn_on initialized to -1 by suggestion of
+ Daniel W. Burke .
+
+12/30/97
+
+-- gg - constants.c and elsewhere: Formerly constant structures changed in
+ C++ modifications are now back to constant with a 'cpp_extern'
+ keyword which is 'extern' in C++ and '' in C. (It gives warnings.)
+
+-- gg - objsave.c: Fixed two implicit void * conversions to gen_receptionist.
+
+-- gg - comm.c: new_descriptor: 'i' changed to 'unsigned int' because of
+ signed warnings.
+
+-- gg - act.item.c: do_wear: Initialized 'where' to -1 to avoid spurious
+ warnings from g++.
+
+-- gg - mail.c: postmaster: Casted 'me' variable to avoid implicit
+ conversion from a void * which g++ gripes about.
+
+12/31/97
+
+-- gg - utils.c: core_dump_unix: Function to dump a core file on UNIX platforms
+ but continue to run the MUD. Basic idea from Erwin S. Andreasen.
+
+1/4/98
+
+-- gg - utils.h: GET_ROOM_VNUM: New macro to retrieve the vnum of a player
+ without worrying about accessing world[-1].number or messy ?: code.
+ We should do this for the rest of the room_data variables.
+
+-- gg - Added variable argument log() function and fixed up quite a few
+ log statements to take advantage of the new flexibility.
+
+-- gg - db.c mostly: Since we have a variable argument log() function now, all
+ those fprintf's can go away.
+
+-- gg - structs.h: Added new #define for CircleMUD version to make it easier
+ for add-on packages to be used with a variety of CircleMUD patchlevels.
+
+-- gg - Added lots of 'extern int top_of_world;' around to compensate for
+ GET_ROOM_VNUM macro doing bounds checking.
+
+-- gg - utils.c: number: Added message if someone uses it wrong.
+
+-- gg - comm.c: process_input: Fixed a minor annoyance in that using '! x'
+ didn't make that your new default '!' command.
+
+-- gg - Fixed some 'exit(0);' statements which should be 'exit(1);'
+
+1/5/98
+
+-- gg - utils.c: Forgot to __attribute__ basic_mud_log() for type-checking.
+
+-- gg - sysdep.h: #ifdef for __GNUC__ to eliminate __attribute__ for those
+ not using gcc.
+
+-- gg - sysdep.h: Oops, forgot to put an argument for __attribute__...
+
+1/13/98
+
+-- gg - structs.h: I misspelled CIRCLEMUD_VERSION...duh.
+
+-- gg - db.c/utils.h: Removed dummy_mob, saving 324 bytes (at least on i586).
+ NOTE: This will cause all sorts of evil things to happen because the
+ existing code assumes ch->player_specials exists. It is the most
+ effective method of getting rid of the mob hack though.
+
+-- gg - utils.h: Could have sworn I already changed IS_AFFECTED->AFF_FLAGGED...
+
+-- gg - limits.c: Inconsistent mob regeneration changed to take poison into
+ account for all cases (h/m/v).
+
+-- gg - limits.c/act.item.c: Mobs can no longer use GET_COND() so drink,
+ eat, and regeneration now avoid them. This is actually better.
+
+-- gg - utils.h: CAN_SEE macro fixed to not use GET_INVIS_LEVEL on mobs.
+
+1/14/98
+
+-- gg - Fixed a bunch of warnings GCC 2.8.0 now emits with -Wall. Those
+ include ambiguous 'else' statements (ones that should have { or }
+ to distinguish) and when main() doesn't return 'int.'
+
+1/16/98
+
+-- gg - interpreter.c/ban.c: nanny()/Valid_Name(): Fixed the long-standing
+ Diku bug where you could create two characters with the same name by
+ proceeding one step at a time in two different sessions.
+
+1/20/98
+
+-- gg - Changed 'restrict' to 'circle_restrict' to fix some problem with
+ it being a reserved word for people. (No problems here...)
+
+-- gg - testing/: Created for projects of interest to future stock CircleMUDs
+ which will eventually be included and may be of interest to others.
+ Current project will be semaphore locking...
+
+1/25/98 - Denver beat Green Bay, 13-year football conference reign is over.
+
+-- gg - act.wizard.c: do_stat: Chris Jacobson decided that
+ the / and % in '/ 3600) % 60' were reversed.
+
+-- gg - spells.c: spell_locate_object(): Added a note that the keyword
+ handling is broken. Unfortunately the only way to fix it would
+ be to enable the passing of strings around the spell parser.
+ Spotted by: BOGWALDL@MALA.BC.CA.
+
+-- gg - Might as well document this so we can call this a feature. If you
+ are using a FreeBSD machine and you are using MD5 passwords then
+ any character with a name longer than 5 letters can log in with any
+ password. The solution is to either turn off MD5 passwords or
+ increase MAX_PWD_LENGTH to 20 (and wipe your pfile in the process).
+
+-- gg - act.wizard.c: do_stat(): Last logon not correctly displayed.
+ Noticed by Angus Mezick
+
+-- gg - spec_procs.c: magic_user(): Andrey Fidrya
+ noticed that the special procedure may target people not in the
+ same room.
+
+1/26/98
+
+-- gg - structs.h: Changed CIRCLEMUD_VERSION to hex to let us (possibly)
+ do bitvector work on it later.
+
+-- gg - handler.c: unequip_char(): Log message should be 'NOWHERE when
+ UNequipping char', previously missing the 'UN'. Reported by
+ Akuma/Chris Baggett/DOOMer .
+
+1/28/98
+
+-- gg - db.c: clear_char(): ch->nr was not being initialized but many checks
+ are based on mobs being 'nr > -1'. This check included PC
+ characters where the 'nr' was left 0.
+
+-- gg - comm.c: main()/sanity_check()/heartbeat(): Added function to check
+ every 30 seconds that a magic number planted during main() is still
+ at the end of the buffers buf, buf1, buf2, arg. Also has an
+ optional statistics toggle in the function.
+
+-- gg - utils.h: Should make the time related #define's configurable, at
+ the current time, changing those constants doesn't change the
+ functions that read them. (act.informative.c and utils.c)
+
+1/30/98
+
+-- gg - structs.h: Fixed 'internel' typo.
+
+2/8/98
+
+-- gg - comm.c:1068: warning: passing `unsigned int *' as argument 3 of
+ `accept(int, sockaddr *, int *)' changes signedness. This is
+ annoying, Linux has it unsigned, Solaris has it signed.
+
+-- gg - db.h: Decided the 'SLASH' idea was ugly. Now we have LIB_MISC
+ ("misc/"), LIB_ETC ("etc/"), and family. Note that I have only
+ tested this on Unix...Macintosh should work but Amiga I need
+ some help with.
+
+-- gg - utils.c: get_filename(): Removed redundant 'break;'
+ Needs 'db.h' now.
+
+2/19/98
+
+-- gg - db.c: index_boot(): Fixed a bug with not closing a file.
+
+2/20/98
+
+-- gg - mobact.c: remember(): Took John Evans' suggestion to change
+ the level check into a PRF_NOHASSLE check. It would be good
+ to identify other places this should be changed.
+
+-- gg - act.wizard.c/act.informative.c/spells.c/house.c/objsave.c/spec_procs.c
+ Fixed hopefully all of the 'sprintf(buf, "%s...", buf, ...);'
+ constructs that the Borland C++ compiler does not like.
+
+-- gg - act.comm.c: perform_tell(): We cannot get the id number of a mob
+ any longer so don't save it for the last tell pointer.
+
+-- gg - comm.c: game_loop(): d->wait no longer keeps going negative forever.
+
+2/24/98
+
+-- gg - Fixed a bug whereby prompts and aliases crashed while switched.
+
+-- gg - comm.c: main(): Print the version in the boot logs.
+
+-- gg - utils.h: PLR_FLAGS() and MOB_FLAGS() changed to check for the correct
+ user. (ie: PC using PLR_FLAGS and NPC's using MOB_FLAGS).
+ db.c: Changed to use REAL_MOB_FLAGS() because we'll get spurious
+ warnings before the IS_NPC bit is actually loaded.
+
+-- gg - act.comm.c: do_reply(): Mobs cannot use GET_IDNUM().
+
+2/25/98
+
+-- gg - act.other.c: do_wimpy(): Mobs cannot use 'wimp_level' variable.
+
+-- gg - db.c: 'dummy_mob' reinstated, now with a compile time toggle.
+
+-- gg - utils.h: Removed IS_NPC checks from xxx_FLAGGED as they are done
+ by xxx_FLAGS now.
+
+2/27/98
+
+-- gg - utils.h: We now check for (and gripe about) player specials.
+ db.c: dummy_mob now mandatory again, no crashes, and they get fixed.
+ db.c: Fixed SET_SKILL ;
+ screen.h: Mobs do not use color.
+ utils.h: CAN_SEE: Was using PRF_FLAGGED on mobiles.
+
+-- gg - spell_parser.c: Cris Jacobin pointed out
+ I forgot to add TAR_OBJ_EQUIP to 'remove curse'.
+
+-- gg - act.comm.c: do_say(): Mobs don't use PRF_FLAGGED.
+
+-- gg - act.wizard.c: do_purge(): Should use CON_CLOSE since there will not
+ be a player in the game at the time.
+
+-- gg - Makefile.in: utils.c should depend on db.h (LIB_TEXT, LIB_WORLD, etc
+ in get_filename)
+
+-- gg - db.h: LIB_OBJS changed to SUF_OBJS for 'suffix' since that is what it
+ is used as. Also created SUF_TEXT for E-Text system.
+
+2/28/98
+
+-- gg - act.wizard.c: do_purge(): Need to NULL the character also.
+
+3/1/98
+
+-- gg - limits.c: check_idling(): When we do an extract_char(), we have to
+ NULL out the descriptor's character pointer to prevent lossage later
+ in close_socket(). We could NULL in free_char() though...
+
+-- gg - objsave.c: Crash_listrent(): Rob Baumstark
+ reported that large rent files can crash the MUD with a buffer
+ overflow.
+
+-- gg - objsave.c: Crash_load(): Now counts objects in file for logging.
+
+-- gg - act.other.c: do_save(): Explicit 'save' commands by PC's are
+ disabled if 'auto_save' is set to YES. This prevents item duplication
+ via coordinated saves and system crashes.
+
+3/2/98
+
+-- gg - act.informative.c: look_at_room(): Removed (long) cast.
+
+-- gg - utils.h: GET_ROOM_VNUM(): Changed to use real number instead of
+ character pointer and used throughout the code. Facilitated many
+ ch->in_room => IN_ROOM(ch) changes.
+
+-- gg - act.movement.c: Needs 'top_of_world' extern now.
+
+3/3/98
+
+-- gg - utils.c/elsewhere: core_dump(): Extended to be used instead of
+ assert(). Now we'll get core dumps and continue running on Unix
+ or log a message and (optionally) continue running elsewhere also.
+ Many 'assert()' statements changed to if...core_dump() tests.
+
+3/4/98
+
+-- gg - comm.c: make_prompt()/process_output(): Mobs were using PRF_FLAGGED.
+ act.informative.c: look_at_room()/do_score(): Ditto.
+
+-- gg - graph.c: do_track(): Mobs cannot use 'track' command. If you want
+ them to track things, use 'hunt_victim()'.
+
+-- gg - modify.c: string_add(): Tilde killing made compile time option
+ since I just realized nothing in stock CircleMUD cares. :)
+ Feel free to substitute your own method. (such as hide/show_tilde())
+
+-- gg - mail.c: General hacking and lots of new comments.
+
+-- gg - shop.c: boot_the_shops(): Remove (byte) cast as it was reported to
+ cause problems/crashes.
+
+-- gg - act.comm.c: is_tell_ok(): Was using PRF_FLAGGED on mobs.
+ perform_tell(): Ditto.
+
+3/14/98
+
+-- gg - act.offensive.c: do_rescue(): Added a \r\n to the 'only true warriors'
+ message as pointed out by Daniel Koepke
+
+3/16/98
+
+-- gg - act.comm.c: perform_tell(): Also don't update ID number when a mob tells
+ you something.
+
+-- gg - db.c: Thought I already added that fclose(index); ....
+
+3/20/98
+
+-- gg - limits.c: check_idling(): Doh, ch->desc->character = NULL was in
+ the wrong spot. :)
+
+-- gg - Used IS_[class] macros throughout. Nitpicked by Edward Glamkowski.
+
+-- gg - act.movement.c/graph.c: Check for fighting before and in perform_move().
+ Suggested by Angus Mezick.
+
+-- gg - Removed 'extern' statements for non-existent variables. Pointed out
+ by Chris Powell.
+
+-- gg - act.informative.c: do_toggle(): Added a \r\n to end of string as
+ suggested by Joachim Pileborg.
+
+-- gg - modify.c: show_string(): Use any_one_arg() instead of one_argument
+ since we're looking for one letter and don't want to ignore fill
+ words if they happen to type it. Suggested by Andrey Fidrya.
+
+-- gg - objsave.c: Two places didn't check for bank gold but everywhere else
+ does. Pointed out by Andrey Fidrya.
+
+-- gg - act.movement.c: do_simple_move(): Mike Schlagenhauf pointed out
+ that gods and mortals can walk into godrooms. (>= GRGOD rooms)
+
+3/30/98
+
+-- gg - shop.c: ok_damage_shopkeeper(): Julian Fong reported that we could
+ potentially reference [-1] if we have a non-prototyped mobile.
+
+-- gg - Removed redundant declarations from everything.
+
+-- gg - Removed all the nested 'extern' declarations.
+
+4/5/98
+
+-- gg - structs.h/utils.h: CIRCLEMUD_VERSION changed to really be hex
+ and now has a helper macro VERSION().
+
+5/13/98
+
+-- gg - utils.h: Chris Powell correctly pointed out over a month ago
+ that CAN_SEE_OBJ_CARRIER should use 'sub' and not 'ch'.
+
+5/27/98
+
+-- gg - act.wizard.c: do_set(): Added 'age' to "set."
+
+******** Patchlevel 13a ***************************************************
+
+6/4/98
+
+-- gg - shop.c: Extraneous log() statement was missed during sprintf()+log()
+ conversions.
+
+-- gg - comm.c: reap(): Added to take care of fork() with core_dump_unix().
+
+-- gg - utils.h: CHECK_PLAYER_SPECIAL(): Allow it to be toggled off.
+
+******** Patchlevel 14 ***************************************************
+
+6/5/98
+
+-- gg - graph.c: do_track(): Might get into infinite loop if in room with
+ no exits and skill check failed. Fixed to try 10 times.
+
+-- gg - comm.c: Handle the delete key in addition to backspace. Mailed in
+ by David A. Goldstein.
+
+-- gg - comm.c: In function `act':
+ comm.c:1892: warning: declaration of `sleep' shadows global declaration
+
+6/6/98
+
+-- gg - spec_procs.c, act.comm.c, just about everything:
+ Evaluated 'static' variables and added some 'const.'
+
+6/13/98 (Saturday)
+
+-- gg - Added Acorn RiscOS support from Gareth Duncan
+ (garethduncan@argonet.co.uk).
+
+-- gg - utils.c: mudlog(): Matched prototype and function. The change was
+ due to compiler warnings.
+
+-- gg - sysdep.h: Removed SLASH from here as it's in db.h already.
+
+-- gg - Makefile.in: Added a LIBS variable for command-line override.
+
+-- gg - Added prototypes for every function.
+
+-- gg - castle.c: Worked around three warnings when using g++.
+
+-- gg - db.c: store_to_char(): "When you 'reply' after entering the game
+ before anyone tells to you, the reply results in telling to a mob."
+ Found by Eric Green and Stefan Wasilewski.
+
+-- gg - class.c: init_spell_levels(): 'Poison' spell wasn't assigned.
+ Found by Chris Epler
+
+-- gg - act.item.c: perform_give_gold(): Fixed the pluralization.
+ Found by Alex <3raf7@qlink.queensu.ca>
+
+-- gg - Eric Green suggested some buffers needed to
+ be larger to handle the possible inputs.
+
+-- gg - ban.c/house.c: Cleaned up non-existent file messages.
+
+6/15/98
+
+-- gg - act.informative.c: perform_immortal_where(): Patched to prevent
+ players from doing a 'where' to see the title of a dark room.
+
+6/16/98
+
+-- gg - act.offensive.c: do_bash(): Eric Green (ejg3@cornell.edu) pointed
+ out that we could bash someone not in the room and that a failed
+ bash still makes the person sit.
+
+-- gg - structs.h: Added a notice for FreeBSD users with MD5 passwords.
+ Jeremy's autoconf test for the bug will be better, of course.
+
+-- gg - constants.c: color_liquid[]: Added a \n for sprinttype.
+
+-- gg - act.other.c: do_save(): Cleaned up comments and now gives message
+ if auto_save is enabled.
+
+-- gg - handler.c: char_to_room(): Fixed a long standing bug that people
+ are still considered fighting until the next violence pulse when
+ they leave the room. Most visible when trying to goto and walk.
+
+-- gg - fight.c: damage(): Clay Hardin (clay@accessus.net) reported that
+ some people can autoflee with negative hit points. Fixed.
+
+-- gg - act.wizard.c: do_set(): Fixed to not attempt char_from_room()
+ on player in NOWHERE on advice of Eric Green.
+
+-- gg - comm.c: close_socket(): Fix a memory leak if a person writing a
+ note is disconnected, also by Eric Green.
+
+-- gg - mail.c: read_delete(): Fixed to not cause a crash on dumb sprintf()'s
+ that crash on a NULL pointer. From: Krautz Thomas
+
+
+-- gg - magic.c: mag_unaffects(): Don't output 'no effect' message when
+ casting heal due to blindness unaffect.
+ spell_parser.c: mag_assign_spells(): Heal isn't an affect spell.
+
+-- gg - comm.c: Borland and Microsoft use different headers. (Joy!)
+
+-- gg - class.c: Added support for 'siteok_everyone' flag.
+ config.c: Added 'siteok_everyone' flag, see config.c for explanation.
+
+-- gg - act.wizard.c: do_stat_object(): Comment on basis of invisibility.
+ interpreter.c: perform_dupe_check(): Comment on things to do.
+ utils.h: CAN_SEE_OBJ_CARRIER(): Close up final loophole.
+
+-- gg - spec_procs.c: Remove unused 'struct social_type'
+
+-- gg - interpreter.c: nanny(): Fixed final loophole in player duplication.
+
+-- gg - act.offensive.c: do_flee(): Here's a great bug, no one _ever_ lost
+ experience for fleeing because they stopped fighting before the
+ check to see if they were fighting...
+
+-- gg - act.offensive.c: Remove restriction of CLASS_WARRIOR from skills.
+ Now depends only on if they have the skill or not.
+
+-- gg - act.offensive.c: do_assist(): Hit the enemy the person you're
+ helping is, not the first person in the list.
+
+-- gg - act.movement.c: find_door(): Fixed a hard-coded "close" in message.
+
+-- gg - act.offensive.c: do_bash(): Fixed the 'bash-in-peaceful-room' bug.
+ act.other.c: do_steal(): Similiar bug here.
+
+-- gg - act.item.c: find_eq_pos(): \n added to prevent explicit wearing
+ on reserved spots.
+
+-- gg - Enabled the 'teleport' spell.
+
+-- gg - spell_parser.c: mag_assign_spells(): 'clone' is self-only.
+ The flags were previously contradictory.
+
+-- gg - utils.h: GET_MOB_SPEC(): Fixed the () order.
+
+-- gg - Removed unreachable code in various files.
+
+6/18/98
+
+-- gg - Check out the bug archive. http://bugs.circlemud.org
+
+-- gg - Fixed up all of the 'aggregate return' warnings.
+
+-- gg - modify.c: show_string(): Anil Mahajan
+ spotted a potential (but unlikely) buffer overflow.
+
+6/20/98
+
+-- gg - boards.c: Cleaned up malloc() calls into CREATE(). Created a
+ sort ordering define, defaulting to the historic order. Fixed
+ bug #19 from Julian Fong.
+ utils.c: core_dump(): Assorted cleanups, combining core_dump_unix()
+ and core_dump_other() into one function.
+ sysdep.h: Updated systems for core_dump_() cleanup.
+ utils.h: Updated core_dump() prototypes.
+
+6/21/98
+
+-- gg - boards.c: Fixed printing. Created House_list_guests() since
+ code was duplicated in two places.
+
+-- gg - act.offensive.c: do_kick(): Same check to make sure the person is
+ still in the room as do_bash now has.
+
+-- gg - Fixed even more sprintf(buf, "%s ...", buf, ...) constructs.
+
+-- gg - damage() changed to return an integer so we know if the target was
+ hit, if they died, or how hard they were actually hit.
+
+-- gg - boards.c: Board_display_msg(): Fixed 'read 2.mail' bug when in
+ front of a board.
+
+-- gg - boards.c: Revamped code to pass around the board's obj_data pointer.
+ Now allows boards to be referred to as other things. Suggested by
+ Andrew Hynek Also made 'truncate to 80' comment
+ fit the code. (0-79 = 80, so 80 should be NUL, not 81.)
+
+-- gg - db.c: boot_db(): House loading moved to before zone reset so the
+ object limits work correctly.
+
+-- gg - act.wizard.c: do_show() extended to use page_string().
+
+-- gg - cnf/configure.in: Added 'less' and 'most' to pager search.
+ A brief 'autoconf tutorial' pointer would be appreciated.
+
+-- gg - db.c: Fixed the '2 aliases per help record' bug. See the file
+ for credit information. Also added an 'informative' log about
+ the number and size of data structures created sans strings. I
+ do note that the numbers don't agree with the 'show stats.'
+ Perhaps a deeper investigation is in order...
+
+-- gg - config.c/act.wizard.c: New variable 'load_into_inventory'.
+ You should be able to guess what it does.
+
+=======
+6/29/98
+
+-- JE - README.*, doc/README.*: Documentation updated. README file
+ was cleaned up; compilation instructions for all platforms were
+ moved into a README.XXX file in the doc directory. The old
+ README.WIN, which actually had instructions for MSVC, was renamed
+ README.MSVC. README.GNU-WIN32 was added from David Goldstein.
+ README.WIN now simply directs people to look into one of those
+ files. README.MAC is still missing.
+
+-- JE - ChangeLog: Fixed a small error in an earlier ChangeLog
+ entry that described pl12 improvements in networking code.
+
+-- JE - src/[mM]akefile.bcc - Changed name from makefile.bcc to
+ Makefile.bcc to match the other Makefiles.
+
+-- JE - cnf/configure.in - Changed to add -Wno-char-subscripts to the
+ gcc command-line if we're using gcc and gcc recognizes the option.
+ The newer GCCs complain about the standard library's islower(),
+ isupper(), etc., on some machines, such as Solaris.
+
+-- JE - src/comm.c, cnf/configure.in, src/sysdep.h - Changed autoconf to
+ detect whether we have inet_aton and/or inet_addr; added prototypes
+ for those functions in sysdep.h if we have the functions and they're
+ not prototyped; and added support in comm.c to bind to a specific
+ IP address (instead of all IP addresses) on a multihomed host.
+
+-- JE - src/db.c: Improved parsing of database files and added more
+ meaningful error reporting in some places.
+
+-- JE - cnf/configure.in, src/comm.c, src/sysdep.h: Added arpa/inet.h to the
+ list of header files we check for and include.
+
+-- JE - src/comm.c: Removed "#ifdef SO_SNDBUF" where it wasn't needed.
+
+-- JE - cnf/configure.in: Fixed a longstanding bug in the -cckr detection,
+ and a similar bug in the recently added -Wno-char-subscripts
+ detection; the flags would not be set correctly if configure
+ was ever rerun (i.e., if values were read from the cache).
+
+6/30/98
+
+-- JE - cnf/configure.in, configure: We now only use -Wno-char-subscripts
+ if we are using gcc, we get warnings without it, and gcc accepts it.
+ Bug #73 in bug database.
+
+-- JE - src/comm.c: Fixed a bug in IP address binding - we need to clear
+ the sockaddr_in structure with memset() before using it.
+
+-- JE - src/comm.c, src/sysdep.h, cnf/configure.in, configure: Changed
+ the code in comm.c to use inet_ntoa() for changing numeric IP
+ addresses into ASCII instead of printing it manually using
+ shifts and sprintf(). Changed autoconf scripts to detect
+ whether or not inet_ntoa() needs to be prototyped.
+
+-- gg - comm.c: write_to_descriptor(): Cleaned up various platform support.
+ comm.c: Removed headers commented out in bpl13.
+ comm.c: process_input(): General platform cleanup.
+
+-- gg - comm.c: write_to_descriptor(): Jeremy made something up for this
+ also which I like better. I've tweaked my previous process_input()
+ changes to fit the same idea, but they were pretty close already.
+
+-- JE - cnf/configure.in - Removed the -cckr check from configure because
+ it seems to break compilation on IRIX's cc (bundled) compiler,
+ which is what it was put in to fix many years ago.
+
+-- JE - src/comm.c - Broke up write_to_descriptor() into two functions
+ so that platform-dependent pieces would be isolated.
+
+7/1/98
+
+-- JE - src/comm.c - Further bug fixes in socket handling code.
+
+-- JE - src/conf.h.*, src/Makefile.win, src/sysdep.h, src/comm.c,
+ doc/README.MSVC -- I updated Win 95/NT compatibility. The idea
+ now is that *all* Windows-based compilers (MSVC, Borland, and
+ Watcom) should share the same conf.h.win, but they each have their
+ own Makefile. The CIRCLE_MSVC and CIRCLE_BORLAND constants were
+ removed in favor of a single CIRCLE_WINDOWS constant; we use
+ Borland's builtin __BORLANDC__ to detect Borland compilation.
+ Makefile.win was renamed Makefile.msvc to differentiate it from
+ Makefile.bcc. README.MSVC updated appropriately.
+
+-- JE - src/comm.c: Changed perform_socket_read and perform_socket_write
+ to use ssize_t and size_t again, as George originally suggested.
+
+-- JE - doc/README.*: More changes to documentation for Windows users.
+
+7/2/98
+
+-- ae - FAQ: updated the FAQ version distributed with CircleMUD.
+
+-- ae - lib/world/obj/15.obj: Corrected some flags and some edescs.
+
+-- gg - comm.c: main(): Now use fdopen() instead of explicit assignment
+ of 'stderr' to 'logfile'. This should work fine elsewhere because:
+ "The fdopen function conforms to IEEE Std1003.1-1988 (``POSIX.1'')."
+
+-- gg - comm.c: getrusage(): Use RUSAGE_SELF instead of 0. Suggested by
+ Christian Loth
+
+3 July 1998
+
+-- JE - src/comm.c, src/sysdep.h: We only prototype the getrlimit()/
+ setrlimit() functions if we appear to have those functions
+ available. Fixes half of Bug #79.
+
+-- JE - src/comm.c, src/sysdep.h: Changed logfile opening to use the
+ POSIX-defined STDERR_FILENO instead of a magic number (2).
+ Changed sysdep.h to use the magic number if the POSIX def'n
+ is missing for some reason.
+
+-- JE - Released patchlevel 14.
+
+******** Patchlevel 15 ***************************************************
+
+7/3/98
+
+-- gg - constants.c: Incremented string version number.
+ structs.h: Incremented #define version number.
+
+-- gg - Patch for arbitrary bitvector size changes from Christian Loth
+ included. (bitvector_t)
+
+-- gg - structs.h: Sector flying and underwater reversed to match constants.c
+
+7/5/98
+
+-- gg - comm.c: new_descriptor(): Yep, 'i' should be signed.
+
+7/29/98
+
+-- gg - Replaced 'return x;' with 'return (x);' to be consistent.
+ Patch by Trevor Man . Reverse of what
+ I had hoped, but ah well. :)
+
+8/6/98
+
+-- gg - act.item.c: search_block triggers on \n, use \r instead.
+
+8/24/98
+
+-- gg - sysdep.h/Makefile.lcc/conf.h.lcc: LCC compiler support added by
+ Eric Jones . I'll see if there is a
+ __BORLANDC__-like constant we can use to get rid of conf.h.lcc...
+
+-- gg - comm.c: "d. hall" sent a patch to change timeadd()
+ and timediff() to not use static variables like we wanted before.
+
+-- gg - util/shopconv.c: Given a dummy basic_mud_log() to take care of
+ undefined reference since some macros use it now.
+
+-- gg - act.other.c: do_steal(): Yaroslav Berezovsky aka Morgion//RMUD found
+ a bug where the victim had to be able to see an object for the thief
+ to steal it...
+
+8/25/98
+
+-- gg - AutoEQ from Burkhard Knopf
+ comm.c: init_game(): Save everyone before exiting.
+ handler.c: invalid_align(): New function.
+ handler.c: equip_char(): Use invalid_align().
+ handler.c: invalid_align(): prototype.
+ interpreter.c: nanny(): Place character in room before equipping.
+ objsave.c: Obj_to_store()/Obj_from_store()/Crash_save(): Modified
+ to include location arguments.
+ objsave.c: auto_equip(): New function, sanity checks eq positions.
+ objsave.c: Crash_listrent(): Also show rent locations.
+ objsave.c: Crash_load(): Huge block of code to handle equipping.
+ objsave.c: Crash_extract_norents_from_equipped(): New function.
+ structs.h: obj_file_elem: 'location' added. (Sort of, it's pending
+ approval.)
+
+-- gg - act.comm.c: do_gen_comm(): Use AWAKE() macro. From
+ Richard Glover
+
+-- gg - act.item.c: Curse containers if you put a cursed object in them.
+
+-- gg - comm.c: main(): Added help text for '-h' option.
+
+-- gg - act.informative.c: do_time(): Simplified by suggestion from
+ Andrew Jones
+
+-- gg - constants.c/comm.c: Uh, 'version' used to crash. :)
+
+-- gg - act.comm.c: do_spec_comm(): Removed extra \r\n from act().
+
+-- gg - act.movement.c: has_boat(): Del suggested
+ immortals should get to walk on water. Now gods can walk on water
+ but guest immortals (LVL_IMMORT) still need boats.
+
+8/26/98
+
+-- gg - Changed 'struct alias' to 'struct alias_data' since a Windows 95
+ compiler gripes that it has a member of the same name.
+
+-- gg - autorun: Don't sleep if we're going to die anyway.
+
+-- gg - db.c: Disable zone commands which will endlessly error.
+
+8/28/98
+
+-- gg - Removed 'extern int top_of_world;' everywhere.
+ db.h: Included extern for top_of_world here instead.
+ (Should fix some of the Windows 'integral size mismatch' warnings.)
+
+-- gg - act.other.c: do_save(): Allow gods to save even if we're in
+ automatic saving. Immortals (31) still cannot by default.
+
+-- gg - comm.c: DFLT_IP/DFLT_DIR/LOGNAME/help: Some extern declarations
+ cleaned up to be what they should.
+
+-- gg - comm.c: main(): Reworked to avoid implicit 'stderr' usage and
+ allow an argument for log file to redirect to.
+
+-- gg - comm.c/comm.h: send_to_room(): Changed to room_rnum.
+
+-- gg - structs.h: obj_file_elem: Add a few spares since we're going to
+ change the structure anyway.
+
+-- gg - comm.c: process_input(): Output command we find from history.
+ From Akuma the Raging Coder.
+
+-- gg - interpreter.c/utils.h: IS_NPC changes from idea by Yaroslav
+ Berezovsky To be completed later though.
+
+8/29/98
+
+-- gg - act.wizard.c: do_show(): 'show snoop'
+
+-- gg - shop.c: 'buy 3' now possible and doesn't break 'buy 5 3',
+ 'buy 5 #3', or 'buy #3'.
+
+9/3/98
+
+-- gg - db.c: index_boot(): prefix set to NULL to prevent spurious warning
+ from egcs 1.1. (Headache prevention.)
+
+9/7/98
+
+-- gg - act.wizard.c: do_set(): age: ch<->vict.
+
+9/9/98
+
+-- gg - modify.c: string_write()/smash_tilde(): Got fed up with many
+ places in the code (and external packages) manually setting up
+ the writing code so I created string_write() to hide that.
+ smash_tilde() envelopes previous code in string_add() in a way
+ to be compatible with other codebases.
+
+-- gg - mail.c: postmaster_send_mail(): Converted the final malloc() in
+ the code to use CREATE(), and converted to string_write() also.
+
+-- gg - boards.c: Board_write_message(): Changed to string_write().
+
+-- gg - Makefile.lcc: Update from Eric Jones .
+
+-- gg - macrun.pl: New from Dean Takemori
+ in case you have a Macintosh with Perl.
+
+-- gg - act.informative.c: do_toggle(): Added holylight/nohassle/roomflags
+ for immortals, from Del Minturn .
+
+9/12/98
+
+-- gg - act.comm.c: do_write(): Now uses string_write() interface.
+ olc.c: olc_string(): Ditto.
+
+-- gg - db.c: check_object()/check_object_spell_number()/
+ check_object_spell_level(): Beginnings of object verification.
+ This caught about 7 objects with bad spell numbers, names, or levels.
+
+-- gg - modify.c: string_write(): Modified to allow generic data to be
+ passed through later. The improved editor could use this to send
+ the 'old' buffer for instance.
+
+-- gg - spell_parser.c: spello(): Report spells with invalid names.
+
+-- gg - spell_parser.c: skill_name(): Minor cosmetic touchup.
+
+-- gg - spell_parser.c: mag_objectmagic(): Wands with an area effect or
+ mass spell don't need to be pointed at anything.
+
+9/15/98
+
+-- gg - utils.c: get_line(): Faster, cleaner, and most importantly, easier
+ to read.
+
+9/20/98
+
+-- gg - utils.c: str_cmp()/strn_cmp(): Now gracefully handle a NULL pointer
+ and I also took the opportunity to make them look cleaner.
+ utils.c: basic_mud_log()/mudlog()/get_filename(): Should be able to
+ handle a NULL pointer now.
+
+-- gg - utils.h: IS_NPC(): MOB_ISNPC is back, for now.
+
+-- gg - Added the long-awaited alias saving to file support courtesy of
+ Jeremy Hess and Chad Thompson. Directories added in lib/ also.
+
+-- gg - comm.c: main(): Think I heard of a report where fdopen() didn't
+ work under Windows so I added a little note there for people.
+
+9/21/98
+
+-- gg - magic.c: mag_unaffects(): Fixed cosmetic bug (of mine) whereby the
+ "your vision returns" message was shown when you weren't blind.
+
+-- gg - spell_parser.c: call_magic(): Fixed to return -1 when a target
+ dies, so that mag_objectmagic() can correctly exit instead of
+ casting another spell from a scroll at a stale target.
+
+-- gg - utils.h: WAIT_STATE(): Needed "do { xxx } while(0)".
+
+-- gg - act.offensive.c: do_bash(): Few fixes for NPC's and wimpy mode.
+
+-- gg - spells.c: spell_enchant_weapon(): It is a bad thing to enchant a
+ weapon that you are currently wielding. Since I think it makes
+ more sense to just not be able to do that than jump through hoops
+ with equipping, I've remove the TAR_OBJ_EQUIP flag from it.
+
+-- gg - comm.c: perform_act(), act.informative.c: list_one_char(),
+ interpreter.c: command_interpreter(): All changed with IS_NPC()
+ fixes from Andrey Fidrya
+
+-- gg - magic.c: mag_affects(): Don't allow strength if we already have
+ 100% strength add.
+
+-- gg - act.other.c: do_steal(): Easy but not automatic stealing from
+ sleeping people.
+
+-- gg - comm.c: setup_log(): Handle all the log() nasties.
+
+-- gg - sysdep.h: Check for STDOUT_FILENO too.
+
+9/27/98
+
+-- gg - objsave.c/structs.h: Enable autoeq on USE_AUTOEQ definition.
+
+-- gg - act.item.c: Duplicated 'extern obj_proto;'
+
+10/1/98
+
+-- gg - utils.h: VALID_RNUM(): New macro made from common code in
+ GET_ROOM_VNUM() and GET_ROOM_SPEC().
+ utils.h: GET_ROOM_VNUM(): Needs (room_vnum) cast for MS VC++ 5.
+
+-- gg - comm.c: 'port' should be an unsigned short integer.
+ config.c: DFLT_PORT changed to ush_int too.
+
+-- gg - act.wizard.c: do_at(): location/original_loc should be room_rnum.
+ act.wizard.c: perform_set(): New room_rnum variable for case 35.
+
+-- gg - db.c: reset_zone(): Couple casts to hush up Microsoft Visual C++.
+ There isn't another way.
+
+-- gg - house.c: hcontrol_destroy_house(): real_atrium/real_house converted
+ to room_rnum variables. The atoi() result casted to room_vnum.
+ house.c: hcontrol_pay_house(): atoi() result, ditto.
+
+-- gg - shop.h: 'keeper' variable changed to mob_rnum and comment fixed.
+ It is saved on disk as a vnum but changed in boot_the_shops() to
+ be a real number.
+
+-- gg - spec_procs.c: pet_shops(): 'pet_room' is a room_rnum now.
+ spells.c: spell_teleport(): 'to_room' is a room_rnum now.
+
+-- gg - Even more xxx_rnum/xxx_vnum changes, to the real_xxx() functions.
+
+-- gg - db.c: check_object_spell_level(): Note that it is a bad idea to
+ assign an area or mass spell to a staff. It is not overridden,
+ just warned about.
+
+10/3/98
+
+-- gg - act.movement.c: do_stand(): Player may still be fighting at this
+ point so we should set them POS_FIGHTING if so.
+ Reported by Jon Barrett .
+
+-- gg - act.wizard.c: do_switch(): Don't permit people under Greater God
+ to switch into mobs in god rooms or houses.
+
+-- gg - Assorted skills now have new IS_NPC and GET_SKILL checks.
+
+10/5/98
+
+-- gg - spec_assign.c: Fixed up mob|room|obj_v|rnum problems in ASSIGNMOB,
+ ASSIGNROOM, ASSIGNOBJ.
+ castle.c: block_way(): Fixed up room_rnum problem.
+ olc.c: do_olc(): Ditto.
+
+-- gg - act.wizard.c: room_rnum things fixed and use skill_name() now in
+ do_stat_character().
+
+-- gg - db.c: check_object_spell_number(): Disabled the check for an area/mass
+ spell on a staff because the bug has been fixed.
+
+-- gg - spell_parser.c: mag_objectmagic(): Fixed the bug where a victim
+ dying in the middle of a staff spell caused a crash.
+
+-- gg - Merged new spell routine changes that get rid of spells[] in favor
+ of spell_info[].name. Also removed dead code from db.c.
+
+10/7/98
+
+-- gg - db.c: check_object_spell(): Another magic niggle, the spells don't
+ have names in syntax check mode.
+
+-- gg - Merged a bunch of sh_int/int -> *_[rv]num changes from
+ Bryan Britt
+
+-- gg - More little logging changes. Sometimes I really hate portability. :P
+
+-- gg - house.c/db.c: g++ found some mismatched prototypes.
+
+10/8/98
+
+-- gg - graph.c: Assorted room_rnum fixes.
+
+10/10/98
+
+-- gg - cnf/configure.in: Added checks for "remove" and "strerror".
+ sysdep.h, conf.h.in: NEED_REMOVE_PROTO and NEED_STRERROR_PROTO added.
+
+-- gg - act.social.c act.other.c ban.c e boards.c comm.c db.c fight.c
+ graph.c house.c objsave.c shop.c: Updated to make sure all
+ perror() and log() calls have SYSERR where appropriate.
+
+10/12/98
+
+-- gg - comm.c: Updated some 'const' usage in act() and related functions.
+
+10/13/98
+
+-- gg - Massive minor changes to the code to eradicate some (quite accurate)
+ warning messages from Borland C++ sent by Mundi King
+
+-- gg - utils.h/utils.c: CAP() is now a function instead of macro to eliminate a
+ "statement with no effect" warning when not using the return value.
+
+-- gg - utils.c: int_to_short(): Sneak around the Microsoft Visual C++ warnings
+ if there is no other way to avoid it.
+
+-- gg - comm.c: Socket errors beyond our control are flagged as a WARNING in the
+ same manner as bugs in the code are flagged SYSERR.
+
+-- gg - shop.h/shop.c: Fixed the bug causing 'keeper' in the shop structure to
+ be an int.
+
+-- gg - db.c/db.h: More int/sh_int cleanups with int_to_short(). Including changes
+ to zone_data and top_of_zone_table.
+
+-- gg - Even more Microsoft Visual C++ warning fixes. Warnings sent in by
+ OmnousMan@aol.com and Sean Daley .
+
+-- gg - castle.c: Major cleanup of appearance.
+
+-- gg - cnf/configure.in, cnf/aclocal.m4, configure: New directives to check for
+ 'struct in_addr' and an unsafe crypt() function with only 10 characters.
+
+-- gg - structs.h: Code to check for an unsafe password length of 10.
+ sysdep.h: Code to accommodate systems with no 'struct in_addr'
+
+10/16/98
+
+-- gg - comm.c: nonblock(): Use 'unsigned long' for Windows ioctlsocket().
+
+-- gg - comm.c: open_log(): Use "easy" method for GNU C and MetroWerks (no fdopen).
+
+-- gg - db.c: More int_to_short() for MSVC.
+ magic.c: Some variable fixups for warnings, mob_vnum and obj_vnum;
+
+-- gg - objsave.c: Crash_delete_file(): s/unlink/remove/
+
+-- gg - comm.c: Also check for WSAEINTR as Andrew Helm suggests.
+
+-- gg - sysdep.h: Mundi King gave me some #pragma's to
+ disable warnings in Borland C++, how quaint. Also had to give an isascii()
+ macro for MetroWerks since they couldn't add one line to their headers.
+ Also took the opportunity to clean up the "Who are we?" error message into
+ something a bit more descript.
+
+10/21/98
+
+-- gg - db.c, config.c: Load GREETINGS from a file instead of config.c.
+ See lib/text/greetings.
+
+-- gg - castle.c: Fixed a few short int warnings.
+
+-- gg - utils.c: prune_crlf(): Fixes up GREETINGS to look right.
+
+10/23/98
+
+-- gg - Thanks to Francis Hotchkiss for testing the
+ FreeBSD configure changes. (The test does work.)
+
+10/27/98
+
+-- gg - act.wizard.c, class.c, limits.c: Changed advance_level() to not
+ print the advancement message so the calling functions can do so
+ without spamming the system logs and online wizards.
+
+-- gg - act.informative.c: look_at_target(): "look 2.obj_with_extra_desc"
+ bug fixed.
+
+-- gg - comm.c: close_socket(): Andrey Fidrya pointed
+ out we could have a player special called on a mobile.
+
+-- gg - act.wizard.c: do_purge(): mudlog() required a GET_INVIS_LEV check.
+
+-- gg - act.comm.c: do_tell(): Only allow immortals to "tell" to a mobile
+ to prevent player abuses.
+
+-- gg - act.item.c: Multi-give/drop/donate/junk/put/get.
+
+10/28/98
+
+-- gg - alias.c, db.c: Fix a couple '%d' warnings, hopefully.
+
+-- gg - modify.c: show_string(): Fix a warning on 64-bit platforms with
+ casting a pointer to an integer.
+
+-- gg - utils.h: Better IS_NPC check added, though still commented out
+ in favor of the old, faithful one.
+
+-- gg - act.item.c: do_drop(): Fixed a bug WRT junking objects. 'amount'
+ was re-used inadvertently.
+
+-- gg - doc/README.BORLAND: It's actually helpful now.
+
+-- gg - db.c: create_entry(), init_char(): Need to check for replacing an
+ old character in the player table.
+
+11/2/98
+
+-- gg - comm.c: get_max_players(): "random guess" was missing a ;
+ From: Josh McBeth
+
+-- gg - limits.c: Del pointed out that I
+ forgot to make sure someone levelled before printing message. :)
+
+11/9/98
+
+-- gg - db.c: Duh, get_id_by_name() doesn't return player table array
+ index, so now get_ptable_by_name does.
+
+11/15/98
+
+-- gg - objsave.c: update_obj_file(): Don't update empty names.
+
+11/22/98
+
+-- gg - class.c: do_start(): Don't need to set_title() the person because
+ they have already had it done by init_char(). Found by
+ "Andrey Fidrya"
+
+11/23/98 -- Hereby proclaimed Rick Glover bug report day.
+ -- All of this day's bug fixes are from him.
+
+-- gg - spell_parser.c: mag_objectmagic(): Remove superfluous '!= NULL'
+ from action description check on suggestion.
+
+-- gg - act.informative.c: list_obj_to_char(): We don't initialize a variable
+ on the declaration line but do it on the next line down. I'm glad
+ I'm not the only picky person around here. :)
+
+-- gg - act.informative.c: do_score(): Redundant IS_NPC() checks removed.
+
+-- gg - act.item.c: get_check_money(): We had bad grammar.
+
+-- gg - act.item.c: do_drop(): Mixed up 'amount' and 'multi' in a sprintf()
+ during the multiple object changes.
+
+-- gg - Massive act() -> send_to_char() search and replace.
+
+-- gg - act.offensive.c: do_backstab(): WAIT_STATE() added.
+
+-- gg - act.wizard.c: do_show(): 'player' updated to use "buf + strlen(buf)".
+
+-- gg - boards.c: He also pointed out a 'board.h' typo.
+
+-- gg - He also noticed 'r_*_start_room' used 'sh_int' which prompted me
+ to search and replace many other instances of 'sh_int' misuse too.
+
+-- gg - db.c: index_boot(): He found a redundant 'break' after 'exit()'.
+
+-- gg - magic.c: mag_areas(): Didn't pass 'level' variable handed to us
+ to mag_damage().
+
+-- gg - magic.c: mag_points(): Variables compressed to same line.
+
+-- gg - db.h: LIB_OBJS removed, it wasn't used.
+
+11/24/98
+
+-- gg - db.c, act.informative.c: Removed 'extern spells[]'. Thanks to RG.
+
+-- gg - modify.c: do_skillset(): Spacing fixed when skills are skipped. From RG.
+
+-- gg - mobact.c: mobile_activity(): Charmed/blinded mobs can't help. From RG.
+
+-- gg - act.offensive.c: do_backstab(): Aware mobs aren't when asleep. From RG.
+
+-- gg - shop.c: evaluate_expression(): Remove isalpha() to allow '(' first.
+ shop.c: evaluate_operation(): &&/|| fixed to always pop both values.
+ Thanks to Lubos Lunak for finding these.
+
+12/1/98
+
+-- gg - ChangeLog: Ran it through ispell while avoiding gratuitous changes.
+
+12/2/98
+
+-- gg - utils.h: RG noted we had prototypes for {mana,hit,move}_limit but
+ removed the functions.
+
+-- gg - class.c: do_start(): We really do need the set_title() or newbies
+ start out with the level 0 title.
+
+12/10/98
+
+-- gg - utils.c, utils.h: {mana,hit,move}_limit() don't exist and ush_int
+ to int conversion in core_dump_real().
+
+-- gg - act.comm.c: do_page(): Extra \r\n removed from sprintf(), by RG.
+
+-- gg - act.social.c: fread_action(): is really local, by RG.
+
+-- gg - boards.c: Typo fixes and some spacing additions, by RG.
+
+-- gg - castle.c: Some act() -> send_to_char() where appropriate, by RG.
+ spec_procs.c: Ditto.
+
+-- gg - config.c: Some variables changed sh_int -> room_Xnum.
+
+-- gg - db.h: save_char() prototype sh_int fixes and LIB_OBJS removed.
+
+-- gg - house.c: More room_Xnum fixes, by RG I believe.
+
+-- gg - interpreter.c: More room_Xnum fixes.
+
+-- gg - mobact.c: mobile_activity(): Blind and charmed mobs shouldn't
+ be helping in attacks. By Rick Glover.
+
+12/15/98 - It's not a Y2k problem, I'll just write out 2000 afterwards. :P
+
+-- gg - act.item.c: Merged more act() -> send_to_char() fixes. Also fixed
+ the '\n' in the wear list. Lastly, revamped get_check_money() to
+ be plurally correct.
+
+-- gg - act.movement.c: has_boat(): Fixed return parenthesis.
+ do_doorcmd(): Removed extra \r\n.
+ do_stand(): More act() -> send_to_char() changes merged in from RG.
+
+-- gg - act.offensive.c: do_backstab(): Sleeping mobs aren't "aware," and
+ added delay to prevent abuse.
+ do_kick(): Use new function compute_armor_class().
+
+-- gg - act.other.c: do_quit(): RG suggested removal of 'save_room.' More
+ act() -> send_to_char() fixes in the code.
+
+-- gg - act.wizard.c: do_stat_character(): RG noted that dexterity isn't
+ factored into armor class, fixed.
+ do_show(): He also noted we need "buf + strlen(buf)" here.
+
+-- gg - db.c: sh_int/*_?num fixes.
+
+-- gg - fight.c: compute_armor_class(), compute_thaco(): New functions.
+ death_cry(): Use send_to_room instead of act() hackery.
+ hit(): Don't use weapon damage values if it isn't a weapon, from RG.
+ Also more act() -> send_to_char() fixes.
+
+-- gg - handler.c: act() -> send_to_char() fixes.
+
+-- gg - magic.c: mag_savingthrow(): Took idea for modifier value to be
+ added, from Edward J Glamkowski .
+ Callers changed throughout.
+
+-- gg - modify.c: do_skillset(): Screen spacing of skills fixed on
+ suggestion by Rick Glover .
+
+-- gg - objsave.c: Crash_save(): Reversed order of item saving to fix
+ bug that made auto equipment not work. Also minor touchups.
+ Rent problem reported by Rick Glover.
+
+-- gg - shop.c: evaluate_operation(): Lubos Lunak
+ found that the stack was messed up by compiler short-circuiting.
+ Also changed isalpha() check to allow a ( first.
+
+-- gg - spell_parser.c: More act() -> send_to_char() fixes.
+
+-- gg - act.informative.c: act() -> send_to_char() fixes and some old
+ now-gone externs removed.
+ do_score(): Cleaned up unneeded IS_NPC() checks, by RG.
+
+-- gg - comm.c: Cleaned up buffer checking code.
+ write_to_output(): Moved strlen() to avoid wasted time.
+
+12/16/98
+
+-- gg - act.informative.c: do_diagnose(): Superfluous 'return' removed
+ as suggested by Rick Glover.
+
+1/8/99
+
+-- gg - act.other.c, config.c, graph.c, interpreter.c, interpreter.h:
+ TRACK_THROUGH_DOORS the #define has become 'track_through_doors'
+ the runtime changeable integer in config.c. VALID_EDGE() also
+ went over the brink of readability and became a function.
+
+1/12/99
+
+-- gg - fight.c: Fixed up compute_armor_class() to not divide since only
+ one place cares about the internal value.
+
+1/13/99 - Wednesday
+
+-- gg - sysdep.h: Great, now winsock1/winsock2 conflict in Borland. What
+ a pain. Jodi Goddard was the first to mail me
+ the correct definitions to test for it.
+
+1/15/99
+
+-- gg - fight.c: compute_armor_class() should add dex_app * 10 since the
+ old code divided first, then added the modifier.
+
+1/24/99
+
+-- gg - util/listrent.c, util/split.c: Rick Glover pointed out a few \n\r's.
+
+-- gg - castle.c: King Welmar's movements needed ASCII adjustments.
+
+1/25/99
+
+-- gg - handler.c: generic_find() needs to NULL the arguments _first_ in case
+ our argument only has a fill word. Fixes crash reported by Rick
+ Glover that I couldn't originally reproduce.
+ act.item.c: do_get(), do_put(): Use one_argument() instead of half_chop
+ to allow for fill words.
+
+1/29/99
+
+-- gg - act.comm.c: Some more act() -> send_to_char() from Rick Glover.
+
+2/2/99
+
+-- gg - Got rid of int_to_short() in favor of a #pragma to disable the warning.
+
+2/16/99
+
+-- gg - First batch of Rick Glover bug reports.
+ Makefile.in
+ OBJFILES and CXREF_FILES sorted, alias.o moved alphabetically.
+ act.informative.c
+ do_gen_ps(): Added log() for unhandled case.
+ act.item.c
+ do_pour(): Removed superfluous 'return;' at end.
+ act.movement.c
+ Bitvectorized NEED_xxx #define's to be more obvious.
+ do_leave(): Use OUTSIDE().
+ do_wake(): Use AWAKE().
+ act.other.c
+ do_steal(): Use two_arguments().
+ do_wimpy(): Removed superfluous 'return;'.
+ act.wizard.c
+ perform_set(): Prevent only freezing self, not thawing self.
+ class.c
+ level_exp(): Log the bad level in the report.
+ comm.c
+ 'extern' variables extricated from the global variables.
+ shop.c, shop.h
+ 'producing' is now an obj_vnum.
+ spells.h
+ TAR_xxx defines bitvectorized instead of numbers.
+
+3/4/99
+
+-- gg - comm.c, structs.h, utils.h: PjD noticed that repeatedly reconnecting
+ to a MUD would cause the wait state counter to be reset. Thus it
+ has been merged with the mob counter.
+
+-- gg - act.other.c: do_split(): Fixes from Christian Loth to not lose
+ money and fix the accounting among a group. Untested but looks ok.
+
+-- gg - spell_parser.c: say_spell(): King Mundi proposed fix so that the
+ MUD doesn't go into infinite spastic loop upon unknown substring.
+
+-- gg - objsave.c: Crash_load(): "Andrey Fidrya" sent
+ in a fix for potentially empty rent files.
+
+-- gg - Usual batch of Rick Glover reports:
+ structs.h
+ room_data: 'zone' should be zone_rnum.
+ index_data 'vnum' should be a 'sh_int' type.
+ act.item.c
+ 'the $o' changed to '$p' for better clarity.
+ act.wizard.c
+ do_force: Mobs are now immortal subordinate.
+ do_set: height/weight; "sex" set type is much less
+ complicated with search_block now.
+ constants.c
+ Lowercased genders[] for do_set to work ok.
+ comm.c
+ make_prompt: buffer length fixed to track
+ MAX_PROMPT_LENGTH changes.
+ db.c
+ read_mobile: Should have WARNING tag on log() message,
+ because while not a SYSERR, it is sort of bad.
+ handler.c
+ affected_by_spell: Fixed up comment.
+ objsave.c
+ gen_receptionist: HSHH() for "she"
+ interpreter.c
+ Remove AFF_GROUP flag in addition to PLR_WRITING, etc.
+
+-- gg - class.c: levels(): Sean Daley noticed
+ I forgot _every_ 'break;' in the switch() block. :)
+
+3/5/99
+
+-- gg - Desmond Daignault sent in a
+ fixing up get_char_room_vis and get_char_vis like I wanted,
+ to be consistent with get_player_vis. The old function still
+ exists, it's just not used except by get_char_vis.
+
+3/10/99
+
+-- gg - Rick Glover found some old CRIMEOK references in magic.c
+
+******** Patchlevel 16 ***************************************************
+
+3/17/99
+
+-- gg - constants.c: Version string updated to bpl16.
+ structs.h: Preprocessor version number updated to bpl16.
+
+-- gg - First person to find a stupid bug award goes to Rick Glover
+ who noticed do_say and do_gsay are missing \r\n.
+
+-- gg - Wonder how no one noticed that 'sleep' spell sends its message
+ to the caster instead.... Found by RG.
+
+-- gg - 'prompt none' gave the help message. Found by RG.
+
+-- gg - act.other.c: do_quit(): Revert previous change because of
+ extract_char() behavior.
+
+3/26/99
+
+-- gg - Added README.MSVC6. We don't have Microsoft Visual C++ 6 so
+ we cannot confirm the accuracy of anything contained therein.
+
+4/11/99
+
+-- gg - Fixed typo '-P0' to '-P-' in Makefile.bcc.
+
+4/16/99
+
+-- gg - modify.c: string_add(): Fix Obiwan error in maxstr handling.
+ It no longer accepts 10 characters & NUL for a 10 character limit.
+
+5/1/99
+
+-- gg - act.wizard.c: do_show(): case 3: Check for NUL value.
+
+-- gg - structs.h: mob_rnum nr;
+
+5/3/99
+
+-- gg - comm.c: Last usage of d->connected replaced with STATE(d)
+
+-- gg - fight.c: damage(): Don't divine rescue people who can't flee.
+ Previously could result in being rescued after death because
+ then !FIGHTING() is true even though do_flee() failed.
+
+-- gg - sysdep.h: Yet another useless (to us in this case) MSVC warning.
+
+-- gg - comm.c: echo_off(): Fixed RFC compliance issue noted by
+ Matthew Bell
+
+5/4/99
+
+-- gg - act.social.c: boot_social_messages(): More sanity checks to make
+ sure we don't stomp memory.
+
+5/9/99
+
+-- gg - util/delobjs.c: Change unlink() to remove().
+
+-- gg - shop.c, mobact.c, fight.c, class.c, spec_procs.c: Use constants.h
+
+-- gg - objsave.c: Removed unused str_app[] extern.
+
+-- gg - db.h: CIRCLE_VMS path declarations.
+
+-- gg - house.c: Fixed Obj_from_store() C++ linkage problem.
+
+-- gg - interpreter.h: Make cmd_info[] extern match declaration.
+
+-- gg - constants.h: Remove 'const' from int arrays to fix C++ linkage.
+
+5/10/99
+
+-- gg - act.item.c, act.other.c: Use constants.h for more things.
+ From the VMS guy again. See README.VMS.
+
+-- gg - comm.c: New circle_sleep() function and various VMS fixes.
+
+5/18/99
+
+-- gg - comm.c, config.c: s/MAX_PLAYERS/max_playing/ since the DEC
+ C compiler confuses it with 'max_playing' also.
+
+5/26/99
+
+-- gg - circle.com, mud_utils.com, autorun.com: New utilities for
+ running CircleMUD on VMS from Robert Alan Byer. Before
+ people ask, these are _not_ DOS executable files.
+
+-- gg - act.other.c: do_practice(): NPC's cannot practice.
+
+-- gg - comm.c: game_loop(): Made output_ready() to appease VMS.
+
+-- gg - utils.c: mudlog() cleaned up and no longer tries to get colors
+ from a mobile.
+
+-- gg - vms_decls.h: New file, containing declarations the
+ operating system should have provided.
+
+-- gg - shop.c: top_shop is now array-based intead of counting-based.
+
+5/28/99
+
+-- gg - Couple more VMS changes. Also made accept_arg_t since everyone
+ seems to differ on this variable's signedness.
+
+5/29/99
+
+-- gg - objsave.c: Crash_listrent(): Was overwriting beginning of
+ information string with later information.
+
+6/3/99
+
+-- gg - act.wizard.c: do_vnum(): Use half_chop() to allow fillwords.
+ From Rick Glover.
+
+-- gg - db.c: check_object(): Bitvector and drink container checks.
+
+-- gg - act.informative.c: do_score(): Plurality problem.
+
+6/6/99
+
+-- gg - act.wizard.c: do_stat_character(): Remove gender special case.
+ This will have the side-effect of lowercasing the result, but
+ the simplicity is preferred here.
+
+6/11/99
+
+-- JE - README.CYGWIN - incorporated new version from David Goldstein
+
+7/4/99
+
+-- gg - comm.c: close_socket(): Check for IS_NPC() before PLR_MAILING.
+
+-- gg - db.c: Don't re-file_to_string_alloc() anything currently in
+ use by the pager. It's the least impact change. From
+ Andrey Fidrya
+
+-- gg - limits.c: Autowiz support for Windows from
+ Julian Buckley
+
+-- gg - modify.c: string_add(): Yet another fix to make the buffer
+ limits safe. From Andrey Fidrya .
+
+-- gg - objsave.c: Crash_extract_norents_from_equipped():
+ Um, duh. Helps to use functions. :) Spotted by
+ Andrey Fidrya .
+
+7/10/99
+
+-- gg - spell_parser.c: ACMD(do_cast): Equipped objects should
+ be 'what' and not 'who' in the message.
+
+-- gg - Merged latest set of changes for VMS.
+ doc/README.VMS: Update from author.
+ descrip.mms, vms_circlemud_gcc.opt, vms_gnuc.h: Removed.
+ build_circlemud.com: Almost a 'Makefile' for VMS.
+ comm.c: gettimeofday(): Removed VMS version, it now has it.
+ game_loop(): Removed output_ready() special case.
+ circle_sleep(): Removed special case for VMS.
+ sysdep.h: output_ready() removed. 'vms_gnuc.h' removed.
+
+8/01/99
+
+-- dk - Dropped in support for socklen_t, which is in the latest POSIX
+ drafts and glibc2, to replace the accept_arg_t kludge. Please
+ verify the veracity of the changes to the OS dependent conf.h.*
+ files. Any platform using glibc2 or that has socklen_t won't
+ compile correctly using those settings. Platforms using the
+ 'configure' script should autodetect and work properly, although
+ my system is libc5 based, so it's untested.
+
+8/4/99
+
+-- gg - doc/README.AMIGA: New update.
+
+8/28/99
+
+-- gg - act.item.c: Fixed 'junk 83467534657834 coins' bug.
+
+-- gg - Released patchlevel 16.
+
+******** Patchlevel 17 ***************************************************
+
+8/28/99
+
+-- gg - constants.c, structs.h: Welcome to bpl17.
+
+-- gg - interpreter.c: Todd A. Laycock noted
+ that we don't actually use ACMD(do_rent) anywhere, nor do we
+ even have one.
+
+12/14/99
+
+-- gg - act.wizard.c, spec_assign,c: Fix '< top_of_world' from
+ Andrey Fidrya
+
+-- gg - modify.c: string_add(): Del
+ noticed a missing \r\n if people overflowed max_str on
+ the first line.
+
+12/17/99
+
+-- gg - comm.c: perform_act(): "Bob Castillo"
+ noticed that illegal act() codes crash the MUD. Oops.
+ Fortunately, it only occurs due to lib/misc/socials or
+ aedit (the social editor) as user input is escaped to prevent
+ any act() codes at all.
+
+-- gg - act.informative.c: look_at_char(): Mob names aren't
+ capitalized due to \r\n prepended.
+ db.c: is_empty(): Crashes on NOWHERE and prevented
+ success by immortals.
+ act.wizard.c: do_return(): When disconnecting someone
+ upon return, make sure to not trash our own connection.
+ act.wizard.c: do_dc(): Needed to fix a case when
+ disconnecting people not in the game.
+ All spotted by "Andrey Fidrya"
+
+12/31/1999
+
+-- dk - ChangeLog dates are now Y2K compliant! And just in the nick of
+ time! Thanks to all the COBOL hackers that brushed off their
+ cobwebs and worked around the clock to fix it.
+
+01/01/2000
+
+-- dk - Happy New Year and Ante-Millennium.
+
+
+01/14/2000
+
+-- dk - comm.c: Changed some 'int's to 'socket_t's. That's what it's
+ there for, so that's what we'll use it for. (Why didn't anyone
+ else notice this?! Bizarre.)
+
+1/20/2000 -- See, I told you.
+
+-- gg - house.c: Removed a lot of '< 0' == 'NOWHERE' assumptions.
+
+-- gg - comm.c: Having a $ as the last character on the line
+ could do bad things since bpl4. Found by Bob
+ Castillo .
+
+1/23/2000
+
+-- gg - house.c: Removed a lot of '>= 0' != 'NOWHERE' assumptions.
+ Del noticed I missed those.
+
+-- gg - comm.c: process_input(): Fixed the fact we write too much
+ to memory in the input buffer. Found by Bob Castillo
+ since it's much more noticeable in an unsigned variable.
+
+-- gg - comm.c: echo_on(): We don't need NAOFFD or NAOCRD, they
+ cause us problems, and others don't use them either.
+
+-- gg - db.c: file_to_string_alloc(): 'using' is a keyword in C++.
+
+-- gg - Batch of Rick Glover reports:
+ act.comm.c: do_spec_comm(): Use switch instead of if..else.
+ db.c: count_alias_records(): Don't count empty aliases.
+ parse_object(): in_room=NOWHERE is superfluous.
+ interpreter.c: nanny(): CON_CLOSE is possible.
+
+-- gg - Released patchlevel 17.
+
+******** Patchlevel 18 ***************************************************
+
+1/23/2000
+
+-- gg - constants.c/structs.h: Welcome to bpl18.
+
+-- gg - Makefile.lcc: Remove some constants I have to change every patch.
+
+-- gg - doc/README.CYGWIN: bpl17 -> bpl18
+
+7/3/2000
+
+-- gg - doc/license.doc: Add copyright information that seems lacking
+ elsewhere.
+
+-- gg - build_circlemud.com: Update from author.
+
+-- gg - utils.h: -1 => NOBODY/NOWHERE/NOTHING cleanups.
+
+-- gg - spells.c: spell_teleport(): No teleporting into ROOM_GODROOM.
+
+-- gg - spec_procs.c: Restrict pets to NPCs.
+
+-- gg - interpreter.c: is_abbrev(): s/returnss/returns/
+
+-- gg - handler.c: affect_join(): Keep 'next' pointer for extracted
+ objects in list.
+
+-- gg - act.wizard.c: perform_immort_invis(): Remove redundant
+ IS_NPC check.
+
+-- gg - utils.c: basic_mud_log(): Cancel message if stream hasn't
+ been initialized.
+
+7/7/2000
+
+-- gg - utils.c: mudlog(): log(var) => log("%s", var); to avoid
+ interpreting %% codes.
+
+-- gg - db.c: parse_object(): Print the offending character.
+ check_object(): Drink aliases should last now. The code
+ to remove the aliases shouldn't care where it is, though.
+
+-- gg - act.item.c: name_from_drinkcon()/name_to_drinkcon():
+ Much more intelligent support for removing/adding the
+ drink name to containers.
+
+-- gg - lib/world/obj/0.obj: An extra ~ escaped the removal of
+ object #99.
+
+10/27/2000
+
+-- ae - act.informative.c: Fixed do_time() with the fix submitted by Nate
+ Winters that corrected the output on the 11th,
+ 12th, and 13th of a month (it used to output '11st', '12nd', and
+ '13rd'. Not so good really.
+
+11/3/2000
+
+-- gg - shop.c: Del noted the
+ 'show shop' header was at the bottom of pages.
+
+-- gg - utils.c: get_line(): "Andrey Fidrya"
+ has files without a \n on the last line.
+
+11/15/2000
+
+-- gg - act.other.c: do_quit: !GET_INVIS_LEV is redundant.
+
+9/18/2000
+
+-- ae - comm.c: Added in $u and $U act() codes to perform_act(). These allow
+ the user to uppercase the first letter of the previous ($u) or next
+ ($U) word. For example, from the social for 'snarl':
+ $n snarls angrily at $N. $e$u seems incapable of controlling $mself.
+ $n snarls viciously at you. $U$s self-control seems to have gone bananas.
+ In the old style, these would have come out as:
+ George snarls angrily at Daniel. he seems incapable of controlling himself.
+ George snarls angrily at you. his self-control seems to have gone bananas.
+ In the new, we get:
+ George snarls angrily at Daniel. He seems incapable of controlling himself.
+ George snarls angrily at you. His self-control seems to have gone bananas.
+ This comes a little bit closer to proper sentence output and looks
+ much nicer to boot.
+
+12/07/2000
+
+-- ae - Removed some 'offensive' language from act.item.c and magic.c.
+
+1/17/2001
+
+-- gg - db.c: load_zones(): More accurate counting based in part
+ on suggestions by Rick Glover. Also added SYSERR.
+
+-- gg - act.offensive.c: do_order(): No "order followers". Based
+ on reports from Andrey Fidrya. We'll need similar fixes
+ for other areas and can turn it back on then.
+
+-- gg - db.c: file_to_string(): Check for empty files or we corrupt
+ memory. From "Bob Castillo" . Also
+ took care of duplicated feof() test.
+
+1/25/2001
+
+-- gg - spells.h, magic.c, spell_parser.c, constants.h, constants.c:
+ spell_wear_off_msg[] died. It moved to spell_info[] and I
+ fixed 3 mispelings in the process. (That was on purpose.)
+
+-- gg - Makefile.in: magic.c depends on constants.h
+
+-- gg - comm.h: Move PAGE_(WIDTH|LENGTH) from modify.c for computations
+ using page_string(). Needed by the shop code.
+
+-- gg - mobact.c: Fixed MOB_AGGR and MOB_AGGR_TO_ALIGN logic. Any
+ aggressive mobs also aggressive_to_alignment weren't properly
+ attacking everybody, just the alignment.
+
+-- gg - objsave.c: Crash_load(): Plurality.
+
+-- gg - structs.h: Formatting and comment adjustment on CON_ and MOB_.
+
+-- gg - comm.c: close_socket(): Make "closing link" message accurate.
+
+-- gg - generic_find(): Fix for '2.bread' with one on the ground and
+ one in your inventory.
+
+-- ae - spec_procs.c: Added a CAN_SEE() check into npc_steal() to stop mobs
+ with the thief special from stealing from people that they can't even
+ see. Reported by Vladimir Prelovac
+
+1/26/2001
+
+-- ae - act.other.c: Shifted the checking for duping into extract_char(). I
+ was toying and discovered that renting out skips all of the dup checks
+ that we had in and so does dieing. Whoops. Also, we were setting the
+ state of the descriptor to CON_DISCONNECT when that state is used
+ everywhere else for players that have the state of CON_PLAYING, so I
+ changed that to CON_CLOSE. (also note 'handler.c')
+
+2/18/2001
+
+-- gg - comm.c: perform_socket_read(): Handle ECONNRESET by booting
+ the person as we do for a 0 length read.
+
+3/4/2001
+
+-- gg - db.c, db.h: fread_string(): Doesn't modify 'error'.
+
+-- gg - util/shopconv.c: fread_string(): Fix horrible buffer overrun
+ as well as making the return codes not pretend to be ok.
+
+-- gg - shop.c: read_shop_message(): Fix think-o on fread_string's
+ string parameter.
+
+-- gg - handler.c: get_obj_vis(): Make sure 'number' isn't NULL.
+ extract_char(): Extensively rearranged.
+
+-- gg - handler.c: get_obj_vis(): Really support numbering.
+
+-- gg - act.wizard.c: find_target_room(): Cleanup and extend to
+ find location of objects worn or carried.
+
+-- gg - db.c: load_zones(): Skip first 3 lines to avoid mistaking
+ zone name for a command.
+
+-- gg - boards.c: init_boards(): -1 => NOTHING
+
+-- gg - comm.c: game_loop(): Use RL_SEC more.
+ heartbeat(): More PULSE_* constants.
+
+-- gg - structs.h: PULSE_* constants, OPT_USEC explanation.
+
+-- gg - handler.c: extract_char(): Should only be one switch
+ target, abort on finding it. Also adjusted comment.
+
+3/10/2001
+
+-- gg - class.c: invalid_class(): Reformatted so people
+ can actually read it.
+
+-- gg - utils.h: ANA/SANA: No 'Y'. (Compare to 'AN')
+ From: Peter Ajamian
+
+3/18/2001
+
+-- gg - handler.[ch], structs.h, comm.c, act.offensive.c,
+ fight.c: New delayed extraction sequence to avoid
+ dangling pointer crashes.
+
+-- gg - Released patchlevel 18.
+
+******** Patchlevel 19 ***************************************************
+
+3/18/2001
+
+-- gg - constants.c, structs.h, Makefile.lcc, doc/README.CYGWIN:
+ Welcome to bpl19.
+
+5/1/2001
+
+-- ae - Changed some '256' notes to READ_SIZE (db.c) or MAX_INPUT_LENGTH
+ (mail.c and handler.c). These are to keep the consistency across
+ functions, etc.
+
+-- ae - act.item.c: Removed a check for too many objects from the beginning
+ of do_get(). As pointed out by Vladimir Prelovac
+ ,
+ 1. If there isn't anything to get you still get that message
+ 2. The check is already made at the appropriate time in all the other
+ functions that do_get() calls (in can_take_obj()).
+
+-- ae - constants.c: We forgot the string for the NOTDEADYET flags. Oops.
+ Added in 'DEAD' (with comments) for completeness.
+
+5/8/2001
+
+-- ae - Makefile.in: Modified makefile (and added htmlheaders/footers) to
+ allow for cxref data creation more readily.
+
+5/9/2001
+
+-- ae - Del submitted a 'bug' (wording problem) with a chunk in
+ act.movement.c that has to do with ROOM_TUNNEL. There are two
+ options for fixing it, so I chose the middle ground: adding a
+ config variable for it to config.c. This variable (tunnel_size)
+ indicates how large the tunnel is and defaults to 2.
+
+5/10/2001
+
+-- ae - act.wizard.c: Added in code to remove holylight, syslog, and
+ nohassle when wiz+ are demoted below level 31 with do_advance().
+
+-- ae - fight.c: If we don't have a fight message to send (ie, suffering,
+ poison, etc), then don't send the colours, and don't try to send
+ the message that we don't have. Reported by Andrey Fidrya
+
+
+-- ae - db.c: This fixes a possible overflow problem in pfiles by truncating
+ the description if it is too long. Reported by Andrey Fidrya
+
+
+-- ae - We had a reference to SKILL_PUNCH (#136), but in the base code,
+ 'punch' is an action, not a skill. Not only that, but we don't
+ even reference it in the lib/ anywhere. (spells.h, spell_parser.c)
+
+5/16/2001
+
+-- ae - coding.doc: Added in a section 4 (special procedures) that was
+ submitted to us ages ago by Luis Pedro Passos Carvalho
+