Jump to Main Content

Crossfire 1.3.0 Announcement

Crossfire 1.3.0 has been released.  There are numerous bug fixes in this,
as well as improved item handling code (better item sorting with
new client, as well as proper naming of plural objects).

Files released for this version:

sums (bsd)  filename
17699  1332 crossfire-1.3.0-arch.tar.bz2
52744  1427 crossfire-1.3.0-arch.tar.gz
56236  2869 crossfire-1.3.0-maps.tar.bz2
58818  4186 crossfire-1.3.0-maps.tar.gz
37910   996 crossfire-1.3.0.doc.tar.gz
50029  2861 crossfire-1.3.0.tar.bz2
64559  3191 crossfire-1.3.0.tar.gz
61233   380 crossfire-client-1.3.0.tar.gz
27814  1276 crossfire-client-images-1.3.0.tar.gz

Sums (md5)
bb53582498faafc9a2ced8f6af6d861b  crossfire-1.3.0-arch.tar.bz2
579072ebf6aa99536e7fdfcd435976a4  crossfire-1.3.0-arch.tar.gz
5308e236b390eb011c8f28bccb52df56  crossfire-1.3.0-maps.tar.bz2
632420953861ca96fc56d437a28da36a  crossfire-1.3.0-maps.tar.gz
a682581581b95989ed9f93bc15161e7d  crossfire-1.3.0.doc.tar.gz
5a1702e1605bd032510ee3aabba87880  crossfire-1.3.0.tar.bz2
d1b4a00121b2a42d56c63c43a1c41de2  crossfire-1.3.0.tar.gz
fc4c91bcd66c53e8da8ef13ab9554b04  crossfire-client-1.3.0.tar.gz
d0115d1e429116a42080b48ea8cdfae3  crossfire-client-images-1.3.0.tar.gz

crossfire-client-1.3.0 is the client (X11) distribution - standard
X11 and gtk interfaces are provided.  Improved object handling
is now supported, and extension for future map handling has been

crossfire-client-images.1.3.0.tar.gz is a prebuilt image file for
the client - downloading this file will reduce the amount of download
that needs to happen during play if the -cache option is used.  This
file should be untarred in the ${prefix}/share/crossfire-client
directory, where ${prefix} is the --prefix option given when configure
is run.  The default path is /usr/local/share/crossfire-client/.

crossfire-1.3.0.tar.{gz/bz2} contains the server code with prebuilt
archetype and image files.

crossfire-1.3.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

crossfire-1.3.0-maps.tar.{gz/bz2} contains the maps.  This is needed
with the server distribution.

crossfire-1.3.0.doc.tar.gz contains preformatted documentation.  In this, you
get the postscript spoiler and handbook, but you also get the html versions of
both of those files with all the needed graphics - this is the only archive
that has all the graphics pre-made.

FOR FIRST TIME USERS:  You will only need the appropriate server, map
and client file.  You do not need the arch file.  You may wish to get a copy
of the doc file.

If you just want to play the game at some remote server, you need the client
and perhaps the image archive file.

Crossfire is avaible on the following ftp sites




The initial upload of this release is only made to sourceforge - it should
show up on the mirrors shortly.

Mark Wedel

Complete changelog:

socket/request.c: If players were using the original map command with
   an even map size, server would try to send too much data to client -
   checking in server would result in an abort.  Modify code to now properly
   send right number of spaces.
lib/Makefile.in: remove extraneous / in front of motd entry in file list.
include/version.h: Update for version 1.3.0
Makefile.in: Update for version 1.3.0
lib/archetypes: rebuilt.
MSW 2002-07-01

doc updates: Rebuild the doc files, but most of this is fixing some of the
doc build stuff to correctly working with the new image set naming
scheme and fixing some bugs.  Some doc is certainly out of date - the
playbook doesn't mention the classes for example.
doc/handbook.ps, doc/spoiler.ps: rebuilt
Note: all the doc/playbook changes also apply to the same files in
doc/playbook/Makefile.in, doc/playbook/makeps, doc/playbook/makeps.pl:
    replace the awk makeps script with the perl one.
doc/playbook/items-extract: Don't show invisible items.
doc/playbook/levels-extract: Update so that it properly finds the declaration
    of the levels in living.c
doc/playbook/treas1-extract: Clear type when we get a new Object header.  was
    resulting in duplicate entries for the characters.
