Crossfire 0.95.8 has been released. This release is mainly done to get a snapshot before the partial resistance code gets done. It should be fairly stable, but may not be as stable as some previous releases, but there have been a lot of bugfixes. A list of changes will be enclosed at the end of this file. Probably the most notable change is the addition of a race & class system. NOTE TO MIRROR SITES: The primary site (ftp.scruz.net) has limited download bandwidth per day. If this poses a problem, you want a more reliable method, or you just want a backup method. please drop me a mail message - I have set up a secondary server off my ADSL link, but being that only has 128 kb upstream bandwidth and is also used for other interactive purposes, I don't want to make it available to all. Files released for this version: sums (bsd) filename 59174 1439 crossfire-0.95.8.arch.tar.bz2 64640 1735 crossfire-0.95.8.arch.tar.gz 01363 2525 crossfire-0.95.8.maps.tar.bz2 50665 3617 crossfire-0.95.8.maps.tar.gz 58891 2562 crossfire-0.95.8.tar.bz2 58127 2879 crossfire-0.95.8.tar.gz 25088 231 crossfire-client-0.95.8.tar.gz Sums (md5) 6c2ef4c81357d610229e1fe446000d65 crossfire-0.95.8.arch.tar.bz2 742a19b2d3333057b5d59c1ac3afc2c8 crossfire-0.95.8.arch.tar.gz 954bcfaaf7c7e8a54b9fc17f50ab06c1 crossfire-0.95.8.maps.tar.bz2 f47b8aaa3757056ba3cebca6a571d50e crossfire-0.95.8.maps.tar.gz 7c7714f1504b8d7b7055afe7da5c49ee crossfire-0.95.8.tar.bz2 3dbc96ff9d63bc36f0316a79e1ac448c crossfire-0.95.8.tar.gz 2123f9d30f999f6ef64183890cbf23d0 crossfire-client-0.95.8.tar.gz crossfire-client-0.95.8 is the client (X11) distribution - standard X11 and gtk interfaces are provided. crossfire-0.95.8.tar.{gz/bz2} contains the server code with prebuilt archetype and image files. crossfire-0.95.8.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.95.8-maps.tar.{gz/bz2} contains the maps. This is needed with the server distribution. No doc archive at this time - I don't believe anything in it should have changed much. 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. If you are looking for a windows/NT client, look at: ftp://ftp.ifi.uio.no:/pub/crossfire/incoming (129.240.64.44) for a file called cfcXXXX.zip (XXXX are numbers representing the version - get the latest) Crossfire is avaible on the following ftp sites Primary: ftp://ftp.scruz.net:/users/mwedel/public (165.227.192.254) 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 01/28/2000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Changes: Client: item.h: Update NAME_LEN to 128, as the server may send us names that long. Also, terminate the name after we copy it. Remove remaining font support for x11 client. Allow setting default display mode and server to connect to in the cconfig.h file. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Server: unique maps that are only in memory and not on disk. Remove unused variable from process events (unrelated change). PeterM 2000/11/18: New spells added: 1) Sanctuary (aura of counterwall) 2) Peace (make monsters unable to fight) 3) Spiderweb (create spider webs) 4) rage (heroism, armour, haste, regenration combined) 5) forked lightning (lightning which forks and strikes ) 6) flaming aura (aura of fire) 7) vitriol combined ball/cone/pool acid attack spell 8) vitriol splash (spell for internal use only) 9) ironwood skin (clerical version of armour spell) Not implemented: 10) poison fog MSW 2000/11/17: socket/metaserver.c: More changes - use fcntl to set O_NONBLOCK. Don't close socket if connect fails, since with sendto it is not required that the connect works. PeterM: 2000/11/17 define.h spells.h spellist.h spell_util.c spell_effect.c: windstorm spell implemented. attack.c: saving throw behavior modified. Items take a bit of DAM to destroy now instead of being destroyed with 1hp attacks. MSW: 2000/11/16: socket/metaserver.c: Add #ifdef MSG_DONTWAIT into metaserver.c for systems that lack that definition. random_maps/style.c: alphasort was not properly de-referencing pointers when doing name comparisons, and thus returned garbage results, resulting in a crash when entering random maps. This only happens for systems which lack scandir in normal libraries (like Solaris). BSDs and linux have scandir built in, and did not have a problem. server/disease.c: fix infect_object - server would crash if player did not have praying skill and was infecting someone else. end of changes, MSW 2000/11/16 PeterM : 2000/11/14 PeterM: Made some changes so that non-disease effects may be done without being labelled as a disease. Also, fixed a bug in which we'd kill something and then try to insert something in the killed thing's map. metaserver update: common/init.c: Add meta_ fields to settings structure initialization. include/global.h: Add meta_ fields to settings structure. include/sockproto.h: Updated for new meta_ functions. lib/Makefile.in: Have it install settings file. lib/settings: Default settings file with some metaserver default value.s server/init.c: Add load_settings file. Add call to metaserver_init. server/main.c: Add call to metaserver_update in do_specials. socket/Makefile.in: Add metaserver.c to list of files. socket/metaserver.c: File that deals with metaserver related data. socket/item.c: Remove some unused variables. Unrelated to metaserver changes. socket/loop.c: Add calls to metaserver_update in block_until_new)connection. Ch ange function so that if there are no active players, it still timeouts and does metaserver update. Basically changed to do it the way the WATCHDOG code did it. End of metaserver update. MSW 2000-11-13 server/player.c: removed unused tmp2 variable from move_player_attack. modify depletion in kill_player so the maximum depletion for a stat is -50. This should preven stat wrapping from -126 to 127. MSW 2000-11-08 MSW 2000-11-07 common/item.c: query_base_name was not return plural version of items with 'of' in name. Also, much of the function was not using safe_strcat, which could result in buffer overlow problems. common/object.c: Change update_position so that we always generate 3 images per space. This fixes players standing on top of dragon transports, but generally works for things like monsters standing on objects. insert_ob_in_map: change 'return' statement to 'return NULL'. Also remove unused map pointer. decrease_ob_nr: Fix bug for client updates when player drops item that is then consume. It was using op->above after object was removed to find the player. Store above pointer before we remove the object. socket/item.c: Don't terminate pointer as returned by query_base_name - instead, terminator buffer after we copy it. For simple object, query_base_name may directly return a pointer to the objects name which is only long enough to hold the name itself. socket/lowlevel.c: Abort if we are trying to send the client a packet longer than supported by the protocol. Since that buffer is static, overflowing it will just create memory corruption - easier to stop then than try and debug it later. End of MSW checkin 2000-11-7 PeterM: 2000-11-06 server/spell_util.c crash bug removed from move ball lightning: ball lightning mover improved in general. --PeterM -------------------------------------------- --- BEGIN stop_item() / attack fix patch --- Jan Echternach 2000-11-06 -------------------------------------------- Summary of this patch: Provide new stop_item() function for properly handling "moving" items on a map (flying arrows, thrown objects, active cones); obsoletes the workarounds. Fix some attack bugs (with possible server crashes) - many attackers attacked while being removed, even though much code could only handle the attacker being on the same map as the victim (not even the attacker being in the victim's inventory, e.g. poison). common/object.c: insert_ob_in_map(): Call check_walk_on() after update_object() because the latter needs to update some very important flags used by a lot of code before this code is called by check_walk_on(). common/object.c: get_split_ob(): Completed support for splitting removed objects. common/object.c: decrease_ob_nr(): Rewrote this function: Added support for removed objects. Removing an object completely didn't always update the environment's weight properly. Removing an amount of 0 from an object with nrof == 0 destroyed the object. Improved performance a bit (don't need to update the player's weight if an object below the player is modified). server/apply.c: move_apply(): Added recursion limit. server/apply.c: move_apply(): THROWN_OBJ and ARROW: Use new hit_with_arrow() function. server/apply.c: move_apply(): FBULLET and BULLET: Call check_fired_arch() only when the victim blocks the square (FLAG_NO_PASS or FLAG_ALIVE). server/attack.c: save_throw_object(): Use new stop_item() function before trying to modify an object. Added originator to all insert_ob_in_map() calls. server/attack.c: hit_map(): Added log message if the hitter is not on a map. Added was_destroyed() check after calling save_throw_object(). server/attack.c: get_attack_mode() and abort_attack(): New functions to determine the type of attack (simple or full attack). server/attack.c: attack_ob(): Now only attack_ob_simple() with default damage and weapon class values. server/attack.c: attack_ob_simple(): Contains most of old attack_ob(), but takes damage and weapon class as parameters, needed for hit_with_arrow(). Uses get_attack_mode() and abort_attack() to support new "simple" attack mode. server/attack.c: stick_arrow() and hit_with_arrow(): Moved those parts of old stop_arrow() and move_arrow() that dealt with attacking a victim over here. server/attack.c: hit_player(): Uses get_attack_mode() and abort_attack() to support new "simple" attack mode. server/attack.c: paralyze_player(): Use insert_ob_in_map_simple() instead of insert_ob_in_map() because the callers are not prepared for this function triggering any complex machinery, and insert_ob_in_map_simple() should be enough for plain visual effects. server/attack.c: thrown_item_effect(): Don't need to deal with thrown objects, hit_with_arrow() already does everything necessary. server/attack.c: adj_attackroll(): Added log message if hitter and victim are not on the same map. server/c_object.c: Fixed two typos in "can't pick up xxx" messages. server/c_object.c: pick_up_object(): Removed can_pick() check because pick_up() already checks this. Added support for picking up removed objects because the stop_item() in pick_up() can now call us with removed objects. Moved FLAG_STARTEQUIP check to pick_up(). Fixed weight limit lookup for monsters that have strength > MAX_STAT. server/c_object.c: pick_up(): Use new stop_item() function. server/player.c: fire_bow() and server/skills.c: do_throw(): Removed FLAG_NO_PICK workaround for flying objects. stop_item() now handles this correctly. server/rune.c: spring_trap(): Fix unlimited trap recursion. Since traps are triggered by move_apply(), the result of triggering a trap may trigger the trap again before it is deactivated. server/rune.c: spring_trap(): Runes that don't cast spells can only be triggered by living objects. server/spell_effect.c: move_cancellation(): Don't call hit_map() with a removed attacker. server/spell_util.c: cast_cone(): Only print warning message about cones that don't have FLAG_FLY/WALK_ON if the cone does any damage. server/spell_util.c: move_cone(): Removed workaround for cones in ice cubes. stop_item() now handles this correctly. server/spell_util.c: explode_object(): Rewrote this function: New interface - exploding object must not be removed when the function is called, it must have an other_arch (i.e. it must be able to explode), and it will be gone for sure when the function terminates. Removed some code with no effect. Don't call any attack functions with removed attackers. server/spell_util.c: check_fired_arch(): Rewrote this function. server/spell_util.c: move_fired_arch(): Rewrote most of this function: Don't attack with removed attackers. Call check_fired_arch() instead of duplicating its code. server/spell_util.c: move_ball_lightning(): Don't attack with removed attackers. Rewrote the movement algorithm to simplify this task. server/time.c: stop_item() and fix_stopped_item: New functions. server/time.c: fix_stopped_arrow(): Contains most of the old stop_arrow() function. Unlike stop_arrow(), it takes an arrow that is not removed. Removed FLACK_NO_PICK workaround. server/time.c: stop_arrow(): Stops arrows and thrown objects and puts them on the map. Sticking objects into targets is no longer handled by stop_arrow(), but by hit_with_arrow(). server/time.c: move_arrow(): Don't attack with removed attackers. socket/item.c: esrv_move_object(): Removed misleading comment. ------------------------------------------ --- END stop_item() / attack fix patch --- Jan Echternach 2000-11-06 ------------------------------------------ server/time.c: Add call to esrv_update_item to update the face for the client after the player chooses a class. MSW 11/3/2000 server/c_object.c, socket/item.c: Fixed for long item support. pick_up_object in c_object was overwriting a fixed length string, causing server crashes. item.c was not properly terminating plural version of object name, resulting in corrupt packets being sent to the client. MSW 11/2/2000 PeterM: ball lightning made stronger, strikes larger area, never hits player. divine shock spell added. include/sproto.h: Removed prototype of obsolete make_gravestone() function. server/apply.c: Put back gravestone_text() function that was removed accidently a while ago, needed by NOT_PERMADEATH. server/player.c: Don't use the dead player as the originator of object movements. Fixed string handling for NOT_PERMADEATH. - Jan Echternach 10/30/2000 Major race/class change by PeterM: BEGIN: ***************** apply.c: new function, apply changes to player. If the change is a CLASS, player receives certain attributes from the class. login.c: make sure people using the old race/class archetypes in their player files can still use them. player.c: 1) give_initial_items modified for greater flexibility: you can pass in a treasurelist. 2) Also, initial forces are applied to the player. 3) Comment added on the stat roll function. 4) Word of recall into the new class-choice map (unfortunately hard-wired.) for newly-rolled players. 5) gen_sp and gen_hp and gen_grace now allowed to go negative to slow down playe r regen. skill_util.c 1) Don't give out basic skills anymore. This interferes with the class code. spell_util.c 1) Praying failures moderated in frequency. 2) Summoned creatures enhanced in wc, speed, depending on casting level. 3) Word of recall allowed to work in no-magic areas if a flag is set. time.c 1) Move player changer function added. 2) Marker object expiration added. living.c: cleric fail chance array modified. map.c: bugfix for random map/recycle tmp map problem. define.h: defines added for playerchangers and class types base 10 numbers added for the spell paths. spellist.h: fixed up summoning spells a little sproto.h: new prototypes config.h: hate RECYCLE_TMP_MAPS, turned it off maps/HallOfSelection: new map for class choice. lib/treasures: classs/race stuff heavily modified lib/archetypes, animation, bmaps, bmaps.paths, crossfire.png faces crossfire.xbm New faces, etc. END race/class stuff 10/16/2000 apply.c: bugfix for random map/recycle tmp maps interaction. --PeterM 10/16/20 0 include/skill* server/skill_util.c: levitation skill added. 9/26/2000. --PeterM common/map.c server/apply.c: Fix an interaction between RECYCLE_TMP_MAPS and random maps which would cause crashing. peterm: 10/12/2000 disease.c spell_effect.c: peterm: 10/5/2000 1) Diseases moderated in power by ~1/2 and randomized. Now monsters can have a mild/moderate/serious/fatal case of a particular disease. 2) cause disease spells modified to NOT go through objects spells ordinarily couldn't go through.