Crossfire 0.95.3 has been released. There are a lot of bug fixes as well as some improvements/new features. The complete changelog is at the end of thie file. Files released for this version: sums (bsd) filename 37775 672 crossfire-0.95.3.arch.tar.bz2 07542 877 crossfire-0.95.3.arch.tar.gz 44326 2207 crossfire-0.95.3.maps.tar.bz2 32852 3180 crossfire-0.95.3.maps.tar.gz 28056 1670 crossfire-0.95.3.tar.bz2 65388 1964 crossfire-0.95.3.tar.gz 16057 216 crossfire-client-0.95.3.tar.gz Sums (md5) bc04f058d1a315661bc7300ea3504e2a crossfire-0.95.3.arch.tar.bz2 6515f6632eac44bf5981acb395cd9c0d crossfire-0.95.3.arch.tar.gz e0f8fe271cfc42788fecd935340361d5 crossfire-0.95.3.maps.tar.bz2 b264c8d0965c39e1a5a3b4af5d975fa6 crossfire-0.95.3.maps.tar.gz 8d224393297894076112742716e26579 crossfire-0.95.3.tar.bz2 8865086f7d545c20a50f89abc99bd952 crossfire-0.95.3.tar.gz f27802cfcb20e2d3cbdef84aa8bd43b6 crossfire-client-0.95.3.tar.gz crossfire-client-0.95.3.tgz is the client distribution. Many bugfixes, no major improvements. There is no sound file release for this version of the client - the sound files are unchanged fro version 0.95.2. crossfire-0.95.3.tar.{gz/bz2} contains the server code with prebuilt archetype and image files. crossfire-0.95.3.arch.{gz/bz2} contains the unpacked archetype changes. The only changes here were to fix the missing animations for some of the gods. crossfire-0.95.3-maps.tgz contains the maps. Some minor fixes made for maps using now removed archetypes and incorrect exits. New dtabb and navar city maps by John Cater. 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, you need the client and perhaps some version of the doc file. Crossfire is avaible on the following ftp sites Primary: ftp://pyrsonal.pyrsonal.org:/crossfire (129.214.1.225) ftp://ftp.ifi.uio.no:/pub/crossfire (129.240.64.44) *** NOTE *** primary server has changed to pyrsonal, and this will likely be the primary for quite a while to come. 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/ I uploaded this version to just //pyrsonal.pyrsonal.org - it should be on the other ftp sites in a short time. Mark Wedel mark@pyramid.com 03/28/1999 Server Changes: Move socket related code out of server directory and into socket directory and re-arrange cod so that what is in what file makes more sense. Code from Peter Mardahl to have death result in stat depletion and not actual stat loss. Setable by via STAT_LOSS_ON_DEATH option in config.h or -stat_loss_on_death/+stat_loss_on_death command line options. Patch by Peter Mardahl to change immunity spells from PATH_PROT to PATH_NULL - this will stop gods from giving out these spells. Patch by Peter Mardahl so that players will never fumble the reading of scrolls. You only get half as much exp for reading the scrolls now however. Update the README file - the list of public servers was grossly out of date and mostly removed. The instructions for running/playing were out of date, containing information for servers with the old X11 code. Change CAN_MERGE so that identified items with different been_applied will merge (this is currently done by just setting the been_applied flags for the object in CAN_MERGE if they have been identified) Temporary fix for disease code - I was seeing endless loops in weight contributions because an disease object op->env points back at itself. In do_symptoms, we check to see if the victim matches the disease we are about to infect them with, and if so, don't proceed further. The cause of this pointer recursion needs to be found instead of this current fix. Change daemon.c so that hpux systems can also use ioctl (.., TIOCTTY, ..) call in addition to SYSV systems. players and logs command added. players show all current player names currently in use, logs show sockets that are currently listening for kill log information. Add limited support for some commands from the socket (hiscore, logs, maps, motd, players, version, who). After socket has been authenticated to have valid server, shout and tell also available. To switch socket into old style mode, first command entered should be 'oldsocketmode'. Server code then knows not to prepend packet length information, so most functions work on this new socket without any changes. Add verify_player function to login.c (takes name and password and verifies they are ok - used for old socket emulation). Also notify all players when a player joins the game (this must have gotten removed at some point). change prototype for cs_write_string to take a constant string. In readpacket, have it read in 100 bytes even if length information looks incorrect (allows easier initial switching to oldsocketmode). If the length of the input buffer is for some reason negative, call abort. Clean up nconns in socket.c - it was being increased 2 times when a socket was added, and decreased by 2 when a socket was removed. Add newline to initial version command so people telneting in for old socket compatibilty get something a little more presentable. command char pointer added to newsocket structure - used for player name or listener html address. Fix in memory overrun/corruption when freeing the last allocated socket - it would write data beyond the allocated data. if new_draw_info is called to notify everyone, also notify sockets running in old mode if it isn't a kill log listener. Update commands.h file so that it won't declare various values if included multiple times - only the first time it is included will it declare the values. Add extern declaration for init_sockets to global.h since other functions now need to access them. Who command extended to also show active socket connections without a player attached. Kill log (watchable from socket) added. Add support to use old socket commands on the new port. Fix by Seikoh Nishita for weapons that slay multiple creatures - before fix, they would not slay anything (args to strstr were reversed) Don't give out exp for orating to monsters owned by another player - fixes abuse since 2 players could quickly orate back and forth and gets lots of exp. The orate function was also cleaned up a bit to be more efficient (presumption is made that there is only 1 monster on any one space, so once we find one, there is no need to do further processing) If door is passable, print a message to the player if he tries to pick the lock and don't let them pick it (examples here are the doors which you can walk through) Fix by Seikoh Nishita that should prevent some crashes when exiting shops - appears that there could be circumstances when i was trying to referance a null pointer in an error message. Add popen_local for sgi systems - without this, sgi can only open one compressed map before it fails to open further compressed maps. Fix by Timo Kokkonen so that resurrection works with the new player save method. This should also fix the problem that dead players when using PERMADEATH being able to log in after dying. Allow FORCE objects to increase digestion/hp/sp/grace regeneration. Remove style.h file, since we now have an automatically generated proto file from random directory source. Also fix in makefine to use proper ar when creating the archive. Add 'race *' to maps/styles/misc/fountains - this fixes a crash when entering random maps. If use presses an incorrect key at the play again prompt, reprint the play again question. Change find_free_spot to return -1 if no spot available, update calls so check for this return value instead of 0 (value = means current spot available) Change pet movement so that pets should no longer jump walls. Update configure, makefiles, and code to use proper locations of installed files (no longer $prefix/lib, instead $prefix/share for read only, and $prefix/var for read/write. When using a special key to open the door, print a message informing the player what key was used to open the door. Minor map cleanups/changes. Some improper exits changed to point the right place, extraneous style maps removed due to new gods, other maps updated to replace now missing altars with their replacements. Change gate code logic so instead of using speed to determine if the object can move itself, we instead check the ALIVE flag (this fixes problems for animated objects, and is a more accurate method in any case.) Fix by S.Nishita so that containers on the ground get properly unapplied when player moves off them. Fix by S.Yoshioka's so that damage for cone spells is calculated properly as they propogate. Remove server side referances to INFOLINES and INFOCHARS, since that is now controlled by the client. Code cleanup to random map generator to prevent compiler warnings. Also, change comparision of val == 0x1 to val-1 = null, since the later is more portable. added some missing newlines to log messages in the newsocket.c file. fix pickup modes some - mode 4 appeared to work ok (pickup all), but mode 5 wasn't working right (pickup all and stop). I have tested the modes with the X11 client, and they all appear to work properly. House of Healing map (with link from starting city) added by Peter Mardahl. Change player move code so you will no longer swap spaces with a pet monster/other friendly object is you are braced. Fix off by one error in the buffering socket buffering code - this would cause buffer overflows if the data being added equaled exactly the buffer size+1. Similar fix when reading in packets Increase NROFATTACKS to 24 in define.h so the AT_INTERNAL attacktype work properly. Patch by S.Yoshioka so that godpower/holyword spells are not magical. Fix in attack.c by S.Yoshioka to call free_object instead of free for splitting monsters. Fix by S.Yoshioka so that magic bullet or other pure magic spells do damage to other parts of multisquare monsters. Fix by S.Yoshioka so that you can not get exp in other skills with cone spells. Fix by Seikoh Nishita so that magic walsl can not be placed on top of other walls/monsters. Fix by Seikoh Nishita so that we don't clear the NO_STEAL flag on insert_ob_in_map - this makes singing/stealting from the same monster Fix off by one error in the buffering socket buffering code - this would cause buffer overflows if the data being added equaled exactly the buffer size+1. Similar fix when reading in packets Increase NROFATTACKS to 24 in define.h so the AT_INTERNAL attacktype work properly. Patch by S.Yoshioka so that godpower/holyword spells are not magical. Fix in attack.c by S.Yoshioka to call free_object instead of free for splitting monsters. Fix by S.Yoshioka so that magic bullet or other pure magic spells do damage to other parts of multisquare monsters. Fix by S.Yoshioka so that you can not get exp in other skills with cone spells. Fix by Seikoh Nishita so that magic walsl can not be placed on top of other walls/monsters. Fix by Seikoh Nishita so that we don't clear the NO_STEAL flag on insert_ob_in_map - this makes singing/stealting from the same monster multiple times impossible. Patch by Seikoh Nishita so that boulders will roll off gates. Have server send updated weight of container when dropping all items from a container. New random map decore styles for new religions added. Patches from James Cameron to fix compile errors/warnings. Fix missing animations for some of the gods. Remove *.orig files from maps/picks directory. Maps updated wtih dtabb 2.60, navar_city 2.40 maps from John Cater. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Client changes: Don't link in -lnsl -lsocket on sgi systems. Don't link in -lnsl on linux systems. This list probably needs to be expanded. Gracefully handle failures of the sound daemon for whatever reason (most likely because there is no good sound support). Client should now detect write errors and just stop trying to write stuff to the sound daemon. Improve logic in cfsndserv when adding to the buffers. Prior, it would actually skip over buffers, and logic on determine the amount of data was faulty if a short sound was played after a long song. Fix in cfsndserv.c so that it will read the device entry in the ~.crossfire/sndconfig properly. Include sys/select.h if we have it in cfsndserv.c. Some systems appear to need to for proper compilation of that file. Also, #ifdef for checks already done to determine if we should include some includes or not. Status line should now show hp/sp/gr successfully when player has totals greater than 100 in those stats (From Timo Kokkonen) Option to have system beep when low on food - setable via foodbeep command. (From Timo Kokkonen) Better logic to prevent 'You can not issue commands - state is not ST_PLAYING' warning from Timo Kokkonen) Various non functional changes that should prevent warnings during compile (From Timo Kokkonen) Have client create the ~/.crossfire directory if needed prior to saving keys. Change client help command so it will not display client side help information if the user is requesting help on a specific command. Ability to specify location of sound files at the configure state with --with-sound-dir=/some/path Support for SGI sound system added by Paul Mikell, configure detection for sgi sound by Pertti Karppinen (both untested by me since I don't have an sgi handy) ------------------------------------------------------------------------------