doc/playbook/treas2-extract: Don't include forces of the no_class_face_change
    as part of characters treasures
doc/playbook-html/chap1.html: Update ftp site information.
doc/spoiler/Makefile.in, doc/spoiler/makeps.pl, doc/spoiler/makeps:
      replace the awk makeps script with the perl one.
doc/spoiler/items-extract: Add a space after the name match so that it won't
    match on the name_pl field.
doc/spoiler-html/items-extract:  Add a space after the name match so that it won't
    match on the name_pl field.
doc/spoiler-html/makeps.pl: Update to handle new naming scheme for images.
doc/spoiler-html/spoiler.html: rebuilt.
lib/Makefile.in: Fix error in variable not being surrounded by parens.
MSW 2002-06-30

server/rune.c: Fix bug that allowed players to use marking runes to create
   arbitrary objects by embedding a endmsg in the string.
MSW 2002-06-26

lib/ban_file: Update comments to describe how it actually works.
server/commands.c: Add some time cost to shout, say, and tell commands.  This
    prevents abusive players from issuing huge number of these commands.

MSW 2002-06-20

doc/playbook-html/Makefile.in: Remove some superfluous blank lines
    in the file.
configure, configure.in, plugin/Makefile.in: Modify configure script to
    subtitute PLUGIN_TARGET, have plugin/Makefile not build/install
    plugin if necessary support libraries are not in place.
common/item.c, include/material.h: Move the declaration/initialization
   of materialtype from material.h to item.c
server/main.c: Modify crypt_string so that on Freebsd systems, it will
   use des_crypt if available, if not, won't encrypt.
MSW 2002-06-18

TODO: Additional updates.
Add support for loading the EMERGENCY_.. locations from a .emergency file in
the map directory.  This makes it easy to switch map distributions without the
need to recompile.  The emergency information is now stored in the settings
common/init.c: add EMERGENCY_  defines to default values in setting.  Add
   init_emergency_mappath which loads the information.
include/config.h: Remove NEW_WORLD_MAP definition, as it is no longer
   needed.  Update some of the EMERGENCY_.. information as we don't need
   to include the information for the new world map.
include/global.h: Add emergency_.. fields to settings structure.
server/login.c, server/main.c, server/player.c: Update references from
   the EMERGENCY.. values to settings.emergency values.
MSW 2002-06-15

lib/Makefile.in: modified so that it doesn't overwrite commonly customized
    files (eg, motd, dm_file, ban_file).  These files will get installed
    on new installations.
MSW 2002-06-14

common/item.c: break out monster description into describe_monster
    function from describe_item - the later was a really long function.
    Reveal weapon speed for identified weapons, spell point regen
    penalty and max speed for identified armor - this was discussed about
    6 weeks ago.  Clean up the code to reduce the number of redundant
    if statements and otherwise confusing code in describe_item.
MSW 2002-06-14

configure.in, configure, plugin/Makefile, plugin/Makefile.in,
    plugin/Makefile.old:  Modify the plugin module to gets its needed
    information from configure.  configure.in modified to look for Python.h and
    to find the python library.  plugin/Makefile.in is a new file.
    plugin/Makefile.old is the old plugin/Makefile (removed) - may be useful
    for sites where configure does not work for some reason.  The use of
    --with-includes=-I/usr/include/python2.2 (or the like) will likely be
    needed for configure to find the Python.h file.  Note - if you
    are doing a CVS update, you will need to re-run configure with the
    appropriate options for this change to take effect.
MSW 2002-06-13

server/main.c:  If on freebsd system, don't crypt the password.
Crypt on freebsd behaves diferently, and since there is little reason
to encrypt passwords, easier to just leave them decrypted.
Fix for sourceforge bug 469017
MSW 2002-06-13

More minor changes, including a fix for the disappearing object bug -
this was caused by the flag_links not getting updated the last
time new flags were added.  Problem probably only showed up now
because loader.c wasn't rebuilt until recent changes.
common/loader.c, common/loader.l: add extern to arch_init, when
   loading and get an object from a file, complain and ignore it if
   arch_init is not set (only time we should get object (vs arch) for
   names is when we load the archetypes file).  Add missing entries
   to flag_links array.
common/treasure.c: Fix code so that proper plural names are generated
   for custom items (potions, flesh items, etc).
include/define.h: Add note about updating flag_links when NUM_FLAGS is
server/skills.c: don't let players steal from players with FLAG_WIZ set.
MSW 2002-06-09

