Crossfire 0.97.0 has been released. Unless serious bugs are detected, this will be the last release before 1.0. Main changes: All known server crashing bugs fixed. Various fixes to exit code. All exits should now work properly. NOTE TO MIRROR SITES: The primary site (ftp.scruz.net) has limited download bandwidth per day. You can also get this release off of sourceforge.net. Files released for this version: sums (bsd) filename 25647 1587 crossfire-0.97.0.arch.tar.bz2 25529 1911 crossfire-0.97.0.arch.tar.gz 09309 2724 crossfire-0.97.0.maps.tar.bz2 52601 3917 crossfire-0.97.0.maps.tar.gz 42177 2654 crossfire-0.97.0.tar.bz2 20334 2979 crossfire-0.97.0.tar.gz 37495 239 crossfire-client-0.97.0.tar.gz Sums (md5) 741f8d40acccee291fa79123528134a2 crossfire-0.97.0.arch.tar.bz2 0498e28ac5b867925d120753c68e4489 crossfire-0.97.0.arch.tar.gz 47b72b99b8aa58a9b0e8f59121be7a40 crossfire-0.97.0.maps.tar.bz2 6ef6c7e9dd3929c3e40ab6a8467a57aa crossfire-0.97.0.maps.tar.gz 441971f04bc61632afdc3f18e92e541c crossfire-0.97.0.tar.bz2 e34ef338c87c5855af2ef11a75ede71f crossfire-0.97.0.tar.gz 13d40c5f6031c970135f81dc14ca4fd7 crossfire-client-0.97.0.tar.gz crossfire-client-0.97.0 is the client (X11) distribution - standard X11 and gtk interfaces are provided. crossfire-0.97.0.tar.{gz/bz2} contains the server code with prebuilt archetype and image files. crossfire-0.97.0.arch.tar.{gz/bz2} contains the unpacked archetype changes. This is not needed if you only want to compile the server and play the game. crossfire-0.97.0-maps.tar.{gz/bz2} contains the maps. This is needed with the server distribution. FOR FIRST TIME USERS: You will only need the appropriate server, map and client file. You do not need the arch file. If you are a first time user, you may want the doc file unless you are using a web based player referance. If you just want to play the game at some remote server, you need the client and perhaps some version of the doc file. Crossfire is avaible on the following ftp sites Primary: ftp://ftp.scruz.net:/users/mwedel/public (165.227.192.254) ftp://ftp.sourceforge.net:/pub/sourceforge/crossfire (64.28.67.101) ftp://ftp.ifi.uio.no:/pub/crossfire (129.240.64.44) Secondary: ftp://ftp.real-time.com/pub/games/crossfire (206.10.252.12) ftp://ftp.cs.city.ac.uk:/pub/games/crossfire/ ftp://ftp.sunet.se:/pub/unix/games/crossfire (130.238.127.3) ftp://ftp.cs.titech.ac.jp:/pub/games/crossfire ftp://mirror.aarnet.edu.au/games/roguelike/crossfire/ ftp://crossfire.futt.org//pub/crossfire I uploaded this version to just ftp.scruz.net - it should be on the other ftp sites in a short time. Mark Wedel mwedel at scruz.net ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Changes: Client: Changes for 0.97.0: MSW 2001/03/18 Change so that containers on the ground still keep proper contents even if the map space itself changes (spells or other objects going onto the space). This is done by using the cpl.container pointer and when getting an updated map space, seeing if one of the map space object tags match that. commands.c: update the cpl.container tags when opening/closing containers. item.c: Have locate_object see if the container matches the tag. Don't have remove_item remove the object contents of other attributes if it is the container, but still remove it from the list it is on. item.h: remove function prototypes - these are in proto.h MSW 2001/03/13: png.c: New png -> X11 (or gdk) creation routines that are much faster. This should make a noticable difference in performance. Note that the X11 and gdk implementations are very different now - the gdk implementation lets the gdk library do most of the work. gx11.c: remove some dead code, add call to gdk_rgb_init() if using png images - needed by new png loader. x11.c: Add call to init_pngx_loader if running in png mode. Also pass colormap by pointer so png_to_xpixmap can modify it. xutil.c: pass colormap by pointer to init_pngx_loader (same reason as above) MSW 2001/03/06: Makefile.in: Add DMALLOC_LIB definition instead of it going in with the the default libraries. cfsndserv will now get properly linked with dmalloc. configure.in, configure: add --disable-sound option, and make relevant changes to use that option (which basically amounts to not checking for any of the sound systems). Add check for dmalloc.h. change substitution for -ldmalloc. cfsndserv.c: Modified so it now compiles with the modern ALSA sound system. No idea if it actually works. MSW 2001/03/04 metaserver.c: Modified so it uses the value of -port if that command line option is given by a user. MSW 2001/03/01 x11.c: Fixes for info window resizing. This should fix some crashes and the code is a bit simpler now. MSW 2001/02/28 Makefile.in: Modify so that it installs the target (cfclient, gcfclient, cfsndserv) one at a time so it works with the install script. item.c: add insert_item_before_item function. Modify the sorting function so it first sorts by type, then by locked/unlocked status, and then by alphabetical order (not including the number prefix). item_types, item_types.h: More updates of missing objects or ones that need more specific matching rules. x11.c: Remove a lot of duplicate code that was in place for metaserver support - instead, just add checks to the existing X event handling code to know not to do some things if we're in metaserver selection mode. This fixes a bug in that resize events would not be handled if in metaserver selection mode. MSW 2001/02/22 ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ Changes for 0.97.0: MSW 2001/03/18: common/init.c: add RESET_LOCATION_TIME initializer to settings structure. include/config.h: Add RESET_LOCATION_TIME value. If nonzero and the save was longer than the specified time in seconds, player will be returned home upon login from save. include/global.h: Add reset_loc_time field to settings structure. server/login.c: Remove some unused variables, add support to return player home as described above. server/spell_effect.c: Fix for crashes when casting control undead and your god does not have an enemy. Now properly check to make sure we are not dereferencing null pointers. MSW 2001/03/16: Change code so that if player dies and loading the players savebed map does not work, return player to EMERGENCY_MAPPATH instead. New function added to server/main.c called enter_player_savebed which does the work, Files changed: include/sproto.h server/main.c server/player.c server/spell_effect.c (comment added) Unrelated change: Remove messages about multiple resist types set. Files changed: common/loader.l common/loader.c MSW 2001/03/15: server/spell_effect.c: Add physical attacktype when casting holy possession. Otherwise, characters who use karate end up not being able to damaage anything. MSW 2001/03/09: crossedit/App.c: Move the loading of images to later in the editor startup state. In this way, the client can allocate the colors it needs for its windows before the the png images use up all the colors. crossedit/png.c: New png loader implementation. New version is much faster (50 times faster). As part of this, only 8 bit displays, a private colormap will be allocated, and after that gets filled up, a color mapping routine will be used - this makes the png images loadable on an 8 bit system in addition to the speedup. crossedit/xutil.c: Adding timing information for loading of images. call init_pngx_loader before starting to load png images. Pass colormap to png_to_xpixmap by pointer and not value so that the loader can change the colormap. AV 2001/03/09: common/button.c: Added new attribute to altar triggers: "last_sp 1". If set, the altar trigger will push the connected value only by dropping the sacrifice, NOT by altar reset. If unset ("last_sp 0") it will work like it used to (push by sacrifice and by reset). MSW 2001/03/06: server/spell_effect.c: Fix message when consecration fails - use the ob->name field and not the ob->title field. Also fix broken logic that checked for the floor. server/init.c: Related to 3-4 change which changed the default name of the logfile to "" so we know to use stderr. This doesn't work for daemon mode, so if the name is "", we use the default logfile instead. MSW 2001/03/04: TODO: add re-connecting player to new client if client logs in with right name/password. common/init.c: Open up the logfile with the provide filename when given the -log option. server/init.c: Make set_logfile a first pass option so the init_library has the right logfile name to work with. server/main.c: Fix crash if map has an exit path yet that file does not exist. Give proper error message. MSW 2001/03/01: server/main.c: Modified random_map code so the server will not crash if the exit object has no message (and thus variables to set for the random map). Modified so that golems move away from player when player changes map. Values were reversed before, causing the golem to move towards the player. MSW 2001/02/25: General player login cleanup. This should fix the crash when players re-roll stats too often. So far, it also seems to have the additional effect that calculated players on map now appears to be correct. common/player.c: No longer allocate the player object structure in get_player_ob (function is really misnamed). Callers to this function were not using the allocated function. server/login.c: Add leave_map call when player is loaded. server/main.c: Add leave_map function. server/player.c: Move get_player function to start of file - can declare it static that way. Move some initialize from add_player to get_player. Add set_first_map function. Add appropriate calls to leave_map and set_first_map when players join and leaves the game. MSW 2001/02/22: TODO: Add some items, remove some others, remove outline of future versions, since it was out of date. common/loader.l,loader.c: Declare msgbuf a static outside the lex_load function. lex_load was otherwise clearing it each time it was called, which resulted in empty messages for the random artifacts (since the call lex_load one line at a time). Instead, we just zero this at start of load_object. Original reason of this change was due to purify errors - as I look at the code, it appears even before these changes that it was clearing the buffer properly. common/map.c: removing pending field from map objects. common/re-cmp.c: Comment out some code which was resulting in too many false compares. include/config.h: increase default for MAX_OBJECTS. 6000 is a bit small on current systems. include/map.h: Remove pending field from map structure. random_maps/treasure.c: Increase size of doorlist. Fixes crash, in that if a random map could place 8 doors around the treasure, the list was not terminated, so the problem would eventually try to read/dereference random memory after the array. server/c_misc.c: Remove pending field from maps, so remove functions and other places that referred to it (like the maps command) server/c_wiz.c: fix up wiz map reset command. Not really tested, but old code had some definate problems just from visual inspection. server/main.c: Further fix for unique exits - relative paths to unique maps from non unique maps should now work. server/monster.c: Various fixes - one is that should get more reliable distance values for multipart monsters. Second, modify dist_att to calculate from closest part of monster, and not the head of the monster. server/pets.c: Remove code dealing with pending objects. server/player.c: Don't remove invisible objects in players inventory when playing with permadeath mode. server/spell_util.c: If you try to cast denied spell, it no longer costs any spellpoints. socket/item.c: Fix bug where it was using 'item' protocol command instead of 'item1' End of MSW 2001/02/22 checkin. ------------------------------------------------------------------------------