Crossfire 1.8.0 has been released. There are lots of more minor changes. List of more major changes: Start of quest tracking system Better support of readable objects. Addition of party spells. Improved smooth sending code for client. Map region support. Client 1.8.0 Changes: Many bugfixes. Advanced readable object support in client. Addition of pure GTKv2 client, including SDL and OpenGL drawing modes. Note this client should be fine for playing, but does not have all the features of the gtk client right now. Only the bigworld maps are up on sourceforge - this is the only mapset under active development - the old smallworld maps are still in CVS, and older versions still available for download. Files released for this version: sums (bsd) filename 51380 2278 crossfire-1.8.0.arch.tar.bz2 45117 2399 crossfire-1.8.0.arch.tar.gz 64618 15087 crossfire-1.8.0.maps.tar.bz2 07161 20760 crossfire-1.8.0.maps.tar.gz 27290 4744 crossfire-1.8.0.tar.gz 37379 649 crossfire-client-1.8.0.tar.gz Sums (md5) 31e5ce447102fe97627e1c2f6d5193ee crossfire-1.8.0-README 4cd3c314c6d286d44451fae13935aab2 crossfire-1.8.0.arch.tar.bz2 cc03753ba0435950bedbbff790e7afd2 crossfire-1.8.0.arch.tar.gz 62b3b62a3a519c976593a2a8102ab177 crossfire-1.8.0.maps.tar.bz2 54170887357ca96c66eb69d8c0ecc2f7 crossfire-1.8.0.maps.tar.gz f79cc73a3be416fd1c7a18ce76668a82 crossfire-1.8.0.tar.gz 3198bb5ad0e85ca7d8dcdd812bdf4c2f crossfire-client-1.8.0.tar.gz crossfire-1.8.0.tar.gz contains the server code with prebuilt archetype and image files. crossfire-client-1.8.0.tar.gz contains the client code - if you only want to play, this is the only piece you need. crossfire-1.8.0.arch.tar.gz contains the unpacked archetype changes. This is not needed if you only want to compile the server and play the game. Various fixes, as well as new archetypes. crossfire-1.8.0.maps.tar.gz contains the map distribution - this is the bigworld map. New maps have been added, as well as verious fixes. FOR FIRST TIME USERS: You will only need the appropriate server, the map file 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 (older image file is still good enough). Crossfire is avaible on the following ftp sites Primary: ftp://ftp.sourceforge.net/pub/sourceforge/crossfire Secondary: ftp://ftp.real-time.com/pub/games/crossfire The initial upload of this release is only made to sourceforge - it should show up on the mirrors shortly. Mark Wedel mwedel at sonic.net August 10, 2005 Complete changelog: server: Update for release 1.8.0. include/Makefile.am: missing quest.h file Rest automatic rebuild MSW 2005-08-10 Replaced "depletion" by ARCH_DEPLETION (defined in object.h). Affected files: common/living.c include/object.h server/apply.c gods.c spell_effect.c Ryo 2005-08-10 server/player.c: Set map for arrow as returned by get_map_flags - otherwise when firing at edge of tiled maps, arrows could end up in wrong place. MSW 2005-08-09 include/config.h: Make DEBUG default - appears last commit changed this as unrelated to actual changes in place. include/sproto.h: Rebuild server/player.c: fire_bow() - add checks for wall/out of map. fire_bow() wasn't using right coordinates on check, which caused problems in threewide mode at edge of maps. MSW 2005-08-07 plugin_logger/plugin_logger.c: make it compile under Win32. Ryo 2005-07-30 server/player.c: fix crash when news or rules > HUGE_BUF. Ryo 2005-07-29 server/{monster.c, pets.c}: Fix bugs in arena petmode and clean up most of it's logic into it's own function. lib/help/petmode: Document the arena petmode in the "help petmode" output. Alex Schultz 2005-07-28 server/skills.c: use correct sp/grace for inscription. Ryo 2005-07-27 The following changes prevent spells in player's inventories from being damaged by casting spells, using skills, or praying. server/attack.c: Limit cancellation and acid attacks to visible objects only. server/gods.c: Limit god granted remove curse/damnation to visible objects only. server/skills.c: Limit the skills sense curse and sense magic to visible objects only. server/spell_effect.c: Limit the spells detect curse and detect magic to visible objects only. Andreas Kirschbaum 2005-07-26 server/skill_util.c: don't try to send a message if monster killed/removed. Ryo 2005-07-23 socket/init.c: settings values to 0 before using'em works better, usually ^_- Ryo 2005-07-22 random_maps/random_map.h: Add prototype for set_random_map_variable(). server/main.c: Remove prototype for set_random_map_variable(). lib/Makefile.am, lib/Makefile.in, lib/help/whereabouts: Add help for whereabouts command. server/apply.c: Properly terminate destination string with '\0' in apply_item_transformer(). Avoid clearing the string buffer multiple times. Andreas Kirschbaum 2005-07-20 doc/Developers/item_transformation: fixed documentation. server/apply.c: remove incorrect comment. Item transformer uses food for max use . Replaced some hardcoded values with define. Modified files: common/arch.c include/object.h plugin/plugin_python.c server/apply.c attack.c build_map.c spell_attack.c spell_effect.c time.c Ryo 2005-07-19 include/win32.h: add PLUGIN_SUFFIX definition. Ryo 2005-07-18 server/plugins.c: Merge mostly identical code from #ifdef WIN32 and #else blocks. Use opendir/readdir/closedir instead scandir for Unix because WIN32 probably does not have these functions. Prevent loading one plugin multiple times. include/sproto.h: Update prototypes for plugin functions. server/c_wiz.c: Add success/failure messages to plugin and plugout commands. Do not crash due to missing parameter. Andreas Kirschbaum 2005-07-18 server/pets: Fix off-by-one error in follow_owner(). server/c_wiz: Allow the summon and teleport commands to place the summoned player/DM north-west of DM/player. Andreas Kirschbaum 2005-07-17 Use const char* instead of char* when possible. Remove unused variables in weath er code. Affected files: common/map.c region.c utils.c crossedit/stubs.c include/funcpoint.h libproto.h sproto.h random_maps/standalone.c server/weather.c Ryo 2005-07-17 server/apply.c: Make converters that increase value non-functional. Andreas Kirschbaum 2005-07-17 server/{monster.c, pets.c}: Fixed bug in previous commit of arena petmode that cause pets that should be friendly to eachother to fight. Alex Schultz 2005-07-16 common/{map.c, readable.c, treasure.c}, crossedit/{Attr.c, png.c, Cnv/{CnvFiles.c, CnvPath.c}}, plugin_animator/plugin_animator.c, plugin_logger/maps.c, server/{alchemy.c, c_misc.c, c_wiz.c, init.c, main.c, monster.c, pets.c, player.c, resurrection.c, rune.c, skills.c, spell_effect.c, time.c, weather.c}: Fix spelling errors in string constants. server/c_misc.c: Remove superfluous trailing '\0' from strings. Andreas Kirschbaum 2005-07-15 server/{c_misc.c, monster.c, pets.c}, include/player.h: Add new "arena" petmode which allows pets to attack players and other pets while in the arena. Alex Schultz 2005-07-16 *Makefile.in, aclocal.m4, configure: Rebuilt generated files. lib/Makefile.am: Update list of help files to install. server/skills.c: Do not reveal a hidden DM in attempt_jump(). server/skills.c: Do not reveal a hidden DM in steal(). server/player.c: Ignore hidden DM in stand_near_hostile(). Formerly it always returned false if a hidden DM was present. Andreas Kirschbaum 2005-07-15 server/c_object.c: Improved pickup. You can now do pickup +bow, or pickup -shiel d. Much simpler then fiddling with sums of 2^x values. Ryo 2005-07-15 server/c_party.c: Make party passwords with a length of 8 characters work again. lib/artifacts: Fix type of lockpicks of quality/high quality. Andreas Kirschbaum 2005-07-15 Those commits remove the dependency on the plugin towards the library. All funct ions used from the plugin are hooked, instead of being called directly. This fixes b ugs under Windows, and simplifies compilation. Also, many new callbacks were define d. Affected files: include/plugin.h plugproto.h sproto.h plugin/plugin_python.c server/plugins.c Note that at some point some functions could be moved out of plugin_python and p ut in plugin_general to be shared between different plugins. Ryo 2005-07-15 Those commits remove the whole "glue/callback" logic. Instead functions are just defined as external, and should be implemented (even as dummy) by all programs. Affected files: common/arch.c button.c glue.c init.c item.c living.c logger.c los.c map.c objec t.c time.c treasure.c crossedit/stubs.c: new file with dummy functions. crossedit/Makefile.[in|am]: add this new file. include/funcpoint.h libproto.h sproto.h random_maps/standalone.c: add dummy functions for those externals. server/init.c: remove obsolete setup_library() Added a wrapper function for check_trigger from plugins. include/plugin.h: new function server/plugins.c: wrapper for check_trigger. Ryo 2005-07-15 plugin/plugin_python.c: (add|free)_string should *not* be called directly under Win32. Therefore let's use the hooks. Also, when removing an object, better check it's not the current object (CFPython.RemoveObject(CFPython.WhoAmI()) anyone?). Ryo 2005-07-15 server/spell_util.c: use on_same_map instead of checking directly map pointers. Ryo 2005-07-15 Those changes implement a quest tracking system. Check the doc/quests document f or more info. common/quest.c: new file with a few quests-related functions. doc/Developers/mapguide: point to quests file for instructions on quests. doc/Developers/quests: new file with instructions on how to use quests, and implementation details. doc/Developers/README: added quests file. include/libproto.h: new functions in quest.c. include/quest.h: new file with a few defines for quests. include/sproto.h: new function command_quest, update talk_to_wall definition. lib/help/quests: new help file for quests command. server/c_misc: new command_quests function. server/commands.c: link command_quests to "quests". server/monster.c: update talk_to_wall and talk_to_npc to check for quests. server/time.c: modify marker behaviour to handle quests. Ryo 2005-07-14 common/{button.c, treasure.c, utils.c}, server/{c_wiz.c, login.c, shop.c, skill_util.c, spell_effect.c}, socket/{image.c, item.c}: Fix printf like format specifiers. At least one of them fixes a means to crash the server. Andreas Kirschbaum 2005-07-14 Those changes introduce party spells. Casted spell should be defined through 'ot her_arch' field. Note that this needs through testing to make sure it works as intended. include/spells.h: new spell type, 'party spell'. server/spell_util.c: new spell type, party spell. Ryo 2005-07-10 server/{login.c, player.c}: Fix buffer overflow with pl->title. Based on patch by Scott Kullberg. crossedit/{Edit.c, Cnv/CnvPrompt.c}, server/{ban.c, hiscore.c, login.c, player.c, shop.c, win32.c}: Properly terminate destination string of strncpy with '\0'. server/init.c: Fix error message. Andreas Kirschbaum 2005-07-10 configure.ac, configure, aclocal.m4, Makefile.in: Add AM_MAINTAINER_MODE macro to configure.ac - this should hopefully supress auto regeneration of makefiles.in MSW 2005-07-08 Add a --with-python option to configure. Also, update the python detection script to check for 2.5 (not out yet, but might as well be prepared.) Will try to commit files in proper order so that dependency checking is correct and it won't try to rebuild makefiles or other files. -- acinclude: Updated checks for --with-python aclocal.m4: updated configure.ac,configure: Updated checks for --with-python config.sub, config.guess - update to latest versions INSTALL: Updated build directions MSW 2005-07-08 lib/Makefile.am, lib/Makefile.in: Remove map_check from normal distribution due to different license on file. random_maps/monster.c: Reduce monster density on random maps - take into account size of monsters when calculating density. utils/metaserver.pl.in: At a timeout value that limits how often clients can ask for metaserver info. MSW 2005-07-08 lib/settings: Turn of fastclock as default option. socket/loop.c: Change behaviour of metaserver/flushmaps/watchdog calls if fastclock is set - don't do those any faster than normal. MSW 2005-06-22 Server can now be used as a Windows server, with command-line options -regsrv (register server and exit), -unregsrv (unregister server and exit) and -srv (should not be used directly, for the service control manager call). server/init.c: add command-line options. server/main.c: loop is no more infinite under Windows. Save and clean after it, too. server/win32.c: add service routines. Ryo 2005-06-22 common/living.c: Print correct message when (un-)wearing items with negative luck. Andreas Kirschbaum 2005-06-14 include/living.h: Patch from Kari Pahula to remove obsolete variable declarations. Andreas Kirschbaum 2005-06-01 server/skill_util.c: Print correct permanent experience ratio for experience values >2 billion. Andreas Kirschbaum 2005-05-22 server/apply.c: Do not unlock LAMP items when turning them on or off. server/apply.c: Fix CONVERTER items with slaying "money" to trigger for MONEY items only. server/player.c: Generate proper plural name for player's gravestones. Andreas Kirschbaum 2005-05-21 Ensure that object->msg always has a trailing \n character. This is necessary to prevent corrupted map files. plugin/plugin_python.c: Add trailing \n to message set by CFPython.SetMessage() if not already present. server/plugins.c: Add trailing \n to message set by HOOK_TELEPORTOBJECT if not already present. server/rune.c: Add trailing \n to rune messages. Andreas Kirschbaum 2005-05-21 Apply qal21's patch [ #1205421 ]: Implement new Python functions: GetArchType, GetFacing, GetLevel. plugin/plugin_python.c, plugin/include/plugin_python.h: Add new functions. doc/Developers/python: Describe new functions. Andreas Kirschbaum 2005-05-20 server/monster.c: Fix monsters to cast spells from spellbooks. Andreas Kirschbaum 2005-05-15 Fixed compilation issue. server/apply.c: can't declare a variable after some function call. socket/info.c: removed unused variable. Ryo 2005/05/07 Corrected code to compile under -ansi gcc flag: * correction of some non posix compatible calls around scandir * changing configure to detect the absence of 'alphasort' prototype * converted some '//' comment to /**/ one * reran automake1.8/autoconf2.50/autheader2.50 Note even it it compiles with -ansi -pedantic, it still need cleanup to get 64 bits experience code working! Tchize 2005/05/07 Applied Casper1's patch [ #1193516 ] for Hurd support. * socket/lowlevel.c: #ifdef some code part that won't work. Change some char* to const char*, when values shouldn't be changed. Changed file s: * include/libproto.h * common/arch.c * common/living.c Ryo 2005-05-03 Change some char* to const char*, when values shouldn't be changed. Changed file s: * include/sproto.h * socket/info.c * socket/item.c Ryo 2005-04-30 Change some char* to const char*, when values shouldn't be changed. Changed file s: * include/sproto.h * server/apply.c * server/ban.c * server/spell_util.c Ryo 2005-04-27 server/skills.c: Change it so that jeweler skill is used to identify amulets, not alchemy skill. MSW 2005-04-27 Apply patch 1190107 so server compiles on HURD. common/porting.c: Add define for MAXPATHLEN socket/init.c: Add check for __GNU__ for setsockopt() MSW 2005-04-27 Change to have objects generated by creator properly fixed up (material, for potions, spell object, etc). --- common/treasure.c: add GT_MINIMAL flag to change_treasure() to do minimal processing for objects created. include/treasure.h: Add GT_MINIMAL define. server/apply.c: Add call to fix_generated_item() in convert_item() MSW 2005-04-27 Various minor bugfixes. common/los.c: Patch to fix negative lighting. Use isqrt instead of sqrt, so we only want integer values anyways. include/libproto.h, include/sproto.h: Rebuilt as there were some improperly matching prototypes. random_maps/rogue_layout.c: Replace sqrt with isqrt calls. server/c_misc.c: Make name_cmp() a static declaration so it won't be put in the sproto.h file. server/init.c: Remove /* within comment string. server/monster.c: Change sqrt to isqrt MSW 2005-04-16 Those changes are just changing char* to const char* in some function prototypes. Affected files: common/recipe.c common/region.c common/treasure.c common/utils.c include/libproto.h: match headers. server/main.c Ryo 2005-04-16 Those changes add the ability to transform items through 'item_transformer' (163)-type items See doc/Developers/item_transformation for more info. common/item.c: don't display 'slaying' field for food. include/define.h: add new 'ITEM_TRANSFORMER' type. include/sproto.h: add new function 'apply_item_transformer'. server/apply.c: new 'apply_item_transformer' function to handle that item type. Ryo 2005-04-15 common/map.c: map pathnames are now const char*, no reason for something else. common/region.c: remove unused variable. include/libproto.h: update functions definitions. include/sproto.h: weathermap_to_worldmap_corner now returns a const char*. include/win32.h: define missing NAME_MAX as MAX_BUF. server/c_misc.c: remove unused variable. Use const char* when possible. server/weather.c: weathermap_to_worldmap_corner now uses const char* as return type. Ryo 2005-04-14 Random map code improvements - add support for subdirectories in the style maps for random maps. Add difficulty_increase parameter for random maps to control how fast they get harder. doc/Developers/random-maps: Add notes about difficulty_increase parameter. random_maps/Makefile.am: Update proto directive to use cproto, not cextract. random_maps/random_map.c: Update to use difficulty_increase when figuring difficulty of maps. Add code to save it in list of parameters. random_maps/random_map.h: Add difficulty_increase field to structure. random_maps/reader.l, reader.c: Add code to find difficulty_increase parameter. random_maps/rproto.h: rebuilt. random_maps/special.c: Pass in difficulty increase to write_parameters_to_string() random_maps/style.c: Remove old scandir - replaced by our own load_dir() - necessary because we need to check type of files, which scandir doesn't easily let us do. Since it is now our own routine, just return array of file names instead of dirent structures. MSW 2005-04-13 utils/Makefile.am: Add cfmeta-rrd to list of files to add to distributions utils/cfmeta-rrd: Example of sample script that takes data and stores it into rrd file and draws graphs (new file). utils/metaserver.pl.in: Add recording of useful stats to external file so they can be processed by other external scripts. MSW 2005-04-13 server/shop.c: Pass in player object to pay_from_container() - code was trying to deref pouch->contr which was null. Only occurs when player has 2 different money objects of the same type, but 2 crashes observed on metalforge. MSW 2005-04-13 socket/image.c: Change esrv_send_face to check for <=0 instead of <0 on face number. socket/request.c: Change if statement that acted improperly to determine when to send faces. MSW 2005-03-27 include/sproto.h: get_who_escape_code_value is void, not void*. server/c_misc.c: move local function outside the function. server/c_wiz.c: remove sleep( 1 ) that would cause whole server to sleep one sec. Ryo 2005-03-23 common/living.c: Allow luck to drop back to zero. Limit bad luck object to +/-100 to prevent overflows. Andreas Kirschbaum 2005-03-22 common/living.c: When randomly adjusting luck, change both op->stats.luck and the applied bad_luck object. server/attack.c: Do not decrease luck if a player kills himself with a spell or pet. Andreas Kirschbaum 2005-03-20 server/c_wiz.c: change command_free() and command_remove() to always process the head of the object - doing this operations on the non head will typically always cause problems. MSW 2005-03-19 This change makes it so that the smoothing information is pushed to the client (if the client is using smoothing) instead of a process were we tell the client the smoothlevel and the client then has to request the face info for smoothing. If we know the client wants the info, much easier to push it to the client. This simplifies the client code (doesn't have to keep track of what is requests). It also fixes the 'problem' that when you join the game, you get a few frames with no smoothing and then the smoothing shows up, which seems a bit odd. My testing shows that old clients that want smoothing use this new logic withouth any problems. -- common/image.c: add smooth_face default so that we don't have to look it up everytime. include/define.h: Add SMOOTH_FACE_NAME used by image.c include/global.h: Add smooth_face extern declaration. include/newserver.h: Update comment on what faces_sent is used for, add NS_FACESENT_* values which determines what info for the face was sent. socket/image.c, socket/init.c, socket/item.c: Update faces_sent checks/set to check against NS_FACESENT bitmask. socket/request.c: Update faces_sent as mentioned above. And SendSmooth(), rewrite AskSmooth() to use SendSmooth(). Modify update_smooth() to send smoothing information to the client. MSW 2005-03-19 common/map.c: Clean up if statement ins blocked_link() which caused warning messages - broke it apart to make it a little clear. Add check for premature end of map header - make code more resilent in case of truncated saved maps. Fix saving of region name in new_save_map() - saving the pointer to the region isn't what the loader is expecting, and is highly non portable even if it was. MSW 2005-03-18 Applied patch: * #1145089 (cavesomething): Region support. common/Makefile.am: add new 'region.c' file. common/init.c: add 'REGIONS' setting. common/map.c: add 'region' map key. include/config.h: add regions file default name. include/global.h: add 'first_region' global variable and settings. include/libproto.h: add region.c functions prototypes. include/map.h: add region structure. include/sproto.h: add new region-related command. lib/Makefile.am: add 'regions' file. lib/regions (new): regions definition file. server/c_misc.c: add region information to current_map_info. Add new 'whereami' command. server/commands.c: add 'whereami' command. server/init.c: add regions settings, and load data. Ryo 2005-03-15 Applied patches: * #1119366 (salathar): wiz food, DMs don't use food anymore. * #1161816 (cowboyatheart) : Add wands/staves/rods/horns to new pickup. * #1119762 (salathar): afk command. common/loader.[lc]: add 'FLAG_AFK'. include/define.h: add 'PU_MAGIC_DEVICE. Add 'FLAG_AFK'. include/sproto.h: add 'command_afk'. server/c_misc.c: add 'AFK' to who display, add command_afk. server/c_object.c: add new flag to dump. server/commands.c: add command_afk. server/player.c: wiz don't use food. Check for rod/wand/horn for new pickup flag . Ryo 2005-03-13 *Makefile.in, aclocal.m4, configure, utils/config.guess, utils/config.sub, utils/ltmain.sh: Rebuild generated files. acinclude.m4: Check whether Python supports the "L" format specifier. Do not build python plugin if not. Andreas Kirschbaum 2005-03-09 common/{map.c, readable.c, treasure.c}, crossedit/Attr.c, server/{apply.c, attack.c, c_wiz.c, init.c, monster.c, pets.c, shop.c, skill_util.c, skills.c, spell_attack.c, spell_effect.c, time.c}, socket/{info.c, request.c}: Add missing newline character to LOG() messages. common/living.c, include/living.h: Change type of weight_limit to uint32. socket/request.c: Remove non-portable assignment to rvalue. doc/{README_PLUGINS.doc, README_PYTHON.txt, plugins}, doc/Developers/{README, plugins, python}: Update plugin documentation. plugin/plugin_python.c, plugin/include/plugin_python.h: Whitespace changes, remove obsolete comments. plugin/plugin_python.c: Only set WhoAmI when running the command registered by CFPython.RegisterCommand. Set default result value to "success". plugin/plugin_python.c: Fix memory leaks by freeing old strings before assigning a new value. plugin/plugin_python.c: Use correct format specifiers for item values and experience values. plugin/plugin_python.c: Make CFPython.IsCanBePicked return whether the object can be picked up. (Did return whether the object cannot be picked up.) plugin/plugin_python.c: Do not return a pointer to a variable on the stack. server/plugins.c: Fix pointer type mismatch while processing CFPython.RegisterCommand. plugin/plugin_python.c: Change second parameter of CFPython.CheckMap to use a map object instead of a map name. Now it works for tiles maps. acinclude.m4: Add check for python 2.4 to match this file with aclocal.m4. Andreas Kirschbaum 2005-03-06 plugin/plugin_python.c: Increase limits of values the Python script may set to the ranges given by objects in the archetypes file. Andreas Kirschbaum 2005-02-28 common/object.c, include/libproto.h: change nrof parameter of get_split_ob to uint32 type. server/c_object.c, include/sproto.h: change nrof parameter of drop_object to uint32 type. plugin/{plugin_python.c, include/plugin_python.h}, plugin_animator/{plugin_animator.c, include/plugin_animator.h}, server/{apply.c, attack.c, gods.c, monster.c, player.c, skills.c, time.c, timers.c}: Change type of CFParm.Value[5] and StackParm1[] to uint32 to be able to pass an "nrof" value. plugin/plugin_python.c, plugin/include/plugin_python.h: Remove spell wrapper functions. plugin/plugin_python.c, plugin/include/plugin_python.h: Replace skill-IDs by skill names. Remove skill-ID wrapper functions. Andreas Kirschbaum 2005-02-20 Client: Changes for 1.8.0: Makefile.am, Makefile.in: Add missing pixmaps, change CHANGES to ChangeLog, update archive directive so it works. aclocal.m4: updated configure, configure.in: Updated for 1.8.0 release. Remove gnome/Makefile from list of Makefiles to create. gtk-v2/Makefile.am, gtk-v2/Makefile.in: Add archive directive. gtk-v2/src/Makefile.{am|in}: Add missing soruces to list so that archive works correctly. Add archive directive. MSW 2005-08-10 gtk/keys.c: don't select text in widget under Windows. Ryo 2005-07-30 gtk/gx11.c: fix a crash if closing login window. Weird behaviour, but no crash. Ryo 2005-07-29 gtk/image.c: Remove stray '+' at beginning of line. Andreas Kirschbaum 2005-07-21 x11/x11.c: Fix crash if display cannot be opened. common/script.c: Properly terminate string with '\0' in script_init(). Andreas Kirschbaum 2005-07-18 gtk/sdl.c, gtk-v2/src/sdl.c: Fix printf like format specifiers. Andreas Kirschbaum 2005-07-16 common/init.c: Win32 should use %APPDATA% instead of . for home directory. Ryo 2005-07-10 Bulk of this change is the addition of a pop up window in the gtk-v2 client for metaserver selection, as well as other updates. The files to the common area was really to pull the metaserver defines and data structures from the C file to a header file so that the gtk-v2 code can access them: -- AUTHORS: New file, required by automake, data pulled README file. NEWS: New file, required by automake. Makefile.in, aclocal.m4: Rebuilt README: Remove author info from this file, move it to AUTHORS. common/Makefile.in: add metaserver.h file common/metaserver.h: New file containing metaserver defines and structures. common/metaserver.c: Pull out defines/structures from this file, moved to metaserver.h. Have it strip packets/byte count info from comment section that metaserver reports. gtk-v2/Makefile.in: Rebuilt. gtk-v2/gtk-v2.glade: Added new metaserver window. gtk-v2/src/Makefile.am: Add metaserver.c as a standalone file that gets compiled gtk-v2/src/Makefile.in: Rebuilt gtk-v2/src/callbacks.h, gtk-v2/src/interface.c, gtk-v2/src/interface.h: Updated by glade2 gtk-v2/src/main.c: Remove metaserver.c inclusion. Initialize cached_server_file. Change metaserver selection/display code. gtk-v2/src/metaserver.c: Lots of new code - have it display window, handle selections, connect to server, etc. MSW 2005-07-04 gtk-v2/src/info.c: Remove extra lines of code for scrolling. Have newlines be inserted in the correct place for the color info tab. gtk-v2/src/inventory.c: Remove call to check to display object in inventory tab for container objects - if we show the container object, so all objects within the container (bug 1226968) gtk-v2/src/keys.c: Move initialization of global widges to before loading keybindings - otherwise, they can end up not being initialized. MSW 2005-06-29 Add inventory animation to the gtk2 client. gtk2proto.h: rebuilt inventory.c: Add new function that animates inventory. Have draw_table() take a second param that determines if it is doing an animation run or just a normal draw. main.c: Move PACKAGE_DATA_DIR to be within WIN32 defines. Add call to inventory_tick() in do_timeout() MSW 2005-06-26 common/metaserver.c: wrong number displayed for cached servers. Ryo 2005-06-25 configure.in, configure: Turn of the use of dmalloc as the default - if dmalloc is disabled, it has to be intentionally set. gtkv2 client runs dog slow if dmalloc is used, so that isn't a good default common/item.c: Fix bug that resulted in the item names not being updated properly - bug introduced in patch 1197437. MSW 2005-06-04 crossfire-client.spec, gnome/Makefile.in, x11/Makefile.in: Patch from Kari Pahula to fix manpage paths. gtk/gx11.h: Patch from Kari Pahula to remove incorrect variable declaration. Andreas Kirschbaum 2005-06-01 Committed patch #1197437 courtesy Kevin Rudat (krudat). This patch moves inventory-related functions in GTK client to one specific file. Also makes inventory refresh less often. Affected files: * common: client.h item.c item.h p_cmd.c proto.h * gtk: config.c gtkproto.h gx11.c gx11.h inventory.c Makefile.in * x11: x11.c x11proto.h common/metaserver.c: add server cache. gtk/gx11.c: initialize server cache filename. Ryo 2005-05-23 gtk/gx11.c: Windows has player-specific keys, get'em (was broken with new login window) Ryo 2005-05-12 Add newpickup support to the gtkv2 client. Didn't add old support (still available by specific commands) as I think the interface gets confusing to have them both - would be better to extend newpickup logic if necessary to support anything old pickup does that newpickup doesn't. -- gtk-v2/Makefile.in: Rebuilt gtk-v2/gtk-v2.glade: Add menu options for newpickup gtk-v2/src/Makefile.am, gtk-v2/src/Makefile.in: Add pickup.c file gtk-v2/src/callbacks.h, gtk-v2/src/interface.c: Rebuilt by glade-2 gtk-v2/src/pickup.c: New file - handles pickup logic. MSW 2005-04-17 gtk/image.c: Apply patch from bug 1120881 that fixes pointer operations on netbsd/macppc. Changed code still works on linux/x86. MSW 2005-04-16 Improve behaviour of information windows on gtkv2 client - before this patch, they would always scroll to bottom when getting new output, making it difficult to look at shop listings or other long listings that require going back in the scroll buffer. With this change, if the buffer isn't at the end, the scroll position isn't changed. IF it it at the end, it keeps it at the end. -- gtk-v2/gtk-v2.glade: Chane scrolledwindows used by the textbuffers to have a meaningful name. gtk-v2/src/info.c: Add code that gets position of scroll bar (adjustment) and compares it with maximum, and if not at end, don't scroll window. gtk-v2/src/interface.c: Rebuilt. MSW 2005-04-11 Fix so that magic map works properly on the gtkv2 client. gtk-v2/gtk-v2.glade: change name of map notebook to map_notebook. Add signal to handle expose events of the magic map area. gtk-v2/src/callbacks.h: Rebuilt with addition of expose callback. gtk-v2/src/interface.c: Rebuilt with addition of expose, change of name. gtk-v2/src/magicmap.c: Have magic map switch the notebook page to the magic map page to ensure widget is realized - also good for expected behaviour. Add some checks for null values so if user switches before getting magic map data, doesn't crash. Add check in magic_map_flash_pos() to see if still on the magic map notebook page. Add expose callback. gtk-v2/src/main.h: Add MAGIC_MAP_PAGE which defines which notebook page is the magic map one. gtk-v2/src/map.c: Have it look up the map_notebook widget. MSW 2005-04-05 Various minor bugfixes: configure.in, configure: Add warning message if we can't find gtk+ 2.0 or later, but continue configure process instead of exiting. common/misc.c: Fix code so that it compiles with older C compilers. gtk-v2/src/map.c: Change code on need_recenter_map() - use MAX_MAP_OFFSET instead of hard coded value of 2 - found a crash here when running around the world map - could have been caused by a big image and/or the fact my character moved 2 spaces in one tick. either way, this change shouldn't impact things, as it is seldom the virtual map needs to be recentered. MSW 2005-03-27 This patch fixes a few memory leaks related to image caching in all clients. common/image.c: Declare facetoname[] as static. Add all code accessing this array. Print warning if image cannot be created. gtk/gx11.c, gtk/image.c, gtk-v2/src/image.c, x11/x11.c, x11/xutil.c: Remove code accessing facetoname[]. gtk/gx11.c, gtk-v2/src/main.c, x11/x11.c: Always call init_cache_data() to initialize pixmaps[] array. gtk/image.c, gtk-v2/src/image.c, x11/png.c: Reject invalid face numbers and fix resource leak in create_and_rescale_image_from_data(). gtk/image.c, gtk-v2/src/image.c, get_map_image_size: Pretend invalid faces to be of size 1x1 in get_map_image_size(). gtk-v2/src/image.c: Properly free opengl resources in free_pixmap(). Fix resource leak when freeing old pixmaps in reset_image_data(). x11/png.c: Properly free resources if an error occurs. x11/x11.c: Ignore invalid face numbers. x11/x11.h Remove duplicate definition of MAXPIXMAPNUM and facetoname[]. x11/xutil.c: Initialize size of pixmaps[0]. Andreas Kirschbaum 2005-03-27 gtk-v2/src/map.c: Fix typo to make it compile without opengl. Andreas Kirschbaum 2005-03-26 Main change of this is addition of opengl drawing for the map in the gtk-v2 client. On my system, the opengl code is about 10 times faster than the sdl code was, making it so I can turn on all the bells and whistles (smoothing, best lighting) and still use less than 10% cpu time. As part of this, I redid the smoothing logic, so the client now requires a new server for smoothing to work (needs push logic, as client won't request smoothing info as that adds a lot of complication). This change was done because the old smoothing code wasn't that efficient - now, we store the smoothing face along with the face it smooths, so finding the smoothing info is much faster. -- configure.in, configure: Add check for -lglut - indication we have opengl libraries available. common/client.h: Remove Smooths struct. Change CONFIG_SDL to CONFIG_DISPLAY, and add CFG_DM_... to denote different display modes, since there is more than just sdl and not sdl now. common/commands.c: Don't have SmoothCmd try to update what spaces need to be redrawn - for opengl, it doesn't care about that, and for most other maps, it will figure it out when it needs to redraw anyways. common/config.h.in: Addition of HAVE_OPENGL line. common/image.c: Remove getsmooth() - rely on push logic. common/init.c: Update want_config[CONFIG_SDL] to want_config[CONFIG_DISPLAYMODE] gtk/config.c: Change access to CONFIG_DISPLAYMODE gtk/gx11.c: Change access to CONFIG_DISPLAYMODE. Add -smooth command line option. gtk/gx11.h: Add smooth_face to PixmapInfo struct. gtk/image.c: Change access to CONFIG_DISPLAYMODE. When getting new PixmapInfo struct, use calloc so we are sure all fields are initialized to zero. Add addsmooth(). gtk/map.c: Change access to CONFIG_DISPLAYMODE. Change how we access smooth face info. gtk/sdl.c: Change how we access smooth face info. gtk-v2/src/Makefile.am, gtk-v2/src/Makefile.in: Add addition of OPENGL_LIBS to link libs. Add opengl.c file. gtk-v2/src/config.c: Add image.h include. gtk-v2/src/gtk2proto.h: Rebuilt. gtk-v2/src/image.c: Change access to CONFIG_DISPLAYMODE. Add hooks for opengl image generation. Change call for pixmap creation from malloc to calloc. Add addsmooth(). gtk-v2/src/image.h. If we have opengl, include GL/gl.h. Add fields for opengl texture maps. gtk-v2/src/info.c: Update so text line wraps if it is too long. gtk-v2/src/inventory.c: Add checks to make sure object face is valid before trying to draw. In icon mode, add code to cleanup old fields (if you drop an item, it wouldn't erase the list item in the list). Also, free callbacks, as they effectively stack, and we were using incorrect object pointers (pointer from first callback, which didn't match current one). gtk-v2/src/keys.c: Add image.h to includes. gtk-v2/src/main.c: Add image.h to includes. Change access to CONFIG_DISPLAYMODE. Add -opengl command switch. Remove +sdl and popups command line options. Relocate setup of cache call setup to after we know all windows have been created. gtk-v2/src/map.c: Change access to CONFIG_DISPLAYMODE. Add opengl drawing hooks. Change access for smooth info. Implement button press code for map window (basically grabbed from gtk/map.c) gtk-v2/src/opengl.c: New file containing opengl draw code. gtk-v2/src/png.c: Remove some unused code resulting in compile warnings. gtk-v2/src/sdl.c: Remove some commented out code. Change access method for smoothing code. x11/xutil.c: Change access to CONFIG_DISPLAYMODE. Add addsmooth() function. MSW 2005-03-20 Applied patch #1161817 (cowboyatheart): Add wands/staves/rods/horns to new pickup (client). gtk/gx11.c: add new 'magic devices' menu option. Ryo 2005-03-13 More improvements for the gtkv2 client, mostly adding SDL support: gtk-v2/TODO: updated gtk-v2/src/logfile: Removed - don't need dmalloc logfile. gtk-v2/src/Makefile.am, gtk-v2/src/Makefile.in: Change program name from 'gtk-v2' to 'gcfclient2'. Add sdl.c to list of files. gtk-v2/src/gtk2proto.h: Rebuilt gtk-v2/src/inventory.c: Fix bug in show_nonmagical() (which corresponds to inventory tab) - was showing unpaid objects, not nonmagical objects. gtk-v2/src/main.c: Remove time_map_redraw declaration from function, since it is declared in map.c. Change map logic to draw when we finish processing network data. Change client naem as it reports itself to server to GTK2 ... Client. gtk-v2/src/map.c: Add map_updated variable which is set by display_map_doneupdat e - used by map draw function to know if anything has changed. Clean up some formatting, remove unused code. gtk-v2/src/sdl.c: New file containing sdl support. MSW 2005-03-07 Commit for GTKv2 client - please read gtk-v2/README before using this client. The bulk of the changes are limited to the gtk-v2 directory (addition), but some changes elsewhere as related to using automake. You will need to run configure for the gtk-v2 client to be built (it should be built automatically if you have the needed libraries) -- Changelog: Replaces CHANGES file to meet automake standards. Makefile.am: New file for use with automake. Makefile.in: rebult from Makefile.am aclocal.m4: Updated with macros to check for gtk-v2. configure.in: checks for gtk-v2 added. Chane SUBDIRS to CF_SUBDIRS as using SUBDIRS causes conflicts. utils/config.guess, utils/config.sub, utils/missing: Updated as part of automake changes. gtk-v2/*, gtk-v2/src/*: Files related to gtk-v2 client. MSW 2005-03-01 crossfire-client.spec: Update for 1.7.1 release, make some other changes that better match my system since I don't think anyone else is using it. gtk/Makefile.in: Add crossfire-client.desktop to list of files to add to distribution. README.rpm: removed - had info that didn't really apply to me making RPM files configure.in, configure: Add --disable-dmalloc option to configure. MSW 2005-02-28