Mostly bugfixes.  I'm not sure if this will fix the disappearing arch problem-
none of the changes made in the original multiple name would seem to
cause it, so hard to say if any of these changes may fix it.
common/arch.c:  Change get_archetype_by_name to be more efficient and
    not leak memory.  Modify code that frees all archetype data to free
    the name_pl information.  Make sure the clone.name_pl is set to
    NULL.  When singularites are created, set the name_pl for them.
common/loader.l, common/loader.c: Modify code that fixes up name_pl
    to be more correct when it fixes up name_pl for old objects.
common/map.c: Modify load_map_header so that tile_paths will be normalized -
    need for editor to be able to load maps that have a multipart object
    that spans the maps.
crossedit/Edit.c: Modify some calls of out_of_map to OUT_OF_REAL_MAP, since
    tiling code really isn't fully in place for the editor.  Modify
    EditPerformFill so that it actually works and doesn't crash the editor.
include/global.h: Move FREE_AND_COPY macro from loader.l to here so that
    all source code files can use it.
lib/adm/map_info: Modify to actually be able to examine just a sub
    portion of the map directories, and not all of them.  Don't always
    show the unused objects - information isn't very interesting if only
    a portion is being examined.  Modify the exit examining code to properly
    deal with random maps (if there is a finalmap component, make sure
    that does exist.)  Loade the bmaps file and not the faces file to
    find valid faces.
plugin/plugin_python.c: Add missing %s that described what script
    was actually loaded.
random_maps/special.c, server/alchemy.c, server/c_misc.c, server/gods.c,
    server/login.c, server/player.c, server/spell_effect.c: Set up proper
     name_pl value for code that changes the name of objects.
server/apply.c: Use FREE_AND_COPY to set up names.  Set up proper
    name_pl values for cases that change name.  In apply_lighter, call fix_player
    if player is lighting an object in his inventory - necessary for the
    players glow_radius to get updated so the change actually takes effect.
socket/request.c: Modify esrv_map_scroll so that it properly clears cells
    that are moving out of view - failure to do this was resulting in the
    map1a updating these spaces with empty faces.  This was causing
    fog of war wackiness with the client.
MSW 2002-06-06

common/button.c: Fix mood floor code - before, it was changing the moods
    of all sorts of objects (luggage, itself, etc).  Now, it only
    changes objects above the floor, and only monsters.
MSW 2002-05-31

Main change is the addition of name_pl and client_type to object
structure.  The name_pl contains the proper plural name instance - fixes
problem of '2 tooths'.  client_type is sent to the client so that client
doesn't need to figure out sorting on its own.  Client_type is an object
attribute, so can be modified in maps to hide the real type.
common/arch.c: item_matched_string() modified to use the name_pl field
    when trying to match names, and not to try to make the name plural
common/item.c: query_short_name(),query_base_name() modified to
     use name_pl instead of trying to make the name plural.
common/loader.c, common/loader.l:  Add code to load and save the name_pl
     value and client_type.  Add logic when object is finished loading
     to set name_pl value to same as name or arch name if no name_pl
     is specified - this supports old maps/characters in which the objects
     dont have a name_pl field yet.  Disable logic for need_an and need_ie
     flags since they are no longer needed.  Fix bug that caused
     elevation not to get saved.
common/object.c: Add client_type check for CAN_MERGE function.  Add
     appropriate logice in functions to handle setting, clearing, and
     copying of name_pl values.  Remove unused anim_... fields
doc/Developers/objects: Add information about the name_pl field and
doc/Developers/protocol: Remove item protocol command info - it has
     been obsoleted.  Add information about item2 protocol command.
include/define.h:  Remote ST1_* values - they were not being used.
     comment out FLAG_AN and FLAG_NEED_IE values.
include/newserver.h: Add itemcmd to socket structure - this is the
     version of the item protocol command that will be sent to the client.
include/object.h: Add name_pl and client_type field to object structure.
     Remove unused anim_* values.
lib/archetypes: rebuilt with new archetypes that contain client_type
     and name_pl information.
lib/bmaps, lib/bmaps.paths, lib/crossfire.1, lib/crossfire.0, lib/faces:
server/monster.c: Remove anim_ references that were not being used.
socket/init.c: Initialize itemcmd version in the socket to 1.
socket/item.c: Remove special handling for clients of old versions - all
     clients now have to be at least sc_version 1024 (which has been around for
     a long time).  This simplifies a lot of the object code that deals with
     sending or not sending plural names to the client - now always send them.
     Change code that sends item to client to use the item revision (currently
     1 or 2) that the client wants.  If version 2, send along client_type
