I've just released CircleMUD version 3.0, patchlevel 11, to the usual FTP
sites (ftp.cs.jhu.edu and cambot.res.jhu.edu in pub/CircleMUD/3.x).
A few notes:
-- This will be one of the last beta patchlevels. Effective this patchlevel,
*NO* new features will be added -- ONLY bug fixes. This means that a
complete OLC will not be included until production version 3.01 or 3.02.
(OLC will be done just as quickly as before; I have just changed the
numbering scheme so that people who are waiting for the non-beta release
of Circle can start developing their MUDs.)
Once we get out of beta, hopefully we will have a very solid, stable,
highly portable code base -- then, I'll be able to start adding new
features again.
-- Starting with pl11, CircleMUD now compiles under Windows 95 and NT!
Please only attempt this if you know what you're doing - I am absolutely
not going to offer any technical support for Windows 95 users who don't
know how to use their compilers. :-) There are currently no binary
distributions, although I will probably release a binary for Windows once
the code gets out of beta.
-- I've decided to stop distributing Circle in .tar.Z format because everyone
uses gzip now. Also, I've started distributing Circle in .zip format to
make it easier for Windows and OS/2 users to use.
-- It was brought to my attention that the old patch files that used to be
on the FTP site didn't work because I forgot to include the --new-file
switch to diff. So, I've deleted the old patch files and recreated patch
files to go from patchlevel 8, 9, and 10 directly to 11.
I've pasted the ChangeLog entries for patchlevel 11 below. Enjoy!
Regards,
Jeremy
jelson@jhu.edu
******** Patchlevel 11 ***************************************************
-- Patches to make Circle compile under MSCV++ 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.
This archive was generated by hypermail 2b30 : 12/18/00 PST