Crossfire 0.95.1 has been released. This version is mainly bugfixes - if you are running 0.95.0, you really should upgrade to 0.95.1. If you are running a 0.94.3 (last version to have X11 support in the server), the upgrade could be more in doubt. However, some major improvements in reliability have been made since 0.95.0, so if you were using that as a basis not to upgrade, it may no longer be quite as good a measurement. A 0.95.1 version of the client is also released. This could just as easily be a 0.94.5 release, since no big changes were made, but I think it makes things simpler to keep the versions in sync. No changes to the client/server protocol were made, so old clients should work with this latest server version, and this new client should also work OK with older servers. Enclosed at the end of this message is a more detailed copy of the change There are three new releases - maps, server, and client. The maps and server are also available in bzip2 format (client is small enough that making a seperate bz2 archive did not seem to make much sense.) sums (bsd) filename 23659 188 client-0.95.1.tgz 26118 2039 crossfire-0.95.1-maps.tar.bz2 56226 2958 crossfire-0.95.1-maps.tar.gz 23175 1612 crossfire-0.95.1.tar.bz2 10168 1882 crossfire-0.95.1.tar.gz Sums (md5) 9aa1ea3e196a4ec96bff80d7effc85f3 client-0.95.1.tgz 82c2cdb6092623fda97ae85dd8433c72 crossfire-0.95.1-maps.tar.bz2 5d5937c64687895fb0902e9ae6edc8f0 crossfire-0.95.1-maps.tar.gz 04c366b98adaddc072c4482737aa62b6 crossfire-0.95.1.tar.bz2 5450a1ce213c909e09a14cef0b544e51 crossfire-0.95.1.tar.gz client-0.95.1.tgz is the client distribution. crossfire-0.95.1.tar. contains the server code. There is no arch release for this version - the only changes to the arch is making "facings 4" in arch/player/pl_half_orc.arc" and "facings 2" in arch/player/quetzalcoatl.arc. crossfire-0.95.0-maps.tgz contains the maps. The main change is the upgrade of the pulplan maps. FOR FIRST TIME USERS: You will only need the appropriate server, map and client file. You do not need the arch file. If you just want to play the game at some remote server and have no interesting in compiling it, you may then want to get the doc file (you will need an older version). Crossfire is avaible on the following ftp sites Primary: ftp.pyramid.com:/pub/crossfire (129.214.1.30) ftp.ifi.uio.no:/pub/crossfire (129.240.64.44) Secondary: ftp.real-time.com/pub/games/crossfire (206.10.252.12) yoyo.cc.monash.edu.au:/pub/crossfire (130.194.9.1) ftp.cs.city.ac.uk:/pub/games/crossfire/ ftp.sunet.se:/pub/unix/games/crossfire (130.238.127.3) ftp.cs.titech.ac.jp:/pub/games/crossfire adams.humbug.org.au:/pub/crossfire (203.15.36.242) - Australian users only please. I uploaded this version to just ftp.pyramid.com - it should be on the other ftp sites in a short time. Mark Wedel mark@pyramid.com 11/29/1998 Server Changes: Changes from Crossfire 0.95.0 to 0.95.1: Fix server crash if player ran into friendly object. Strip extra spaces that may be between the command and option (ie, "use_skill disarm" would result in " disarm" getting passed to the appropriate command function. Some functions could deal with this, others did not, and it makes sense to strip them out. Send update to client to remove item from players inventory when it disintegrates (demon ichors for example). Chane load code so that player handling on unique maps should work better (I believe there were various strange cases if the player saved on a per player unique map and that map was or was not in memory, it might not load the per player unique map) Removed player file lockin during login. Extra lock files get left laying around in aborted login attempts. And in retrospect, I don't think it is ever really needed. Some excessive/annoying debugging messages removed. Some general cleanup in some functions that were previous setting automatic variables. If the variables are none changing, we now declare them static, otherwise we don't set the value as the initialization area - this prevents warnings with some compilers. Some casts added for some functions to also prevent warning messages. Remove HAVE_SAVE_UID in config.h - no longer any code using it. In free_player, only call remove_ob on pl->ob if it is not already removed. This fixes crashes when a player kills there login session before it is completed. Instead of calling draw_look (which causes all data on that space being sent to the client) each time the space changes, instead mark that we need to send that change, and have code higher up (top processing loop) send the data each tick if it needs to be send. This should result in less data being sent, and is easier to process. Add flag_client_sent for debugging purposes - makes it much easier to trace down cases where server was sending updates without actually having sent the object yet. Most all of those cases are fixed with the new draw_look logic mentioned above. Add dump_object_from_tag to figure help figure out the objects generating messages. dumptag command is available from within the game if compiled with DEBUG to use this fucntion. Pup land maps updated to version 1.3. Fixes in configure script to autodetect X11 libraries better. Fixes also in Makefiles so all rules should work and all needed variables should now be expanded. Add checks for a few more header files. Makefile fixes also include changes so that archive is packed in proper order that it should not try to rebuild pregenerated files. Master makefile now set to make bzip2 archives in addition to gzip archives. Added watchdog code from Christian Stieber - periodically sends out UDP packets so other programs can watch for them and restart the server if it doesn't see them (hung or down server). Added ISQRT macro to spell_effect.c - seemed that the code was changed a while back but that function wasn't added. It was only needed of SPELL_FAILURE_EFFECTS is compiled in as an option. Simplify checking of MAXNAMELEN in crossedite/include/Posix.h Updated list of options you get when you do -help - removed old options that are no longer around and added new ones. Dropping an active container will now result in all the items in the container being dropped, and not the container itself. It could be argued this should be a client issue (client send a move for each item in the container). However, dropping everything in the container should be faster than individually dropping (ie, you turn the container upside down), and client dropping them one by one would result in that many commands of the player being used. Change esrv_move_object to use the pick_up function instead of pick_up_object. The difference here is that pick_up will look for matching containers, so players manually picking stuff up in the client will have items go into active containers as appropriate. However, this can also cause problems with smarter clients that really want the object to go into the players inventory and not a container (I don't think any will have that problem currently) Fix in apply for holes - return 0 if we can not move the monster through the hole - this prevents an infinite loop in move_hole in time.c Added internal buffering for sockets if the OS's buffers fills up. This greatly improves reliability in the client. Size of buffering is setable in config.h Fixed makefile dependancies - make install should now depend on the actual programs it plans to install. Fix some bugs in the animation code - most notable is animations with just 2 facings like the quetcoutal. Changes to archetypes is to change the half orc to have 4 facings the quetzalcatl to have 2 facings. Fixed animations to always use the direction value for determing object animations. Change examine code so that if the first thing in an object message field is @match, don't display the message. Fix map update code that wasn't calling update_los before sending the map to the client. Fix from Timo Kokkonen for socket code - check to see if we got an interrupted system call (EINTR) on a read/write - if so, loop until it clears or we get a real error. Apparantly greatly improved reliability of the server. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Client changes: Changes for 0.95.1: Add 'depend' directive to makefile. remove 'includes.h' as a distributed file. -nosplit option added to x11 client. Useful if you don't want split modes but your default file is set for it. resizing of main window in non split mode for x11 client supported. The sub windows will try to be maintained in the same proportions. use autoconf to determine if we have sysconf instead of by system type. Check to see if the item has an environment before setting the inv_updated flag of that environment. This should fix some crashes. Add #ifdef of SOUND_DEBUG so we don't get verbose notifications in the sound code unless we want them. Clear item attributes after the item has been freed. When the items are first created, they are initialized to sane values, and many areas of the code expect that new item will be initialized properly. This change seems to fix the problem with item names being incorrect (ie, "two" and the like). Expanded item_types file to be more complete. GTK changes by David Sundqvist: 981127 Further GUI configuration (keybindings too, needs more work tho) XPM caching now implemented Color text in info window (warning: this may trigger a bug in pre 1.0.5 gtk, but you can turn it off in the GUI config :) ) Menu reorganizations and additions 981114 Split windows mode For those who want new fun layouts. (still has some problems with focus here) Color coded inventory Now you can see cursed and magic items in color coding. Smart dialogs It will actually try to figure out what options you have in dialogs. Fix for inventory count Now pressing 0-9 should update count. Configuration dialog GUI configuration for some options.