socket/request.c: Handle 'itemcmd' parameter in setup command.  Make
     sure it is in proper range.  If client is very old (sc_version < 1024)
     tell them so.
MSW 2002-05-30

crossedit/png.c, crossedit/xutil.c: Increase size of temporary buffers that
   are used when loading images - necessary to allow the editor to run without
include/newserver.h: Remove quick_pos from the MapCell structure.
server/main.c: Add code to set the coordinates to the EMERGENCY_X/Y
   values if using the EMERGENCY_MAP.
socket/request.c: Fix code that was causing darkness to get repeatedly
   sent for some spaces.
MSW 2002-05-19

The bulk of this commit is to modify the server to only send the lower
rightmost part of multipart archetypes that use the same head.  This allows
support of big images in the client.

common/arch.c: Modify first_arch_pass to figure out the tail_x/y values for
   multipart archs.  Rename the prev variable to head, as that it really what
   it is.  Remove quick_pos info.
common/object.c: remove quick_pos info from object.
doc/Developers/images: Add notes about using merged images.
doc/Developers/protocol: Add information about the map1a command, which
   is used to for big image support.  Remove map2 documentation.
include/map.h: Add MAP_LAYERS define instead of using hardcoded value of 3.
include/newserver.h:  Change the MapCell to use MAP_LAYERS - saves
   considerable memory.  Add defines for MAX_CLIENT_ map sizes.
   Remove map1cmd, map2cmd elements from socket structure - instead use enumeration
   of mapmode - only one map type will be used at any time by the client, so
   no reason to have individual elements - it also makes it easier to add new
   mapmode commands.
include/object.h: remove quick_pos, update_tag from object structure.
   Add tail_x, tail_y values to archetype structure.
include/player.h: Remove some now unused values from the player structure
   (drawn, floor, floor2, darkmask).  These have been superseded by the
    map cells in the socket structure for quite a while.
include/sockproto.h: rebuilt
server/player.c: Remove code that initialized the drawn values in the player
   structure since they no longer exist.
socket/init.c: Replace map1cmd, map2cmd elements in socket structure with
   mapmode element.  Modify init_ericserver so that it properly passes an
   int when setting the SO_REUSERADDR field.
socket/request.c: Modify code in SetUp function to use the new mapmode
   enumeration in the socket structure.  Add support for map1acmd setup
   option.  Throughout map code, replace MAXMAPCELLFACES with MAP_LAYERS.
   modify map_clearcell to take options for values to clear the cell to.
   Add have_head, check_head, and update_space commands - used with the
   map1 command to store and find head information.
   draw_client_map1 modified to support map1a extensions, as well as added
   logic for checking for heads in blocked and out of viewable map spaces.
   Some of the code is simplified by using the update_space function, since
   the logic for processing each layer was otherwise the same.  remove
   draw_client_map2 function.  esrv_map_scroll has same logic - some
   variables and code formatting changes.
MSW 2002-05-18

server/login.c, server/c_misc.c: Don't save characters with 0 experience.
This apparantly fixes some abuses.  MSW 2002-05-18

server/attack.c: Don't generate PLAYER_KILL_PLAYER messages if kill
happened on battleground.  Also, datestamp the messages.
MSW 2002-05-13

server/attack.c: Generate log message when a player kills another player -
include the ip address of the killer to make it easier to add them to
ban files. MSW 2002-05-06

Client changes:
Add support for the 'item2' command.  This lets us get the item type
from the server so that we don't need to figure it out for ourselves.
Also, remove support for the 'item' command - that has long since
been obseleted by the 'item1' command.
common/client.c: Remove 'item' from dispatch table, add 'item2'.
    Add 'itemcmd 2' as part of setup command we send to server.
common/commands.c: Add handling for response of 'itemcmd' setup command from
    server.  Remove ItemCmd() function.  Add type to calls to update_item().
    Change Item1Cmd() function to be called common_item_command() since both
    item1 and item2 use almost exactly the same logic.  Add Item1Cmd() and
    Item2Cmd() which just call common_item_command()
