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 + . 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. diff --git a/lib/misc/socials b/lib/misc/socials index 07d772c..6234b16 100644 --- a/lib/misc/socials +++ b/lib/misc/socials @@ -350,7 +350,7 @@ You gently massage $N's shoulders. $n massages $N's shoulders. $n gently massages your shoulders...ahhhhhhhhhh... You can only massage someone in the same room as you. -You practise yoga as you try to massage yourself. +You practice yoga as you try to massage yourself. $n gives a show on yoga-positions, trying to massage $mself. moan 0 0 diff --git a/lib/text/motd b/lib/text/motd index d7c59e4..7c9b566 100644 --- a/lib/text/motd +++ b/lib/text/motd @@ -2,7 +2,7 @@ Welcome to - C I R C L E M U D 3 . 0 + C I R C L E M U D 3 . 1 "We addict players for their own enjoyment." Created by Jeremy Elson (jelson@circlemud.org) diff --git a/lib/world/obj/120.obj b/lib/world/obj/120.obj index fecad92..462fa63 100644 --- a/lib/world/obj/120.obj +++ b/lib/world/obj/120.obj @@ -139,7 +139,7 @@ robe froboz~ Froboz' robe~ Froboz' robe has been dropped here.~ ~ -11 0 1024 +11 0 1025 0 0 0 0 5 15000 2500 A diff --git a/lib/world/obj/25.obj b/lib/world/obj/25.obj index 48eca2b..b4570db 100644 --- a/lib/world/obj/25.obj +++ b/lib/world/obj/25.obj @@ -249,7 +249,7 @@ A black rod has been left here.~ 20 3 3 22 4 1200 200 #2528 -wand wooden~ +stick wooden wand~ a wooden stick~ a wooden stick is here~ ~ diff --git a/lib/world/wld/72.wld b/lib/world/wld/72.wld index 67b8afe..83fe4cc 100644 --- a/lib/world/wld/72.wld +++ b/lib/world/wld/72.wld @@ -1205,7 +1205,7 @@ door. ~ 73 adj 1 D2 -You can see a picture with some peeple crawling around a huge moon. +You can see a picture with some people crawling around a huge moon. ~ moon door~ 1 -1 7315 diff --git a/src/Makefile b/src/Makefile deleted file mode 100644 index abc978e..0000000 --- a/src/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -all: - # You must run "configure" in Circle's top-level directory. See the - # README file in that directory for more information. diff --git a/src/act.informative.c b/src/act.informative.c index 84bb5a0..3454336 100644 --- a/src/act.informative.c +++ b/src/act.informative.c @@ -100,6 +100,12 @@ void show_obj_to_char(struct obj_data *obj, struct char_data *ch, int mode) { if (!obj || !ch) { log("SYSERR: NULL pointer in show_obj_to_char(): obj=%p ch=%p", obj, ch); + /* SYSERR_DESC: + * Somehow a NULL pointer was sent to show_obj_to_char() in either the + * 'obj' or the 'ch' variable. The error will indicate which was NULL + * be listing both of the pointers passed to it. This is often a + * difficult one to trace, and may require stepping through a debugger. + */ return; } @@ -136,6 +142,13 @@ void show_obj_to_char(struct obj_data *obj, struct char_data *ch, int mode) default: log("SYSERR: Bad display mode (%d) in show_obj_to_char().", mode); + /* SYSERR_DESC: + * show_obj_to_char() has some predefined 'mode's (argument #3) to tell + * it what to display to the character when it is called. If the mode + * is not one of these, it will output this error, and indicate what + * mode was passed to it. To correct it, you will need to find the + * call with the incorrect mode and change it to an acceptable mode. + */ return; } @@ -1289,6 +1302,14 @@ ACMD(do_gen_ps) break; default: log("SYSERR: Unhandled case in do_gen_ps. (%d)", subcmd); + /* SYSERR_DESC: + * General page string function for such things as 'credits', 'news', + * 'wizlist', 'clear', 'version'. This occurs when a call is made to + * this routine that is not one of the predefined calls. To correct + * it, either a case needs to be added into the function to account for + * the subcmd that is being passed to it, or the call to the function + * needs to have the correct subcmd put into place. + */ return; } } diff --git a/src/act.item.c b/src/act.item.c index 36eac5f..7ebbb14 100644 --- a/src/act.item.c +++ b/src/act.item.c @@ -481,6 +481,10 @@ int perform_drop(struct char_data *ch, struct obj_data *obj, return (value); default: log("SYSERR: Incorrect argument %d passed to perform_drop.", mode); + /* SYSERR_DESC: + * This error comes from perform_drop() and is output when perform_drop() + * is called with an illegal 'mode' argument. + */ break; } @@ -748,11 +752,14 @@ void weight_change_object(struct obj_data *obj, int weight) obj_to_obj(obj, tmp_obj); } else { log("SYSERR: Unknown attempt to subtract weight from an object."); + /* SYSERR_DESC: + * weight_change_object() outputs this error when weight is attempted to + * be removed from an object that is not carried or in another object. + */ } } - void name_from_drinkcon(struct obj_data *obj) { char *new_name, *cur_name, *next; @@ -765,6 +772,11 @@ void name_from_drinkcon(struct obj_data *obj) liqname = drinknames[GET_OBJ_VAL(obj, 2)]; if (!isname(liqname, obj->name)) { log("SYSERR: Can't remove liquid '%s' from '%s' (%d) item.", liqname, obj->name, obj->item_number); + /* SYSERR_DESC: + * From name_from_drinkcon(), this error comes about if the object + * noted (by keywords and item vnum) does not contain the liquid string + * being searched for. + */ return; } @@ -1409,6 +1421,10 @@ void perform_remove(struct char_data *ch, int pos) if (!(obj = GET_EQ(ch, pos))) log("SYSERR: perform_remove: bad pos %d passed.", pos); + /* SYSERR_DESC: + * This error occurs when perform_remove() is passed a bad 'pos' + * (location) to remove an object from. + */ else if (OBJ_FLAGGED(obj, ITEM_NODROP)) act("You can't remove $p, it must be CURSED!", FALSE, ch, obj, 0, TO_CHAR); else if (IS_CARRYING_N(ch) >= CAN_CARRY_N(ch)) diff --git a/src/act.movement.c b/src/act.movement.c index 0e80ec7..2cb3d62 100644 --- a/src/act.movement.c +++ b/src/act.movement.c @@ -620,7 +620,7 @@ ACMD(do_rest) default: send_to_char(ch, "You stop floating around, and stop to rest your tired bones.\r\n"); act("$n stops floating around, and rests.", FALSE, ch, 0, 0, TO_ROOM); - GET_POS(ch) = POS_SITTING; + GET_POS(ch) = POS_RESTING; break; } } diff --git a/src/act.other.c b/src/act.other.c index 98781a4..0b29724 100644 --- a/src/act.other.c +++ b/src/act.other.c @@ -657,6 +657,10 @@ ACMD(do_use) return; default: log("SYSERR: Unknown subcmd %d passed to do_use.", subcmd); + /* SYSERR_DESC: + * This is the same as the unhandled case in do_gen_ps(), but in the + * function which handles 'quaff', 'recite', and 'use'. + */ return; } } @@ -820,6 +824,11 @@ ACMD(do_gen_write) if (stat(filename, &fbuf) < 0) { perror("SYSERR: Can't stat() file"); + /* SYSERR_DESC: + * This is from do_gen_write() and indicates that it cannot call the + * stat() system call on the file required. The error string at the + * end of the line should explain what the problem is. + */ return; } if (fbuf.st_size >= max_filesize) { @@ -828,6 +837,12 @@ ACMD(do_gen_write) } if (!(fl = fopen(filename, "a"))) { perror("SYSERR: do_gen_write"); + /* SYSERR_DESC: + * This is from do_gen_write(), and will be output if the file in + * question cannot be opened for appending to. The error string + * at the end of the line should explain what the problem is. + */ + send_to_char(ch, "Could not open the file. Sorry.\r\n"); return; } @@ -943,6 +958,10 @@ ACMD(do_gen_tog) break; default: log("SYSERR: Unknown subcmd %d in do_gen_toggle.", subcmd); + /* SYSERR_DESC: + * This is the same as the unhandled case in do_gen_ps(), but in the + * function which handles 'compact', 'brief', and so forth. + */ return; } diff --git a/src/act.social.c b/src/act.social.c index fd42124..9dae2f9 100644 --- a/src/act.social.c +++ b/src/act.social.c @@ -179,6 +179,11 @@ char *fread_action(FILE *fl, int nr) fgets(buf, MAX_STRING_LENGTH, fl); if (feof(fl)) { log("SYSERR: fread_action: unexpected EOF near action #%d", nr); + /* SYSERR_DESC: + * fread_action() will fail if it discovers an end of file marker + * before it is able to read in the expected string. This can be + * caused by a truncated socials file. + */ exit(1); } if (*buf == '#') @@ -220,6 +225,11 @@ void boot_social_messages(void) /* open social file */ if (!(fl = fopen(SOCMESS_FILE, "r"))) { log("SYSERR: can't open socials file '%s': %s", SOCMESS_FILE, strerror(errno)); + /* SYSERR_DESC: + * This error, from boot_social_messages(), occurs when the server + * fails to open the file containing the social messages. The error + * at the end will indicate the reason why. + */ exit(1); } /* count socials & allocate space */ @@ -236,10 +246,25 @@ void boot_social_messages(void) break; if (fscanf(fl, " %d %d \n", &hide, &min_pos) != 2) { log("SYSERR: format error in social file near social '%s'", next_soc); + /* SYSERR_DESC: + * From boot_social_messages(), this error is output when the + * server is expecting to find the remainder of the first line of the + * social ('hide' and 'minimum position'). These must follow the + * name of the social with a single space such as: 'accuse 0 5\n'. + * This error often occurs when one of the numbers is missing or the + * social name has a space in it (i.e., 'bend over'). + */ exit(1); } if (++curr_soc > list_top) { log("SYSERR: Ran out of slots in social array. (%d > %d)", curr_soc, list_top); + /* SYSERR_DESC: + * The server creates enough space for all of the socials that it finds + * in the command structure (cmd_info[] in interpreter.c). These are + * designated with the 'do_action' command call. If there are more + * socials in the file than in the cmd_info structure, the + * boot_social_messages() function will fail with this error. + */ break; } @@ -251,6 +276,13 @@ void boot_social_messages(void) #ifdef CIRCLE_ACORN if (fgetc(fl) != '\n') log("SYSERR: Acorn bug workaround failed."); + /* SYSERR_DESC: + * The only time that this error should ever arise is if you are running + * your CircleMUD on the Acorn platform. The error arises when the + * server cannot properly read a '\n' out of the file at the end of the + * first line of the social (that with 'hide' and 'min position'). This + * is in boot_social_messages(). + */ #endif soc_mess_list[curr_soc].char_no_arg = fread_action(fl, nr); @@ -270,6 +302,14 @@ void boot_social_messages(void) /* If social not found, re-use this slot. 'curr_soc' will be reincremented. */ if (nr < 0) { log("SYSERR: Unknown social '%s' in social file.", next_soc); + /* SYSERR_DESC: + * This occurs when the find_command() function in interpreter.c cannot + * find the social of the name in the file in the cmd_info[] structure. + * This is returned to boot_social_messages(), and the function + * reassigns that slot to another social to avoid running out of memory. + * The solution is to add this social to the cmd_info[] array in + * interpreter.c or to remove the social from the file. + */ memset(&soc_mess_list[curr_soc--], 0, sizeof(struct social_messg)); continue; } @@ -277,6 +317,11 @@ void boot_social_messages(void) /* If the command we found isn't do_action, we didn't count it for the CREATE(). */ if (cmd_info[nr].command_pointer != do_action) { log("SYSERR: Social '%s' already assigned to a command.", next_soc); + /* SYSERR_DESC: + * This error occurs when boot_social_messages() reads in a social and + * then discovers that it is not assigned 'do_action' as a command in + * the cmd_info[] array in interpreter.c + */ memset(&soc_mess_list[curr_soc--], 0, sizeof(struct social_messg)); } } diff --git a/src/act.wizard.c b/src/act.wizard.c index 01e5680..07fa04f 100644 --- a/src/act.wizard.c +++ b/src/act.wizard.c @@ -1846,6 +1846,10 @@ ACMD(do_wizutil) break; default: log("SYSERR: Unknown subcmd %d passed to do_wizutil (%s)", subcmd, __FILE__); + /* SYSERR_DESC: + * This is the same as the unhandled case in do_gen_ps(), but this + * function handles 'reroll', 'pardon', 'freeze', etc. + */ break; } save_char(vict); diff --git a/src/alias.c b/src/alias.c index 3688e3a..f2807dd 100644 --- a/src/alias.c +++ b/src/alias.c @@ -33,8 +33,12 @@ void write_aliases(struct char_data *ch) return; if ((file = fopen(fn, "w")) == NULL) { - log("SYSERR: Couldn't save aliases for %s in '%s'.", GET_NAME(ch), fn); - perror("SYSERR: write_aliases"); + log("SYSERR: Couldn't save aliases for %s in '%s': %s", GET_NAME(ch), fn, strerror(errno)); + /* SYSERR_DESC: + * This error occurs when the server fails to open the relevant alias + * file for writing. The text at the end of the error should give a + * valid reason why. + */ return; } @@ -64,8 +68,12 @@ void read_aliases(struct char_data *ch) if ((file = fopen(xbuf, "r")) == NULL) { if (errno != ENOENT) { - log("SYSERR: Couldn't open alias file '%s' for %s.", xbuf, GET_NAME(ch)); - perror("SYSERR: read_aliases"); + log("SYSERR: Couldn't open alias file '%s' for %s: %s", xbuf, GET_NAME(ch), strerror(errno)); + /* SYSERR_DESC: + * This error occurs when the server fails to open the relevant alias + * file for reading. The text at the end version should give a valid + * reason why. + */ } return; } @@ -124,5 +132,9 @@ void delete_aliases(const char *charname) if (remove(filename) < 0 && errno != ENOENT) log("SYSERR: deleting alias file %s: %s", filename, strerror(errno)); + /* SYSERR_DESC: + * When an alias file cannot be removed, this error will occur, + * and the reason why will be the tail end of the error. + */ } diff --git a/src/boards.c b/src/boards.c index f474ac7..a6f41ee 100644 --- a/src/boards.c +++ b/src/boards.c @@ -531,6 +531,8 @@ void Board_clear_board(int board_type) int i; for (i = 0; i < MAX_BOARD_MESSAGES; i++) { + if (MSG_SLOTNUM(board_type, i) == -1) + continue; /* don't try to free non-existant slots */ if (MSG_HEADING(board_type, i)) free(MSG_HEADING(board_type, i)); if (msg_storage[MSG_SLOTNUM(board_type, i)]) diff --git a/src/castle.c b/src/castle.c index 1643c22..24f6dbe 100644 --- a/src/castle.c +++ b/src/castle.c @@ -90,6 +90,11 @@ void castle_mob_spec(mob_vnum mobnum, SPECIAL(*specproc)) if (rmr == NOBODY) { if (!mini_mud) log("SYSERR: assign_kings_castle(): can't find mob #%d.", vmv); + /* SYSERR_DESC: + * When the castle_mob_spec() function is given a mobnum that + * does not correspond to a mod loaded (when not in minimud mode), + * this error will result. + */ } else mob_index[rmr].func = specproc; } diff --git a/src/comm.c b/src/comm.c index 85f28c2..d9551be 100644 --- a/src/comm.c +++ b/src/comm.c @@ -147,6 +147,7 @@ int open_logfile(const char *filename, FILE *stderr_fp); #if defined(POSIX) sigfunc *my_signal(int signo, sigfunc *func); #endif +void free_bufpool(void); /* extern fcnts */ void reboot_wizlists(void); @@ -163,6 +164,7 @@ void free_messages(void); void Board_clear_all(void); void free_social_messages(void); void Free_Invalid_List(void); +void free_mail_index(void); #ifdef __CXREF__ #undef FD_ZERO @@ -327,9 +329,11 @@ int main(int argc, char **argv) if (!scheck) { log("Clearing other memory."); + free_bufpool(); /* comm.c */ free_player_index(); /* db.c */ free_messages(); /* fight.c */ clear_free_list(); /* mail.c */ + free_mail_index(); /* mail.c */ free_text_files(); /* db.c */ Board_clear_all(); /* boards.c */ free(cmd_sort_info); /* act.informative.c */ @@ -2518,3 +2522,17 @@ void circle_sleep(struct timeval *timeout) } #endif /* CIRCLE_WINDOWS */ + +void free_bufpool(void) +{ + struct txt_block *tmpblock; + + while (bufpool) { + tmpblock = bufpool; + bufpool = bufpool->next; + + if (tmpblock->text) + free(tmpblock->text); + free(tmpblock); + } +} diff --git a/src/db.c b/src/db.c index d434064..a8ab725 100644 --- a/src/db.c +++ b/src/db.c @@ -298,6 +298,8 @@ void destroy_db(void) while (character_list) { chtmp = character_list; character_list = character_list->next; + if (chtmp->master) + stop_follower(chtmp); free_char(chtmp); } diff --git a/src/house.c b/src/house.c index fc9ad31..9ddc2dd 100644 --- a/src/house.c +++ b/src/house.c @@ -324,7 +324,7 @@ void hcontrol_list_houses(struct char_data *ch) if (house_control[i].last_payment) { timestr = asctime(localtime(&(house_control[i].last_payment))); *(timestr + 10) = '\0'; - strlcpy(last_pay, timestr, sizeof(built_on)); + strlcpy(last_pay, timestr, sizeof(last_pay)); } else strcpy(last_pay, "None"); /* strcpy: OK (for 'strlen("None") < 128') */ diff --git a/src/interpreter.c b/src/interpreter.c index ee53367..e5e1c1e 100644 --- a/src/interpreter.c +++ b/src/interpreter.c @@ -966,35 +966,30 @@ char *one_argument(char *argument, char *first_arg) /* - * one_word is like one_argument, except that words in quotes ("") are + * one_word is like any_one_arg, except that words in quotes ("") are * considered one word. + * + * No longer ignores fill words. -dak, 6 Jan 2003 */ char *one_word(char *argument, char *first_arg) { - char *begin = first_arg; + skip_spaces(&argument); - do { - skip_spaces(&argument); - - first_arg = begin; - - if (*argument == '\"') { + if (*argument == '\"') { + argument++; + while (*argument && *argument != '\"') { + *(first_arg++) = LOWER(*argument); argument++; - while (*argument && *argument != '\"') { - *(first_arg++) = LOWER(*argument); - argument++; - } - argument++; - } else { - while (*argument && !isspace(*argument)) { - *(first_arg++) = LOWER(*argument); - argument++; - } } + argument++; + } else { + while (*argument && !isspace(*argument)) { + *(first_arg++) = LOWER(*argument); + argument++; + } + } - *first_arg = '\0'; - } while (fill_word(begin)); - + *first_arg = '\0'; return (argument); } diff --git a/src/mail.c b/src/mail.c index f470ec5..932e574 100644 --- a/src/mail.c +++ b/src/mail.c @@ -614,3 +614,21 @@ void postmaster_receive_mail(struct char_data *ch, struct char_data *mailman, act("$N gives $n a piece of mail.", FALSE, ch, 0, mailman, TO_ROOM); } } + + +void free_mail_index(void) +{ + while (mail_index) { + mail_index_type *tmp_index = mail_index; + mail_index = mail_index->next; + + while (tmp_index->list_start) { + position_list_type *tmp_list; + + tmp_list = tmp_index->list_start; + tmp_index->list_start = tmp_index->list_start->next; + free(tmp_list); + } + free(tmp_index); + } +} diff --git a/src/spells.c b/src/spells.c index 0d35911..cdcde44 100644 --- a/src/spells.c +++ b/src/spells.c @@ -171,7 +171,7 @@ ASPELL(spell_locate_object) if (!isname(name, i->name)) continue; - send_to_char(ch, "%c%s", UPPER(*i->short_description), i->short_description); + send_to_char(ch, "%c%s", UPPER(*i->short_description), i->short_description+1); if (i->carried_by) send_to_char(ch, " is being carried by %s.\r\n", PERS(i->carried_by, ch)); diff --git a/src/structs.h b/src/structs.h index 9a8d67d..79bba77 100644 --- a/src/structs.h +++ b/src/structs.h @@ -317,7 +317,7 @@ /* Take/Wear flags: used by obj_data.obj_flags.wear_flags */ -#define ITEM_WEAR_TAKE (1 << 0) /* Item can be takes */ +#define ITEM_WEAR_TAKE (1 << 0) /* Item can be taken */ #define ITEM_WEAR_FINGER (1 << 1) /* Can be worn on finger */ #define ITEM_WEAR_NECK (1 << 2) /* Can be worn around neck */ #define ITEM_WEAR_BODY (1 << 3) /* Can be worn on body */ diff --git a/src/utils.h b/src/utils.h index 1b8d262..9b23475 100644 --- a/src/utils.h +++ b/src/utils.h @@ -33,7 +33,7 @@ int get_filename(char *filename, size_t fbufsize, int mode, const char *orig_nam time_t mud_time_to_secs(struct time_info_data *now); struct time_info_data *age(struct char_data *ch); int num_pc_in_room(struct room_data *room); -void core_dump_real(const char *, int); +void core_dump_real(const char *who, int line); int room_is_dark(room_rnum room); #define core_dump() core_dump_real(__FILE__, __LINE__) diff --git a/syslog b/syslog index e69de29..177e247 100644 --- a/syslog +++ b/syslog @@ -0,0 +1 @@ +System messages will end up written here.