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
added.
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
game.
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
Primary:
ftp://ftp.sourceforge.net/pub/sourceforge/crossfire (64.28.67.101)
Secondary:
ftp://ftp.real-time.com/pub/games/crossfire
ftp://ftp.cs.city.ac.uk/pub/games/crossfire/
ftp://ftp.cs.titech.ac.jp/pub/games/crossfire
ftp://mirror.aarnet.edu.au/games/roguelike/crossfire/
ftp://crossfire.futt.org//pub/crossfire
The initial upload of this release is only made to sourceforge - it should
show up on the mirrors shortly.
Mark Wedel
mwedel@sonic.net
Complete changelog:
server:
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-html.
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
structure.
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
increased.
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
itself.
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
initialization.
doc/Developers/objects: Add information about the name_pl field and
client_type.
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:
rebuilt.
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
information.
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
crashing.
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
g
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
considerably.
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.
MSW 2002-05-21