common/item.c: Init item types to 'NO_ITEM_TYPE'.  Remove get_nrof() as it was
    no longer being used.  Add type argument to set_item_values() and
    update_item().  Simplify code in case of name handling, since we know that
    we will be using at least the 'itemcmd'.  Don't worry about getting proper
    nrof for the player object - its nrof isn't really meaningful anyways.
common/item.h: Add #define NO_ITEM_TYPE.  Update type field in item
    to be 16 bits.
common/proto.h: rebuilt.
MSW 2002-05-30

The bulk of this checkin adds support in the client for the map1a protocol
command and the display of big images properly in the map window.  A lot
of code cleanup was also done however, including removal for the support
of the 'map' (original) command.  The map1 has been in the server code for
quite a while.

TODO: Update what needs to be done for the x11 client.
common/client.c: Remove map command, add map1a command to dispatch table.
   Modify setup we send to server to always try to use the map1a command -
   there is no reason not to use it.
common/client.h: Change some of the CONFIG_ values - basically, change it
   so that there is just one entry for lighting configuration, but it can
   have any number of values.  Modify MapCell so that instead of having
   multiple arrays for the different values (faces, sizes), add a MapCellLayer
   structure that contains the specific face information for that layer.
   Move the PlayerPosition struct and value to this function so that more
   of the map decompress logic can be handled in the common code.
   Remove count value from MapCell since it wasn't really being used.
common/commands.c: Add code to set the use_config[CONFIG_CACHE] value based on
   what we get back from the server.  Add code to check the setup response for
   the for the map1a and map1 options.  Add code to deal with expanding big
   images into appropriate spaces.  Move some functions from the gui portion to
   (display_map_clearcell, set_map_face).  Add code for map1_common function to
   deal with map1a extensions.
common/external.h: Remove display_map_clearcell and set_map_face from list of
   external functions.  Add get_map_image_size function.
common/init.c: change some values of the config values.  Update initialization
   of config values for lighting.
common/proto.h: rebuilt.
gtk/config.c:  Add new button for lighting - best per pixel. Modify code
   to properly deal with how lighting preference is now stored.  Add legacy
   support for loading of per_tile_lighting and per_pixel_lighting values
   from config file.  Add diagnostic of bad value if selected map/width
   is out of range.
gtk/gtkproto.h: rebuilt.
gtk/gx11.c: Change formatting of draw_list.  Modify it so that it adjusts
   the column/row width based on the largest image it needs to display - In
   this way, if a player stands on a big building, the entire building is
   displayed in the look list.  add row_height and column_width values so we
   only need to call the function to change them if they are in fact different.
   Add +sdl command line option to disable sdl code.  Modify gtk_draw_map to
   include redraw parameter.
gtk/gx11.h: remove PlayerPosition structure. add row_height, column_width
   elements to itemlist structure.
gtk/image.c: Add table that is used to determine the scaling used for big
   images in the look list - in this way, big images still appear big, but not
   necessary 2 or 3 times bigger.  Modify create_and_rescale_image_from_data to
   use this logic.  Add get_map_image_size which the common code uses to
   determine the number of spaces an image may be.
gtk/map.c: remove display_map_clearcell and set_map_face functions - now in
   common code.  Modify the dump map/darkness routines to use the new format of
   the MapCell structure.  Modify set_darkness to only set adjoining spaces for
   needing an update if lighting type is set that needs this.  Remove
   display_map_addbelow - only used for 'map' command.  Modify logic of
   fog of war code to have it done all at display time - not when setting/clearin
   a cells contents.  Modify gtk_draw_map - this basically follows the same
   logic of sdl_draw_map - it is now better optimized to only draw the spaces
   that have changed, and not the entire map - this should improve performance
gtk/sdl.c: Remove #if 0 around putpixel - used for best lighting.  Change
   indention of init_SDL - modify it so that if just_lightmap is true,
   that really is the only thing that is changed.  Modify per_pixel_light
   code to use both methods of per pixel lighting depending on player prefernce.
   Modify sdl_gen_map to properly handle draw portion of big images.
x11/png.c: Add get_map_image_size function.
x11/x11.c: modify display_mapcell_pixmap to use new format of MapCell
   structure.  Remove reference to count in MapCell structure.
x11/x11.h: Remove PlayerPosition information - now in common code.
x11/x11proto.h: rebuilt.
x11/xutil.c: Remove display_map_clearcell and set_map_face functions.  Modify du
mp map
   code for new MapCell structure layout.  Remove display_map_addbelow funtion.