--- deliantra/server/ChangeLog 2006/02/03 07:11:13 1.1 +++ deliantra/server/ChangeLog 2006/09/07 20:50:20 1.2 @@ -1,11893 +1 @@ -Changes in top level CVS tree. A few notes when putting entries in this -file: -1) Please include a date in the form yyyy/mm/dd (yes, us americans are -screwed up relative to most the world, but some consistent date format -is needed for this file.) -2) You don't need to go into exacting detail of the changes. This file -is mostly meant to give an idea to others what has changed - you don't -need to recreate the code here. If you change fixes a reported bug -on the mailing list, please provide a brief description of the bug -fixed. But please do try to include a useful description of -what changed. Saying something like 'General cleanup - just whitespace -changes' is much more useful than 'misc edits' or 'code cleanup'. -3) Please include your name with the changes you make. -4) Whenever making an update, please update this file, no matter how -small - this just lets others know that the file has changed if nothing -else. With this, include the file(s) that you changed. ------------------------------------------------------------------------------- -Changes for CVS: - -include/newserver.h, server/login.c, socket/init.c, socket/loop.c: - drop any connection that fails to login successfully after - MAX_PASSWORD_FAILURES attempts (defaults to 5) -doc/Developers/protocol: document properly the byte counts of item flags, - and include documentation of the itemcmd setup option. -Brendan Lally 2006-01-30 - -Custom commands-related fixes. -plugins/cfpython/cfpython.c: fix custom command handling. -server/plugins.c: try all plugins for custom commands. ------ -Moved the global event 'LOGOUT' from when player actually disconnects to when - player logs out and is asked whether to play again or not. -Modified files: - server/apply.c main.c -Ryo 2006-01-15 - -socket/request.c: In ReplyCmd() make sure the reply does not cause a buffer - overflow. -Andreas Kirschbaum 2006-01-13 - -socket/request.c: add some better checks in addspell packet formation, fix a - crash bug. -Brendan Lally 2006-01-13 - -server/c_object.c: stop rename crashing if there is no name to rename to - when object is passed by number --- -server/c_object.c: allow the rename command to take tag of the item to be - renamed, so that clients can form rename commands properly. -Brendan Lally 2006-01-11 - -server/c_range.c: allow spells cast by number to also have options passed to - them -Changelog: Commit the changelog entry for the last commit. -Brendan Lally 2006-01-10 - - Spell listing support: - allow 'spell_paths' to be sent to requestinfo, reply with number:path - change return type of SP_level_spellpoint_cost to sint16 - add spellmon as a setup value, if it is set; - send path attunement/repulsion/denial in stats - send data about spells in addspell packets - send updates to that data - Affected files: - common/living.c - crossedit/stubs.c - doc/Developers/protocol - include/funcpoint.h, newclient.h, newserver.h, player.h, sockproto.h, -sproto.h - random_maps/standalone.c - server/apply.c, login.c, spell_util.c, init.c, loop.c, request.c - -- -server/c_range.c: allow cast/invoke and prepare commands to take item tags - as well as spell names -Brendan Lally 2006-01-09 - -Apply modified patch #1396303 (add setting to disable stealing from players) -by Terry Brown. It adds a new option "no_player_stealing" to the settings -file. If set, it prevents players from stealing from other players. It -defaults to ON. --- -doc/settings: Add documentation for new setting. -include/global.h: Add new field to settings structure. -lib/settings: Add new option no_player_stealing. -server/init.c: In load_settings() recognizes the new option. -server/skills.c: In attempt_steal() prevent stealing from PLAYER if option is - set. -Andreas Kirschbaum 2006-01-08 - -include/newserver.h, socket/{init.c,request.c}: Remove unused fields ext2 and - ext_title_flag from NewSocket structure. -server/skills.c: Fix/improve feedback messages for stealing skill. -plugins/cfpython/cfpython.c, server/plugins.c: Just whitespace changes to make - it conform to programming_guide. -plugins/cfpython/cfpython.c: Make sure context->options always is initialized. -server/main.c: Make code more readable; use snprintf where appropriate. -crossedit/Cnv/CnvPrompt.c: Make file compilable with Ansi C89 compiler. -Andreas Kirschbaum 2006-01-08 - -Global event Python scripts now are in subdirectories. This makes it easier to - distribute "Python packages". Modified file: - plugins/cfpython/cfpython.c -Ryo 2006-01-07 - -common/{item.c,treasure.c}, server/{apply.c,gods.c,spell_effect.c}: Use named - constants instead of numbers. -server/monster.c: Use correct field name in move_monster(). -Andreas Kirschbaum 2006-01-07 - -Summon pets less often to the owner on tiled maps. --- -server/pets.c: In remove_all_pets() and pet_move() use on_same_map() to check - whether the pet is too far away. -Andreas Kirschbaum 2006-01-07 - -Change meaning of "items are on same map": for tiled maps now two objects are -also considered to be on the same map if they are on diagonally adjacent maps. -This solves the issue that a pet can be only one tile away from the owner but -still considered not to be on the same map. --- -common/map.c: In on_same_map() also consider diagonally adjacent maps. -Andreas Kirschbaum 2006-01-07 - -Added regions support for plugins. Affected files: - include/plugin.h sproto.h - server/plugins.c --- -Added regions to Python plugin. Affected files: - cfpython/include/cfpython.h cfpython_map_private.h - cfpython/cfpython.c cfpython_map.c cfpython_region.c Makefile.am Makefile.in -New files: - cfpython/include/cfpython_region.h cfpython_region_private.h - cfpython/cfpython_region.c --- -In Python's Object, Archetype is now a property and not a method. Affected files: - cfpython/include/cfpython_object_private.h - cfpython/cfpython_object.c --- -Cleaned obsolete include/plugproto.h. -Ryo 2006-01-07 - -Make teleporters hidden below the floor work again. --- -server/time.c: In move_teleporter() use object above floor instead above - teleporter to operate one. -Andreas Kirschbaum 2006-01-07 - -Fix issues with map tiling. --- -server/move.c: In move_ob() make sure inserting multi-part objects into tiled - maps work. -server/spell_attack.c: In cast_cone() insert spell effect at correct position - for tiled maps. -Andreas Kirschbaum 2006-01-07 - -common/map.c: Allow map tiling paths to be reletive. -server/main.c: Template maps: Impliment using fixed maps as templates, and - improve reletive path support for them. -Alex Schultz 2006-01-06 - -Make SIGNs (including Magic Mouths) trigger for DMs again. Does not reduce the -counter if in 'wizpass mode. --- -server/apply.c: In apply_sign() ignore DMs. -Andreas Kirschbaum 2006-01-04 - -server/spell_effect.c: Apply patch 1394861 - fixes magic walls. In conjuction - with archetype changes, look at the spell object (and not created wall) - to see if it blocks. -server/c_chat.c: Apply patch 1389113 - orcknuckle messages appear in - same window. -MSW 2006-01-01 - -Prefer marked item when throwing objects. --- -server/skills.c: In find_throw_ob() prefer marked item. -Andreas Kirschbaum 2006-01-01 - -Make EXITs affect DM players again. --- -common/object.c: In check_move_on() ignore only slow movement penalties for - DMs. -server/apply.c: In move_apply() ignore anything but EXITs for DM players. -Andreas Kirschbaum 2006-01-01 - -Make forked lightning correctly traverse tiled maps. --- -server/spell_attack.c: In forklightning() insert forked part into correct map. -Andreas Kirschbaum 2006-01-01 - -Properly unready forgotten spells. Prevents crashing the server if casting a -forgotten spell. --- -include/sproto.h: Add new prototype. -server/{apply.c,gods.c}: Call player_remove_range_ob() when forgetting a - spell. -server/player.c: Add player_remove_range_ob() to unready a given object. -Andreas Kirschbaum 2006-01-01 - -Improve the commands learn_spell and forget_spell: now these commands accept -partial spell names and print sensible error messages if they fail. --- -include/sproto.h: Remove prototype for now static function. -lib/wizhelp/{forget_spell,learn_special_prayer,learn_spell}: Update help files. -server/c_wiz.c: Add parameter op to get_spell_by_name() for printing error - messages to op. Allow partial matches for spell name. In - command_learn_spell_or_prayer() and command_forget_spell() report an error - to the player instead of an error message to the server log file. -Andreas Kirschbaum 2006-01-01 - -Fix reference-related crashes. - plugins/cfpython/cfpython.c -Ryo 2006-01-01 - -Apply modified patch #1391648 (FIX: new movement code and generators) by Lalo -Martins. This fixes bugs #1383398, #1383392, #1375643, #1372035, #1370409; all -bugs are related to objects stacking which should not stack. --- -common/map.c: In ob_blocked() consider tiles with living objects as blocked. -Andreas Kirschbaum 2005-12-31 - -Don't print "file not found" for global events. - plugins/cfpython/cfpython.c -Ryo 2005-12-31 - -Changed the way Python scripts are called. Now script don't share variables anymore. - Fix a memory leak. - plugins/cfpython/cfpython.c -Ryo 2005-12-28 - -Applied patch #1383359 (Fix death message) courtesy Anton Oussik -( https://sourceforge.net/tracker/index.php?func=detail&aid=1383359&group_id=13833&atid=313833 ) - server/attack.c -Ryo 2005-12-27 - -server/skills.c: In steal() do not give exp for stealing from pets since this - can be exploited to gain exp over and over. -Andreas Kirschbaum 2005-12-23 - -server/c_party.c: fix crash with party obsolescence (->next on freed item). Added - get_firstparty() to get firstparty private var needed for plugin. - -------- -Added party information to plugin functions. Plugins can change player's party - or marked item. - New files: - plugins/cfpython/include/cfpython_party.h cfpython_party_private.h - plugins/cfpython/cfpython_party.c - Modified files: - include/sproto.h: add new functions prototypes. - include/plugin.h: party-related defines - plugins/common/include/plugin_common.h: new party functions. - plugins/common/plugin_common.c: new party functions. - plugins/cfpython/include/cfpython.h: add new include. - plugins/cfpython/include/cfpython_object_private.h: marked item/party getter/setter. - plugins/cfpython/cfpython.c: add GetParties to Crossfire module. - plugins/cfpython/cfpython_object.c: MarkedItem setter, Party getter/setter. - server/plugins.c: new callbacks for party, marked item setter. -Ryo 2005-12-17 - -server/attack.c: Make spells destroy objects again. -Andreas Kirschbaum 2005-12-15 - -Moved natural dragon skin resistances from "statistics" to "resistances". - server/c_misc.c -Ryo 2005-12-13 - -Fix Windows compilation after Andreas's changes. -include/win32.h: define WIFEXITED and WEXITSTATUS. -Ryo 2005-12-11 - -Fix buffer overflows which can be triggered remotely. --- -common/porting.c: Re-implement open_and_uncompress(). The new implementation - should not contain any buffer overflows anymore. It also fixes possible - exploits due to funny characters in file names. -plugins/cfpython/cfpython.c: Use snprintf() to truncate long strings. -server/login.c: Reject invalid user names. -socket/loop.c: Make overflow detection work while reading from socket. - Properly re-allocate memory for listen command. Fix buffer overflow for too - long command names. -Andreas Kirschbaum 2005-12-11 - -lib/collect.pl.in: General cleanup - just whitespace changes. -Andreas Kirschbaum 2005-12-11 - -Prevent the map loader from crashing when loading maps with incorrect headers. -Changes are based on patch #1275563 by Kevin Rudat. --- -common/map.c: Do not dereference NULL value for map headers without parameter. -Andreas Kirschbaum 2005-12-11 - -Apply modified second part of patch #1275563 (Crossedit: fix map attributes -window) by Kevin Rudat: let crossedit save/load tiling paths as the mapmaker -entered them, rather than saving the normalized version. --- -common/map.c: Delay path normalization from map loading time - (load_map_header()) to access time (load_and_link_tiled_map()) if running - as editor. -Andreas Kirschbaum 2005-12-11 - -server/move.c: In move_ob() print error message instead of crashing: check - passed arguments before accessing them. -common/object.c, server/{pets.c,player.c,spell_attack.c,time.c}, -socket/request.c: Properly check for P_OUT_OF_MAP after calling - get_map_flags(). -Andreas Kirschbaum 2005-12-10 - -common/path.c: add missing global.h include. -make_win32/crossfire32.dsp: add path.c and some headers. -Ryo 2005-12-09 - -Apply slightly modified first part of patch #1275563 (Crossedit: fix map -attributes window) by Kevin Rudat: make the map attributes dialogs work again. --- -crossedit/Attr.c: Remove code to handle map attributes dialogs. -crossedit/Crossedit.ad, crossedit/Crossedit.ad.h: Update X11 resources. -crossedit/Defines.h: Add typedef for MapAttr. -crossedit/{Edit.c,Edit.h}: Remove/update code to handle map attributes - dialogs. -crossedit/Makefile.am: Add new files MapAttr.c and MapAttr.h. -crossedit/Makefile.in: Rebuilt. -crossedit/{MapAttr.c,MapAttr.h}: New functions containing code to handle the - main map attributes dialog. -crossedit/Cnv/CnvPrompt.c: Convert CnvPromptStr into char array. -Andreas Kirschbaum 2005-12-09 - -Remove a strange feature of normalize_path(): it did convert the path -"//" into "/". Also add a stand-alone application for -regression testing this function, and fix a few issues with ".." in path name. --- -common/path.c: New file containing the modified implementation and the - stand-alone application. -include/path.h: Prototypes for path.c. -server/main.c: Remove implementation; call renamed function. -common/Makefile.am, include/Makefile.am: Add new files. -common/Makefile.in, include/Makefile.in: Rebuilt. -Andreas Kirschbaum 2005-12-08 - -server/ban.c: General cleanup - whitespace changes, rename variable names. - Should not affect function. -server/apply.c: In player_apply() do not consider DM PLAYERs to be DM-created - items. This prevents the server from destroying the player object (and - crashing shortly afterwards). -Andreas Kirschbaum 2005-12-07 - -Apply slightly modified patch #1293744 (Inversed ban entries) by Thomas -Equeter. --- -server/ban.c: In checkbanned() recognize '~' prefix to allow entries. Also fix - possible buffer overflow. -Andreas Kirschbaum 2005-12-07 - -Apply modified patch #1293774 (Kick banned hosts at once) by Thomas Equeter: -disconnect new connection for banned host right after connecting. Also add -support for user name in ban files. --- -lib/ban_file: Update comments and examples to new syntax. -server/ban.c: Allow a NULL user name to check for host name only. -server/c_misc.c: In receive_player_password() check for banned user name. -server/player.c: In add_player() remove check for banned host - this was - already done if we reach this state. -socket/init.c, include/sockproto.h: Pass ip address as a string. -socket/loop.c: In doeric_server() check for banned host after a new connection - was accepted. -Andreas Kirschbaum 2005-12-07 - -Apply patch #1371956 (code cleanup patch) by Stefan Huehner: fix old-style -function declarations and prototypes to proper Ansi C syntax. This patch -allows the compiler to check function arguments and also removes some warnings -when compiling with -Wstrict-prototypes. --- -All affected files: Convert "void foo()" into "void foo(void)". -Andreas Kirschbaum 2005-12-06 - -Fix bug #1173563 (Creator created Bombs malfunction): Creators and Converters -now copy items from inventory. Fallback (for empty inventory) is the old -behavior to create the new item from other_arch. If the inventory contains more -than one item, a random one is picked. --- -common/loader.l: Mark inventory of CREATOR and CONVERTER as - FLAG_CONTENT_ON_GEN. -common/loader.c: Rebuilt. -common/object.c: Update x/y/map for non-head parts to make inserting multipart - objects via insert_ob_in_ob_at() work. -server/apply.c: In convert_item() consider inventory for item to create. -server/time.c: In move_creator() consider inventory for item to create. In - process_object() ignore item flagged as FLAG_IS_A_TEMPLATE. (Otherwise - bombs in inventories would explode prematurely.) -Andreas Kirschbaum 2005-12-05 - -New plugin property for player: marked item, added Python wrapper. -Modified files: - include/plugin.h - plugins/cfpython/cfpython_object.c - plugins/cfpython/include/cfpython_object_private.h - plugins/common/include/plugin_common.h - plugins/common/plugin_common.c - server/plugins.c - -plugins/cfpython/cfpython.c: fix invalid reference management. Don't return NULL but Py_None. -Ryo 2005-12-04 - -Fix bug #1372194 (stairways now block movement). --- -random_maps/exit.c: In unblock_exits() check correct field move_block to find - blocking exits. -Andreas Kirschbaum 2005-12-03 - -server/apply.c: In move_apply() properly decrement recursion counter. -Andreas Kirschbaum 2005-12-02 - -server/spell_attack.c: Add some missing P_IS_ALIVE checks - these weren't - needed in the past because living objects would block movement - - with new movement code, isn't always the case. -server/time.c: Fix player movers so that if the victim doesn't have any - movement type, we move it. -MSW 2005-11-30 - -common/time.c: In move_teleporter() and move_player_mover() do not affect DMs - if FLAG_WIZPASS is set. -common/object.c: In check_move_on() do not affect DMs if FLAG_WIZPASS is set. - This prevents DMs from triggering traps when walking over them. -Andreas Kirschbaum 2005-11-30 - -common/map.c: Replace code with OB_TYPE_MOVE_BLOCK - effectively same as what - it was. -include/define.h: Update OB_TYPE_MOVE_BLOCK so that spaces that don't block - any type of movement doesn't block objects that also don't have movement. - This fixes cases of gates not pushing objects off them. -server/c_party.c: Remove double use of ->next pointer/loop in - confirm_party_password() - fixes crash and likely makes setting party - password work more reliably. -MSW 2005-11-29 - -common/object.c: Fix wrong comparision operator in free_object2() to make - monsters drop loot again. -Andreas Kirschbaum 2005-11-28 - -Basically added a parameter to 'skills' command to filter skills. And one char/const char* fix. -common/anim.c: use const char* for find_animation. -include/libproto.h: find_animation uses a const char*. -include/sproto.h: fix prototype. -server/c_wiz.c: send parameter to show_skills. -server/skill_util.c: add search parameter to show_skills command. -Ryo 2005-11-27 - -plugins/cfpython/cfpython_map.c: use wrappers instead of direct property access. -plugins/common/include/plugin_common.h: new wrappers for maps. -plugins/common/plugin_common.c: new wrappers for maps. -Ryo 2005-11-26 - -plugins/cfpython/Makefile.in: rebuilt. -Andreas Kirschbaum 2005-11-23 - -Plugins can now get archetypes. Added a check in cfapi_object_set_property to - prevent changing archtypes. -Fixed some Python bugs related to map properties. -Added Crossfire.GetArchetypes and Crossfire.GetMaps to get all archetypes/maps. -Modified files: - include/plugin.h sproto.h - plugins/cfpython/include: cfpython.h cfpython_map_private.h cfpython_object_private.h - plugins/cfpython/cfpython.c cfpython_map.c cfpython_object.c - server/plugins.c -New files: - plugins/cfpython/include/cfpython_archetype.h cfpython_archetype_private.h - plugins/cfpython/cfpython_archetype.c -Ryo 2005-11-20 - -server/shop.c: adjust minimum value that shop_specialisation_ratio can -return to 0.1. This should stop some prices being exceptionally high. -Brendan Lally 2005-11-19 - -Commit for new blocking code. Not going to dictate all the changes - -but will outline the broad points. Note also that the -doc/Developers/objects is updated and goes into more details also. -- check for P_WALL no longer used - instead, need to use GET_MAP_MOVE_BLCOK - and check against movement type of objects. -- arch_blocked() changed to ob_blocked(), now takes object. Needed because - just looking at archetype move_ values is no longer sufficient. -- find_first_free_spot() changed to take object, since it just calls - arch_blocked() -- FLAG_FLYING removed, now in move type. -- walk_on/walk_off/fly_on/fly_off removed - now based on move_on and - move_off fields. -- Map space structure extended to hold the move_on/move_off, etc - values so that we can shortcut some processing by not having to - check every object on the space when something enters it if - move_on isn't set. -- archetypes recollected - boulders needed move_walk to properly trigger - buttons. -- Note that the new plugin code has to be fixed up for the new movement - code. Look for FIXME in plugins/cfpython/cfpython_object.c -MSW 2005-11-15 - -Apply patch 1352485 newpickup rings/amulets courtesy anonymous user. -include/define.h: add PU_JEWELS -server/c_object.c: handle new type. -server/player.c: handle new type. -Ryo 2005-11-12 - -server/plugins.c: Properly update client view after removing objects. -Andreas Kirschbaum 2005-11-10 - -server/plugins.c: Properly update client view after changing object names. -server/plugins.c: Return an empty string if an object has no message. This - makes Object.Message() always return a string object, which removes the - need for special case code to handle empty messages. -include/sproto.h, server/monster.c: Declare parameter of communicate() as - "const". -Andreas Kirschbaum 2005-11-09 - -Implement new functions for the Python plugin: Object.WeightLimit, -Object.InsertInto(Object), Object.NamePl. Change Object.Name to set both name -and name_pl. This should prevents scripts from failing to set name_pl. --- -plugins/cfanim/include/cfanim_proto.h, plugins/common/include/plugin_common.h: - Add prototypes. -plugins/cfpython/cfpython_object.c: Add callback functions for new Python - functions. -plugins/cfpython/include/cfpython_object_private.h: Add prototypes for - callback functions. Add callback functions to Python object descriptors. -plugins/common/plugin_common.c: Add missing helper functions. -Andreas Kirschbaum 2005-11-09 - -server/shop.c: When we are counting unpaid items and their values, to check -if a player may leave a shop, make certain that we count all of them, and -don't stop when we have dropped into a container (such as a spellbook) -Brendan Lally 2005-11-09 - -plugins/cfpython/cfpython.c: Add missing 'PyType_Ready' calls for map and player, - failure to do so crashes with Python objects destructors set to 0. -Ryo 2005-11-07 - -server/spell_effect.c: fix WoR not executing on cursed ground with WIZCAST set. -Ryo 2005-11-06 - -server/skills.c: In do_throw() abort processing if the thrown object was - destroyed before it gets its first move. -Andreas Kirschbaum 2005-11-06 - -server/build_map.c: test FLAG_IS_FLOOR too, type == FLOOR is not always enough. -Ryo 2005-11-05 - -server/shop.c: In value_limit() return the unmodified item price if not in a - shop or not for a player. -Andreas Kirschbaum 2005-11-05 - -plugins/cfpython/cfpython.c: added GetPrivateDictionary and GetSharedDictionary - methods to keep data between runs and share data between scripts. -Ryo 2005-11-05 - -plugins/Makefile,plugins/cfanim/Makefile: Remove files to be generated by - configure. -server/main.c: Fix possible out-of-bounds array access. -Andreas Kirschbaum 2005-11-05 - -Fix case for [sg]etReturnValue. Add compare operator for object and map (of course - only == is relevant). -Modified files: - plugins/cfpython/include/cfpython_map_private.h - plugins/cfpython/include/cfpython_object_private.h - plugins/cfpython/cfpython.c - plugins/cfpython/cfpython_map.c - plugins/cfpython/cfpython_object.c -Ryo 2005-11-05 - -aclocal.m4, configure, utils/config.guess, utils/config.sub, utils/ltmain.sh, -*Makefile.in, plugins/cfanim/Makefile, plugins/Makefile: Rebuilt. -lib/Makefile.am: Add template-maps to list of directories to create while - install. -Andreas Kirschbaum 2005-11-05 - -lib/wizhelp/reset: document use of '.' as an argument -Brendan Lally 2005-11-05 - -random_maps/treasure.c: Fix out-of-bounds array access if place_chest() cannot - find a free spot to place a new chest. -Andreas Kirschbaum 2005-11-01 - -Fix bug #1082534 (monks with weapons): Now monks properly are denied from -using weapons. Only newly created monks are affected since it now relies on a -force named "no weapon force" in the player's inventory. The problem was that -become_follower() assumed it was the only means do allow/disallow weapon use. --- -server/gods.c: Do not let the god allow using weapons if a "no weapon force" - object is present in the player's inventory. -lib/treasures: add force to monk's treasure list. -Andreas Kirschbaum 2005-11-01 - -Fix bug #815620 (CFPython.SetQuantity() doesn't update client): now notifies - the client after changing nrof and/or weight. --- -server/plugins.c: Re-calculate player's weight and send item change - notifications in cfapi_object_set_property(). -Andreas Kirschbaum 2005-11-01 - -Improve newpickup command: add new flag PU_NOT_CURSED to ignore cursed items. --- -include/define.h: Add flag #define. -server/c_object.c: Add "notcursed" option to pickup command. -server/player.c: Respect new flag in check_pickup(). -Andreas Kirschbaum 2005-11-01 - -plugins/cfanim/cfanim.c: remove printf for properties. Export functions for DLL - for Win32. -plugins/cfanim/cfanim.h: remove obsolete definitions (see plugin_common.h). -plugins/cfanim/cfanim_proto.h: fix definition for exported functions. -plugins/common/plugin_common.c: add gettimeofday for Win32. -plugins/common/include/plugin_common.h: add gettimeofday for Win32. -Ryo 2005-11-01 - -server/plugins.c: Print error message for event_xxx objects with missing or - invalid parameters. Also remove the affected object to prevent multiple - error messages. -Andreas Kirschbaum 2005-11-01 - -Add new function object_get_env_recursive() to find the outermost environment -object for a given object. --- -common/object.c, include/libproto.h: Add function. -server/{rune.c,spell_attack.c}: Use function where appropriate. -Andreas Kirschbaum 2005-11-01 - -General cleanup of weather code. --- -server/weather: Declare many functions and variables as "static", add - prototypes for affected functions. Declare some variables as "const". -include/sproto.h: Remove prototypes for now static functions. -include/tod.h: Add "const" to strings. -Andreas Kirschbaum 2005-11-01 - -Fix bug #1102975 (Bronze items not keeping their + in alchemy): the problem -was that a formula for full_helmet did exist but not for b_full_helmet. Since -both helmet's names are "full helmet", the recipe was selected even if using -the ingredient b_full_helmet. This fix adds new formulae for alternative -archetypes with the same name as the base object, and makes the server code -select the matching formula from multiple arch names in the "arch" field. --- -common/readable.c: Use new fields to build messages. -common/recipe.c: Make alchemy work for recipes with multiple base archetypes. -include/{libproto.h,sproto.h}: Update prototype. -include/recipe.h: Split string field arch_name into string list fields - arch_name and arch_names. -lib/formulae: Add archetype names to formulae for all items with same name as - the base object. Also fix a few name mismatches that prevent any object - from matching, and change transmution formulae to normal formulae where - base name does not match archetype name. -server/alchemy.c: Disable debugging code. Make alchemy work for recipes with - multiple base archetypes. -Andreas Kirschbaum 2005-10-31 - -server/c_wiz.c: Don't crash on "create" a living thing that has some part - out of the map. Forbid removing a 'PLAYER' object. -Ryo 2005-10-31 - -random_maps/style.c: Pass correct sorting function to qsort(): the sorted - array contains pointers to strings, not strings. -Andreas Kirschbaum 2005-10-29 - -Fix bug #1236244 (Exp from scrolls): reading a scroll of charm monsters or -meteor swarm now gives exp for use magic item, not summoning or pyromancy. --- -server/spell_attack.c: In mood_change() use skill from scroll, not from spell. - In move_swarm_spell() use the spell "owner" as the object casting the - spell. -Andreas Kirschbaum 2005-10-29 - -include/config.h: DEBUG just been defined, no need to define it again. -include/win32.h: typedef for socklen_t. -random_maps/random_map.c: generate_random_map can use a const char*. -random_maps/rproto.h: fix generate_random_map definition. -server/plugins.c: EVENT_CRASH doesn't really need a parameter, especially if - not initialized :) -Ryo 2005-10-29 - - -Prevent problems (crashes) for large item piles. Now limit nrof to less than -2^31. --- -common/object.c: In CAN_MERGE() pretend that the objects are not mergeable if - the nrof sum would overflow. -common/porting.c: Fix buffer overflow for large numbers in ltostr10(). Also - make n=1L<<31 work correctly. -plugins/cfpython/cfpython_object.c: In Object_SetQuantity() raise an exception - for negative nrof values. -plugins/common/plugin_common.c: Reject negative nrof values in - cf_object_set_nrof(). -plugins/cfanim/include/cfanim_proto.h, plugins/common/include/plugin_common.h: - Update prototype. -server/plugins.c: Treat negative nrof as nrof=0 when setting - CFAPI_OBJECT_PROP_NROF property. -server/time.c: In move_duplicator() limit nrof of created items. -Andreas Kirschbaum 2005-10-29 - -Fix compiler warnings. Most changes do not change the program (remove unused -variables, convert "if(x = y)" into "x = y; if(x)"); a few actually fix -(possible) problems (fix uninitialized variables, fix printf format -specifiers, fix mismatches between signed and unsigned variables, add missing -return and default statements). --- -Affected files: -common/{arch.c,init.c,item.c,map.c,object.c,re-cmp.c,readable.c,region.c, -shstr.c}, crossedit/{Attr.c,Edit.c,Cnv/CnvPath.c}, include/sproto.h, -plugins/cfanim/cfanim.c, plugins/cfpython/{cfpython.c,cfpython_object.c}, -plugins/cfpython/include/{cfpython_map_private.h,cfpython_object_private.h}, -random_maps/{rogue_layout.c,special.c,square_spiral.c}, -server/{apply.c,attack.c,build_map.c,c_misc.c,c_object.c,c_party.c,init.c, -main.c,monster.c,pets.c,player.c,plugins.c,shop.c,skill_util.c,spell_util.c, -weather.c}, socket/{loop.c,request.c} -Andreas Kirschbaum 2005-10-28 - -Fixes my previous commit. Should now properly allocate/deallocate the -faces_sent array. --- -common/player.c: Free faces_sent in free_player(). -include/newserver.h: Add field faces_sent_len to NewSocket struct. -server/player.c: Allocate and copy faces_sent in add_player(). -socket/init.c: Use faces_sent_len in InitConnection(). -socket/loop.c: Initialize faces_sent_len in doeric_server(). -Andreas Kirschbaum 2005-10-28 - -The archetypes now contain more than MAXFACENUM (5000) faces. The following -changes remove the fixed limit of the number of faces. The server now -allocates enough memory to handle all defined faces. -include/newserver.h: Remove MAXFACENUM since it is not used anymore. Change - NewSocket.faces_sent from array into pointer. -socket/{init.c, loop.c}: Allocate/initialize NewSocket.faces_sent. -socket/request.c: Remove safeguard/error message since it depends on - MAXFACENUM. -Andreas Kirschbaum 2005-10-24 - -Code improvements: -common/image.c: Declare some variables and functions as static or const; add - safeguards while loading config files; remove support for numeric face - names (no active archetype or map does use it); in free_all_images() - deallocate memory allocated for smoothing. -crossedit/xutil.c: Remove assignment to nrofpixmaps since ReadBmapNames() - already sets this variable. -include/{global.h, libproto.h, loader.h}: Remove now static variables and - functions. -Andreas Kirschbaum 2005-10-24 - -common/readable.c: Fix out of bounds access to max_titles[] in - init_book_archive(). -common/image.c, include/define.h, include/global.h: Remove unused variables - potion_face and POTION_FACE_NAME. -common/image.c, include/global.h: Remove unused variable blank_look. -Andreas Kirschbaum 2005-10-24 - -Make shout command work in old socket emulation mode. -common/commands.c: Sort all command arrays in init_commands(). -Andreas Kirschbaum 2005-10-23 - -common/item.c - fix spelling mistake -common/utils.c include/libproto.h - new function make_list_like that takes a - string of comma deliminated words, and puts an and in the right place. -include/sproto.h server/apply.c server/shop.c -new function can_pay - checks - that a player can pay for every unpaid item that they are holding before - starting to purchase them. -Brendan Lally 2005-10-21 - -plugins/cfpython/{Makefile.in, Makefile.am}, plugins/cfpython/include/cfpython.h: - Corrected improper regeneration of the function prototypes using - "make proto" for the cfpython plugin. -Gros 2005-10-20 - -plugins/cfpython/{cfpython.c, cfpython_object.c, cfpython_map.c}, -plugins/cfanim/cfanim.c, plugins/common/plugin_common.c, server/plugins.c: - Added support for execution of python_init.py upon initialization of cfpython. - Reduced the console spam produced by various leftover debugging messages. -Gros 2005-10-19 - -plugins/common/include/plugin_common.h: add CF_PLUGIN macro. -plugins/cfpython/cfpython.c: add CF_PLUGIN to exported functions. -plugins/cfpython/include/cfpython_proto.h: fix prototypes. -Ryo 2005-10-19 - -plugin/*, plugin_logger/*, plugin_anim/*, plugins/*, -server/{apply.c, attack.c, c_chat.c, c_object.c, c_wiz.c, gods.c, main.c, -monster.c, player.c, skills.c, swap.c, time.c, timers.c}, include/{plugin.h, -sproto.h}: Replaced the old plugin interface by the 2.0 one. - Upgraded the Python and Animator ones to the new interface. - Removed obsolete Logger plugin. -Gros 2005-10-19 - -server/main.c: Template Maps: Allow %x, %y, and %n in the path to respectively be - replaced with, the x coord, the y coord, and the parent map name. -Alex Schultz 2005-10-18 - -server/{main.c, swap.c}, common/map.c, include/{libproto.h, map.h}: Add support - for random template maps (still need to document, and still need to add support - for template maps created from non-random templates) -Alex Schultz 2005-10-16 - -common/info.c: fix -m1 crashing (34 chars, not 32!), and -m2 crashing under Win32. -include/sproto.h: fix cast_change_ability definition. -server/gods.c: fix cast_change_ability to hide the 'can't recast' message. -server/spell_effect.c: don't stack word of recall forces. Add a 'silent' parameter - to cast_change_ability to not display 'can't recast xx while xx is in effect' -server/spell_util.c: fix cast_change_ability call. -Ryo 2005-10-16 - -include/{global.h, sproto.h, config.h}, server/init.c, common/init.c, lib/Makefile.in: - Add directory in preparation for template (where the template can optionally be - from the random map generator) maps. -Alex Schultz 2005-10-15 - -server/c_wiz.c: make reset command show the names of other players on the -map when it fails. -Brendan Lally 2005-10-14 - -server/c_party.c: fix another obscure party crash bug -Brendan Lally 2005-10-12 - -server/c_party.c: fix a couple of loops that could crash under certain circumstances -Brendan Lally 2005-10-11 - -common/object.c: use canonical_key instead of key, else == always fails. -server/apply.c: drop "on_use_yield" item if required when applying potion, food or poison. - This lets players get empty bottles/vials/... when using potions. -Ryo 2005-10-09 - -Added GetMarkedItem to Python, cleaned compilation warnings. - plugin/plugin_python.c - plugin/include/plugin_python.h - -Moved gps code to Python script, thus cleaning relevant code from server core. - common/item.c: remove item description. - include/define.h: remove gps define. - server/apply.c: remove gps function. -Ryo 2005-10-08 - -Prevent objects from losing inventory when thrown. -include/libproto.h, common/object.c: Add new parameter "free_inventory" to - free_object(). Is set, free inventory as well instead of dropping it on the - ground. -common/object.c: In get_split_ob() prevent inventory of splitted object to be - dropped. -Andreas Kirschbaum 2005-10-07 - -common/object.c: Use object_create_clone in get_split_ob; Fixes things inside - of objects disappearing when throwing. -Alex Schultz 2005-10-7 - -Make damage done by area spells not depend on monster size. -include/sproto.h, server/attack.c: Add additional parameter "full_hit" to - hit_map() and hit_player(). If set, do full damage, if unset scale down by - monster size. -server/{apply.c, attack.c, disease.c, monster.c, player.c, rune.c, -spell_attack.c, spell_effect.c, spell_util.c, time.c}: Change callers to set - "full_hit" parameter according to the attack used. -Andreas Kirschbaum 2005-10-07 - -common/{arch.c, object.c}, crossedit/{Attr.c, Defines.h, Edit.c}, -include/libproto.h, server/{plugins.c, time.c}: Rename functions with - mixed-case names to lower case only. -crossedit/Defines.h: Remove prototypes for nonexisting functions. -Andreas Kirschbaum 2005-10-07 - -server/apply.c: In prepare_weapon() do not lose a reference to the item name. -Andreas Kirschbaum 2005-10-06 - -include/sproto.h, server/shop.c - make value_limit static, change its -arguments to add some checking for NULL pointers -Brendan Lally 2005-10-06 - -server/monster.c: In move_monster() prevent hp/sp overflows for monsters with - very high maxhp/maxsp and very high regeneration rates. -Andreas Kirschbaum 2005-10-05 - -common/treasure.c - prevent crashes with some broken treasure lists. -Brendan Lally 2005-10-05 - -server/shop.c: convert val to sint64 - compilation issues with Win32. Checked with - patch author that it's fine. -Ryo 2005-10-04 - -common/map.c - fix output names in new_save_map --- -server/shop.c - don't assume that shop_specialisation_ratio only gets passed -items with valid types. --- -common/map.c - /actually/ fix pointer issue --- -common/map.c - fix potential issue with NULL pointer -Brendan Lally 2005-10-04 - -common/map.c - fix an inequality in for loop - not sure if this actually -fixes anything of note, but the previous form was definatly wrong. - -common/item.c - big item type table, function to deal therewith -common/loader.l - add player_sold flag -common/map.c - shop related header parsing -include/define.h - define typedata, player_sold flag and some new shop flags -include/libproto.h - define typedata related functions -include/map.h - define new shop headers -include/sproto.h - define new functions in shop.c -server/apply.c - Change shop mat usage message -server/c_object.c - Change display of price estimates -server/shop.c - new functions describe_shop, value_limit, shopkeeper_approval, -shop_greed, shop_specialisation_ratio, substantially alter query_cost_string -and query_cost to make use of these -server/skill_util.c - make bargaining a directly usable skill -doc/Developers/shops - document the above -doc/Developers/maps-technical - add shopheader names, and reference to shops doc -Brendan Lally 2005-10-03 - -server/disease.c: check for value <= 0 as some diseases get dumped on a map - with value == 0 (negative values will eventually underflox, but it'll take time). - -Apply patches courtesy quisar. - #1307880 Allow to add a param to the cast command - #1306987 Allow to summon lower level pet monsters -Modified files: - include/player.h sproto.h - server/c_range.c login.c pets.c player.c spell_util.c -Ryo 2005-10-01 - -common/button.c: explicit cast of stats.food to uint32 when used as sacrifice count. -common/image.c: strlen returns size_t. Remove unused FindFaceName. -common/object.c: obj::count is tag_t. Can't decrease item's nrof by a negative value. -include/libproto.h: fix prototypes. -include/player.h: weight and weight_limit are sint32, so last_ should be the same. -include/sproto.h: nrof is uint32, not int. -server/apply.c: nrof is uint32, can't eat a negative number of items. obj::count is tag_t. -server/c_misc.c: remove unused variable. -server/c_object.c: use uint32 instead of int to specify number of items to drop/put. -server/plugins.c: strlen returns size_t. -server/spell_effect.c: distances are uint32 and not int. -socket/loop.c: remove now obsolete cast of -1 to uint32 for last_weight. -socket/request.c: explicit cast of weight_limit to sint32 when comparing to last_weight. -Ryo 2005-10-01 - -plugin/plugin_python.c: added CF[SG]etWeightLimit. -plugin/include/plugin_python.h: function prototypes. -server/plugins.c: update player inventory if item teleporter from that. -Ryo 2005-09-30 - -lib/collect.pl.in: can now use lines like "attacktype fire electricity poison" instead - of hard to remember numbers. Numbers are still supported, you can even mix both. -Ryo 2005-09-28 - -server/spell_effect.c: In recharge() verify that the object to charge is in - fact a wand or staff. -Andreas Kirschbaum 2005-09-27 - -Changed quest behaviour, now uses its own archetypes. Can change npc/magic ear - text based on quest status. -Warning: not totally tested. Quest start/end works, rest needs some tweaks & fixes. -common/quest.c: new functions, some cleaning. -doc/Developers/quest: update (partially). -include/define.h: new item types. -include/libproto.h: new definitions. -server/c_misc.c: update. -server/monster.c: take into account quest overrides. -server/time.c: markers now start/end tasks if needed. -Ryo 2009-09-25 - -server/c_party.c - fix another party list corruption bug, and a couple of -possible infinite loops -Brendan Lally 2005-09-25 - -Clean some compilation warnings. - common/map.c: remove unused variable. - common/readable.c: strlen returns size_t. - include/object.h: objectlink id should be tag_t since it's the item's "count" field. - server/c_misc.c: strlen returns size_t. - server/c_object.c: strlen returns size_t. - server/c_party.c: remove_party returns void, value not used anyway. Fordward declaration. - server/c_wiz.c: settings.worldmaptiles[x|y] is uint32. - server/gods.c: strlen returns size_t. - server/hiscore.c: maxchar is const. - server/skill_util.c: strlen_returns size_t. -Ryo 2005-09-25 - -include/player.h sproto.h -server/attack.c c_party.c player.c -Fix several bugs in patch #1194964, including one that caused segfaults -one that corrupted the party list, and one that broke party password recognition -remove partyid from the party struct - use party pointers instead -remove functions find_party() and find_party_struct() - no longer needed or used. -make form_party a local function - it is only used by the party form command, -and can't easy be used safely elsewhere. -Brendan Lally 2005-09-25 - -server/build_map.c: remove unused variable. --- -Commit patch #1194964 (party obsoletion) by cavesomething. -Affected files: - include/player.h sproto.h - server/apply.c attack.c c_party.c login.c main.c pets.c player.c - skill_util.c skills.c spell_util.c --- -include/win32.h: turn off harmless warning. -Ryo 2005-09-24 - -Fix bug #744327 ('immortal' monsters): Prevent monsters from loosing hp or sp -if they have negative Con/Pow. For hp, this made some monsters unkillable -because they eventually had negative hp. --- -server/monster.c: In move_monster() do gain hp/sp only if Con/Pow is positive. -Andreas Kirschbaum 2005-09-24 - -Update client inventory view for players dieing in a shop with unpaid items in -inventory. --- -server/player.c: Send removed item to client in remove_unpaid_objects(). Do - not call remove_unpaid_objects() multiple times in kill_player(). -Andreas Kirschbaum 2005-09-17 - -Allow directors/movers to specify a specific arch/name/race. -include/sproto.h: Add should_director_abort to here. -server/{apply.c, time.c}: Add should_director_abort for the logic code - for this change, and add checks for it in director/mover code. -doc/Developers/objects: Add documentation for directors including this - change, and update mover documentation. -Alex Schultz 2005-09-15 - -Make untriggered TIMED_GATEs work again. -server/apply.c: Clear object speed only for connected objects. -Andreas Kirschbaum 2005-09-13 - -This change is mostly cosmetic and a preparation for the new movement -type code. Basically, it just changes the old object movement_type -field to attack_movement. This makes sense because that is what that -field is called in saved and loaded objects/archetypes, and thus -frees up that name for the new movement code. --- -common/button.c: field name change -common/loader.{cl}: field name change -doc/Developers/objects: Add section on new movement types, update old - documentation to note it is attack_movement and not movement_type - field that is important. -include/object.h: field name change. -server/attack.c: field name change. -server/monster.c: field name change -server/pets.c: field name change -server/skills.c: field name change. -server/spell_attack.c: field name change -server/spell_effect.c: field name change -MSW 2005-09-12 - -Allow a DM to cast spells and prayers in no-magic/no-prayer areas. Add new -command "wizcast" to toggle this setting. -common/loader.l: Set/reset FLAG_WIZCAST for flag "wiz". -common/loader.c: Rebuilt -include/define.h: Add new flag FLAG_WIZCAST; remove unused flag - FLAG_NO_PRETEXT. -lib/Makefile.am: Add new help file for wizcast. -lib/Makefile.in: Rebuilt. -plugin_animator/plugin_animator.c: Set/reset FLAG_WIZCAST in animate_one(). -server/apply.c: Always allow FLAG_WIZCAST to enchant weapons and armour. -server/c_misc.c: Add new function command_wizcast(). -server/c_wiz.c: Set/reset FLAG_WIZCAST when entering/leaving DM mode. -server/commands.c: Add "wizcast" command. -server/spell_effect.c: Always allow FLAG_WIZCAST to use the spell probe. -server/spell_util.c: Always allow FLAG_WIZCAST to cast spells and prayers. -Andreas Kirschbaum 2005-09-09 - -server/monster.c: Set FLAG_READY_SKILL in monster_check_apply() for monsters - with skills. This fixes hill giants and trolls not throwing boulders - anymore. -server/monster.c: Add missing "break" statement in monster_can_pick(). It did - prevent some monsters from picking up scrolls. -Andreas Kirschbaum 2005-09-08 - -common/{anim.c, image.c, los.c, map.c, porting.c, treasure.c}, -include/define.h, random_maps/treasure.c, -server/{apply.c, c_misc.c, c_object.c, c_wiz.c, commands.c, daemon.c, -hiscore.c, init.c, login.c, player.c, plugins.c, resurrection.c, weather.c}, -socket/{init.c, item.c, loop.c, lowlevel.c}: Use LOG() for error messages and - debug output instead of stdout/stderr. Include filename in error messages. -server/resurrection.c: Fix error message in read_player(). -Andreas Kirschbaum 2005-09-04 - -socket/item.c: Make selecting objects from ground view work again. -common/object.c: Fix update of player's ground view in insert_ob_in_map(). - Previously the ground view was not updated after applying exits or after - being hit by a spell. -Andreas Kirschbaum 2005-09-03 - -Fix bug #1102991 (Duplicate grapical display of the same monster): -doc/Developers/protocol: Change semantics of map_scroll command to what the - server actually does: big faces outside the viewable area are cleared. Add - newmap command. -include/newserver.h: Increase MAX_HEAD_OFFSET to 8 (the size of a Greater - Demon). -socket/request.c: - MapRedrawCmd(): Disable mapredraw command; it is now just ignored. - MapNewmapCmd(): Clear map state before sending newmap command. - check_head(): Remove redundant code. - update_space(): Move invariant condition out of loop to speed it up. Fix - uninitialized variable. Remove redundant condition. Fix off-by-one array - access. - update_smooth(): Remove unused code. Properly send cleared big faces. - draw_client_map(): Remove duplicate check. Properly clear newly visible - area when scrolling the map. -Andreas Kirschbaum 2005-08-31 - -common/{loader.l, map.c, object.c}, include/{define.h, map.h, object.h}: - Accelerate map loading (a lot) and map saving (a bit) codes to improve map - transition experience. -common/loader.c: Rebuilt. - -Add (slightly reformatted) patch #1276121 (Crossedit: handle big faces) by - Kevin Rudat: -crossedit/CrEdit.c: UpdatePosition(): Use new drawing subroutines. -crossedit/CrFace.c: DrawObject(): Use new drawing subroutine. -crossedit/CrList.c: Redisplay(): Use new drawing subroutine. -crossedit/CrUtil.c, crossedit/CrUtil.h: Remove FaceDraw(), add DrawFacePart() - and DrawPartObject(). -crossedit/png.c: Upload the whole image, not just the top-left corner. -Andreas Kirschbaum 2005-08-30 - -Fix bug #1256173 (Magic drain not exploding head): -server/spell_effect.c: Prevent mana transfer to/from caster himself; also - create fireball for overcharges resulting from sucking mana. -Andreas Kirschbaum 2005-08-30 - -Fix bug #1059537 (Chainmail mutations): -common/loader.l: Remove code that "fixes" broken item names by removing a - leading material name. This effectively renames "mithril chainmails" into - "chainmails". -common/loader.c: Rebuilt. -Andreas Kirschbaum 2005-08-29 - -Fix player weapon speed/speed. There are a few bugs this fixes: -1) when player hit something, a has_hit field was set to true, to denote - they hit something and to use weapon speed. However, this was only - cleared when player issued a command. Thus, if you are running - and hit something, you'd continue at weapon_speed pace until you - needed to change direction. -2) Because has_hit was used, this basically put in a 1 tick lag - you'd hit - something, but not until objects were processed and speed given would - you get your extra speed. Likewise, after you killed something, you'd - get your burst of speed for the next tick also. --- -server/main.c: Clear has_hit, change function to only do bounds checking, - not actually do weapon_speed adjustments. -server/player.c: Give player speed boost when they hit something. -MSW 2005-08-28 - -Add patch #1274385 by Kevin Rudat to make crossedit draw floors on tiles with -items. -crossedit/CrEdit.c: Add call to update_position() in UpdatePosition(). -Andreas Kirschbaum 2005-08-28 - -Add patch #1271417 by Kevin Rudat to stop crossedit losing regions. Patch is -slightly modified to properly handle all map fields. -crossedit/Edit.c: Copy all map fields in MapMoveScrollResize(). Do not add a - msg header to already existing maps. -crossedit/crossedit.c: Call init_regions() at program initialization. -Andreas Kirschbaum 2005-08-28 - -socket/init.c: Make setsockopt(REUSEADDR) work if using gcc in Ansi C mode on - Linux. -Andreas Kirschbaum 2005-08-28 - -common/map.c: Change default values for reset_timeout, enter_x, and enter_y - map headers to zero. In set_map_reset_time() use MAP_DEFAULTRESET if - reset_timeout is zero. This change prevents crossedit from adding these - headers by just loading and saving a map. -include/config.h: Add MAP_DEFAULTRESET. -Andreas Kirschbaum 2005-08-27 - -server/rune.c: Fix crash if casting disarm out of map bounds. -server/spell_effect.c: Fix crash if casting polymorph out of map bounds. -Andreas Kirschbaum 2005-08-25 - -Apply patch 1200555 - addition of key/value lists which allows arbitrary -storing of data in objects - see doc/Developers/key-value for more -information ---- -loader.l, loader.c: Add add_key_value() function which parses the unknown - line in the object/archetype. Update get_ob_diff() to make differences - for the key/value lists. -common/object.c: Add functions for properly comparing the key/value lists, - setting and getting the vaues, clearing values upon freeing of object, - etc. -doc/Developers/Makefile.am: Add key-value file. -doc/Developers/key-value: Documentation of this feature. -include/libproto.h: Rebuilt -include/object.h: Addition of key_value struct, addition of key_values - field to object. -MSW 2005-08-22 - -socket/request.c: Fix range checking of toggleextendedtext parameters. -Andreas Kirschbaum 2005-08-17 - -The following fix code that basically does "for(x = pos-5; x < pos+5; x++)". -This is not correct because it includes "pos-5" but not "pos+5". -common/los.c: Make lighted distance equal in all directions. -server/disease.c: Make infection distance equal in all directions. -server/monster.c: Make lighted distance equal in all directions. -Andreas Kirschbaum 2005-08-17 - -Add patch by Kevin Rudat for applyable but non -pickable objects to have item items. -doc/Dvelopers/objects: Update item types. -socket/item.c: Use the head of any objects we send. Should generally - only be an issue for objects on the ground, as currently there is no - large objects players can pick up. Also fix up some of the formatting/ - indenting in this file. -MSW 2005-08-16 - -server/attack.c, include/define.h, common/loader.l doc/Developers/objects: -Add a flag FLAG_IS_LIGHTABLE, to make lightable objects such as lanterns -able to work again -lib/archetypes: recollect archs -Brendan Lally 2005-08-16 - -server/build_map.c: Add support for buildable signs, and magic mouths/ears. -Alex Schultz 2005-08-15 - -lib/Makefile.am, lib/Makefile.in: Actually install help file for showpets. -common/living.c, include/living.h: Make global arrays really const. -Andreas Kirschbaum 2005-08-15 - -server/gods.c: Fix crash for monsters without appropriate god. -server/gods.c: Add missing braces around body of if statement. -Andreas Kirschbaum 2005-08-14 - -NPCs instead of being given a random god are for preference given the god that -likes their race. If one can't be found, then we fall back to a random god. -Affected files: -server/gods.c include/sproto.h -Brendan Lally 2005-08-12 - -String fields in structures using add_string are now const char*. Functions in - shstr (add_refcount, add_string, free_string, ...) now take/return const char*. -More argument replacing from char* to const char*. -Fixed a potential string corruption in recipe.c (when dumping) and readable.c (was - using strtok on a add_string-ed string, when strtok changes argument). -Fixed a few type mismatch on qsort calls. -Global char arrays (messages and such) are const char* too. -Removed unused typedefs / structures. - -Affected files: - common/anim.c image.c info.c item.c living.c object.c quest.c readable.c recipe.c - shstr.c treasure.c - include/arch.h commands.h define.h face.h funcpoint.h global.h god.h libproto.h - living.h map.h material.h object.h player.h race.h recipe.h skills.h sproto.h treasure.h - random_maps/random_map.h reader.[cl] style.c - server/apply.c attack.c c_object.c c_range.c c_wiz.c gods.c - main.c monster.c pets.c player.c plugins.c resurrection.c shop.c skill_util.c skills.c - spell_attack.c spell_effect.c time.c timers.c - socket/item.c - -Ryo 2005-08-12 - -Arguments are now const char* instead of char* when available. This ensures -the variable is not changed in random places. -Affected files: - common/porting.c quest.c readable.c recipe.c re-cmp.c shstr.c treasure.c - include/libproto.h sproto.h win32.h - server/c_misc.c c_object.c c_party.c c_wiz.c egoitem.c gods.c hiscore.c init.c login.c - main.c monster.c player.c resurrection.c rune.c shop.c skill_util.c skills.c - spell_effect.c spell_util.c win32.c -Ryo 2005-08-12 - -Add help for showpets, and update help for killpets - lib/help/{showpets, killpets} -Add a new command 'showpets' to give a numbered list of the pets that a player -controls. These numbers can be passed to showpets to give more detail about one -pet, or they can be passed to killpets to control which pets are killed. -Also allow killpets to take a name as an argument. Affected files: - include/sproto.h - server/{c_misc.c, commands.c} -Make random maps take the region of the map creates them. Affected files: - random_maps/{random_maps.h, random_maps.c} - server/main.c -Brendan Lally 2005-08-11 - ------------------------------------------------------------------------------- -Changes for 1.8.0: - -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 weather 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 -shield. - 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 functions - used from the plugin are hooked, instead of being called directly. This fixes bugs - under Windows, and simplifies compilation. Also, many new callbacks were defined. -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 put 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 object.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 for 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 'other_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 files: - * 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 files: - * 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 files: - * 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 - ------------------------------------------------------------------------------- -Changes for 1.7.0: - -configure, configure.ac, include/autoconf.h.in: Update for - version 1.7.0. Add check for libz - needed by libpng (at least on my - system), which is needed for the editor. -MSW 2005-01-23 - -common/object.c: Change CAN_MERGE() from an inline function, since - it calls itself and inline functions are not supposed to do that. - Update type check in insert_ob_in_map() to check against defined - type (EXIT) instead of hardcoded integer value (66). -crossedit/xutil.c: Update to just include Defines.h, which then includes - all the other necessary files, including global.h. -include/global.h: Add #ifdef checks for the UINT*_MAX types, as some - systems already define these values, which results in a redefinition - error. Also fix up // style comment. -include/shstr.h: Include proper cast in TOPBIT definition. -server/main.c: Don't display 'xyz left the game' messages if the player - is only at the get name or get password prompt. Prevents possible - spoofing of that message. -server/player.c: Clean up formatting of check_pick() function. If player - is using newpickup to pick up booze, also pick up poison unless - they know it is cursed. -socket/request.c: AskSmooth() - change buffer type to uint8 so that - it matches what the SockList structure wants. -utils/scores.pl.in: Use skill_praying to find players god, and not the - deprecated experience_wis object. -MSW 2005-01-23 - -aclocal.m4, configure: Add check for python 2.4. -common/re-cmp.c: Fix improper comparison *(str+1) instead of str+1 -server/login.c: don't allow null names. -server/main.c: Disable logging of removed objects - filling up log - files on archmage of all the errors. -server/player.c: Fix improper initialization of attacktype in - for loop. Give players max grace, sp when they die - also, if they - are near starvation, give them a bunch of food. -server/spell_effect.c: Put cap on duration of godly retribution - it - can otherwise last so long that if a player is killed by it at - their savebed location, spell could still go on after players - temporary immunity ends. Retribution as increases in damage, - so no need to really increase damage and duration to really high - amounts. -server/spell_util.c: In fire_arch_from_position(), and check that - player isn't casting spell on top of wall - fixes for many - spells, including ball lightning. -server/time.c: Change comparsion on return of get_map_flags() from - == P_OUT_OF_MAP to & P_OUT_OF_MAP - keeps syntax consistent. -MSW 2005-01-11 - -plugin/plugin_python.c, plugin_animator/plugin_animator.c, -plugin_animator/plugin_animator.c: Use script return value set by - CFPython.SetReturnValue(): access to stack was off by one. Do not return a - pointer to a local variable on the stack. -plugin/plugin_python.c, plugin_animator/plugin_animator.c: Handle all defined - events. -Andreas Kirschbaum 2005-01-10 - -server/spell_attack.c: apply patch #1096921 courtesy Salathar. - Charmed monsters now lose the 'generator' flag, to prevent - things like mice outbreak in bigworld maps. -Ryo 2005-01-07 - -plugin/plugin_pyhton.c, plugin/include/plugin_python.h: Remove obsolete - functions: SetGender, SetRank, SetAlignment, SetGuildForce, GetGuildForce, - CreatePlayerForce, CreatePlayerInfo, GetPlayerInfo, GetNextPlayerInfo, - SetPreviousObject, SetNextObject. -plugin/plugin_python.c, plugin/include/plugin_python.h: Add missing attack type - wrapper functions, function CFPython.SetDamned(), wrapper functions for - missing cost flags, and wrapper functions for event types. -plugin/plugin_python.c: Add an optional parameter to CFPython.SetName() to - specify name_pl as well. Always set name_pl. -plugin/plugin_python.c: Fix a buffer overflow in CFPython.RegisterCommand(): - allocated memory was not sufficient to hold the trailing '\0'. -plugin/plugin_python.c: Use #define constants. -plugin/include/plugin_python.h, plugin/plugin_python.c, -plugin_animator/plugin_animator.c, server/plugins.c: General cleanup - merge - duplicate code, remove debugging code, rename variables, rename C function - names to match the Python function name, use hook functions where - appropriate. -include/sproto.h, plugin/plugin_python.c, server/plugins.c, server/shop.c: - Use uint64 type for variables holding money. Use Python long integers to - pass these variables to/from the Python plugin. -Andreas Kirschbaum 2005-01-07 - -plugin/plugin_python.c: Check values passed in from the Python code; generate - proper Python exceptions for invalid values. -plugin/plugin_python.c, plugin_animator/plugin_animator.c: Make sure all - fields on the stack are initialized. Prevent stack overflow: check was one - off, causing a buffer overflow. Decrement stack pointer in error case. -Andreas Kirschbaum 2005-01-06. - -common/regexp.c: Fixed couple flaws in regexp handling. First, there was an - off by one error in the handling of matches (if the match was for example - eureca, player could just say eurec, and it would treat that as a valid - match). Second case was that the regular expression logic would not - try comparing the rest of the passed in string after a partial match - - In the eureca case above, if the passed in string was 'where is eureca', - after matching the first e (in where), it then fails to match the - next letter and would give up. It now tries comparing the rest of - the passed in string with the regex (so after that failure, it - will try to match 're is eureca'. -server/apply.c: Add missing 'return 0' to shop_mat code that is needed - to prevent unpaid objects from teleporting out of the shop. Also - extend code so that non living objects can't use shop mats. -server/player.c: Insert force into the player when they die making them - immune to any spells on the space they reappear on - this prevents - multiple deaths if there is large spell effect going on in the - savebed location. Duration of force should be long enough for most - spells to run their course, but no so long that the player can use - it for much of an advantage (plus, killing yourself to get such - an advantage seems odd, and the force only makes the player immune - to the attacktypes currently on the space) -server/spell_effect.c: Fix spell casting walls (lighting wall, - firewall, etc) in that the spell object they cast was not being - inserted, resulting in the walls not doing anything. -MSW 2004-12-28 - -Applied patch (bug misc/zoo2) by Lalo -server/time.c: creators can now create multi part objects. -Applied patch 1086102 by Salathar: -server/attack.c: If player kills another player, add (pk) to the death - message. -Applied patch 1086103 by Salathar: -server/move.c: If player pushes another player, send message to both players - that pushed happened. Previously, when pushing another player, the pusher - wouldn't get any notice. -MSW 2004-12-28 - - -Applied patch 1001079 - make alchemy books say what skill & equipment - is needed - by Kevin Rudat. -common/readable.c: Update code that generates book title, contents - to denote what skill and equipment is needed. -random_maps/{random_map.c, reader.l, reader.c}, server/main.c: - Remove generate_treasure_now as an option - for random maps - none are using delayed treasure, and IMO, if someone - did, it would horribly break things, so it should never be used - given - that, no reason to leave the code there. -server/main.c: Add additional debugging for process events on removed - objects - trying to track down occasional disease crash. -server/time.c: Fix crash in move_player_mover() - it was never map tile - aware, but even more so, appears to have always been broken if the - player move tried to push the player off the edge of a map. Check - for out of map condition, as well as make it map tile aware. -MSW 2004-12-28 - -Applied patches #1086095 and 1088385 courtesy Salathar: - common/map.c: hidden DM is non blocking - server/c_chat: can't do emotions towards hidden DMs. Player's emotions - always displayed in split window. - server/c_wiz.c: add an extra player leave message when DM hides - server/main.c: don't display leave messages for hidden DM when connection timeout -server/c_party.c: party password max length is 7, due to buffer size. - (i think it was a patch from Casper?) -Ryo 2004-12-25 - -server/c_wiz.c: Remove item when 'free' by DM if not removed, avoiding crash. -Ryo 2004-12-22 - -server/c_party.c: Make party passwords of 8 characters work, disallow longer - passwords. Based on patch #1080096 from Casper. - Correct help message for party commands. -Andreas Kirschbaum 2004-12-10 - -plugin/plugin_python.c: change 'long long' so 'sint64' (typedef). -Ryo Saeba 2004-11-29 - -common/object.c: apply patch #1066665 courtesy Salathar for exits with - blockview 1. -lib/formulae: apply patch #1064643 courtesy Salathar to fix broken formulae. -lib/wizhelp/speed: remove file, command changed name. -lib/wizhelp/server_speed: updated 'speed' command help. -server/c_wiz.c: apply patch #1063051 courtesy Salathar to update muzzle message. -server/commands.c: apply patch #1052224 courtesy Casper to change - 'speed' to 'server_speed' as name is ambiguous. -Ryo Saeba 2004-11-25 - -common/loader.l: Fix passed size in FAST_SAVE_LONG() - was one too long, - causing truncated diffs after "dam_modifier" entry. -Andreas Kirschbaum 2004-11-15 - -This commit adds the functionality of patch 991916, although the patch -as submitted was used as a baseline to start from. -include/sproto.h: rebuilt -server/c_chat.c: Rename command_chat() to command_tell_all() which takes - a few more optional parameters. Add command_shout() and command_chat() - that invoke command_tell_all() with the appropriate changes. -server/commands.c: Add chat to list of command table. -MSW 2004-11-08 - -plugin/plugin_python.c: Run the script python_init.py right after - initializing the interpreter. -Andreas Kirschbaum 2004-10-21 - -server/c_party.c: actually warn party members of password change. Notify when - someone joins party. -Ryo 2004-10-21 - -plugin/plugin_python.c, plugin/include/plugin_python.h, server/plugins.c: - Fix comments, change whitespace. -Andreas Kirschbaum 2004-10-19 - -Fix some bugs I introduced in my last commit. -common/map.c: Add back in call to sum_weight that got removed when removing - the object checking code. -common/treasure.c: Have fix_generated_item() blank out the randomitems - field after it has created treasure. -server/apply.c: Only clear randomitems after create_treasure() - don't - presume it should get blanked out for other reasons - with change - to treasure.c above, this should be more reliable and fix starting - skill issue, as randomitems was getting blanked out for CLASS object. -server/main.c: Change processing of players a little - found crash where - autosave was called for a removed player (map had got swapped out) - - don't do autosave logic if player is removed. Move the autosave code - to after the players action, so that can just have a single check of - removed status. -MSW 2004-10-17 - -include/sproto.h, server/egoitem.c: Change create_artifact() to return whether - the artifact was created. -server/plugins.c: Change CFWCreateArtifact()/HOOK_CREATEARTIFACT to return - whether the artifact was created. -plugin/plugin_python.c: Define new function create_object() to create - objects. Use this function to fix CFPython.CreateObjectInside() and - CFPython.CreateObject(): creation of artifacts does work now. -plugin/plugin_python.c: Fix CFPython.GetNextPlayerInfo() to work with long - force names. Remove duplicate variable initialization. -server/plugins.c: Remove the use of malloc() in initOnePlugin(). -Andreas Kirschbaum 2004-10-18 - -plugin/plugin_python.c, plugin_animator/animator_box.c, -plugin_animator/plugin_animator.c, plugin_logger/arena.c, -plugin_logger/plugin_logger.c: Use HOOK_FREEMEMORY to free memory allocated - by HOOK-functions. Fix memory leaks. -plugin/plugin_python.c, server/plugin.c, plugin_animator/animator_box.c: Fix - some more mismatches between plugin interface and implementation. - CFPython.Get/SetSkillExperience() use 64-bit exp values now. - CFPython.CastAbility() works again. -Andreas Kirschbaum 2004-10-16 - -plugin/plugin_python.c, server/plugin.c: Fix type mismatches between plugin - interface and implementation. -plugin/plugin_python.c, server/plugin.c: Add/remove "static" to/from some - variables. Fixes a memory leak in CFPython.SaveObject(). -plugin/plugin_python.c: Fix reference counting for Python objects. -Andreas Kirschbaum 2004-10-15 - -common/living.c: Fix exp functions to use the player objects expmul - value when determining level gains, and not the skills. Also, - fix bug where players last hp/sp/grace gain I think was being - re-rolled when player gained level in skill. -common/loader.l, loader.c: Add better recording of non existant objects - (no archetype for them) in maps. Also, handle such objects in - players inventories properly (which is to just discard them) -common/map.c: Add better logging about discarded archetypes. Since the - loader now deals with objects without archs in inventories, that - code doesn't need to be in the server. -common/object.c: copy_object() was not properly nulling out the - next field in the event object, pointer to event list was also - incorrect, causing events to not be copied properly. -doc/spoiler-html/spoiler.html: Rebuilt. -server/apply.c: Apply patch by MT that fixes problem of entire inventory - not being copied properly. Fix problem that objects in creatures - were not having any sub treasure created (eg, put a pyro_book in - a monster on the map, and the pyro_book wouldn't have a spell in - it) - now we make sure we process inventory objects as well as map - objects, creating treasure as needed. -server/monster.c: Reverse order of cast_spell() and drain_rod() in - monster_use_range() - drain_rod() should go first, because - case_spell() can in rare cases destroy the rod. -MSW 2004-10-14 - -server/c_misc.c: Add natural skin resistances to 'statistics' output for - dragon players. -Ryo 2004-10-10 - -common/readable.c: Apply patch by Kevin Rudat to add some alchemy book names. -common/readable.c: Apply patch by Kevin Rudat to fix buffer overrun while - generating book titles. -Andreas Kirschbaum 2004-10-09 - -include/sproto.h: Add function prototype. -server/c_wiz.c: Add 'command_stack_clear' to clear DM item stack. -server/commands.c: Link function to function array. -Ryo 2004-09-26 - -server/player.c: Allow to 'reply' to players that logged out but did not yet - drop the connection. Now reply works like other communication commands. -common/utils.c: Fix random_roll() and die_roll() to not return out of range - values. -include/define.h: Add parentheses around arguments of FABS macro. -Andreas Kirschbaum 2004-09-19 - -server/rune.c: Prevent creation of level 0 runes. Re-enable runes to cast - multiple spells. -Andreas Kirschbaum 2004-09-14 - -include/config.h: fix Win32 log path so there actually is a log. -plugin/plugin_python.c: uint doesn't exist under Win32, use uint32 instead. - -Patches from tracker, courtesy Kurtat: -patch 1022942: Random documentation updates - doc/SurvivalGuide - doc/Developers/programming_guide - doc/Developers/protocol - lib/settings - lib/help/cast -patch 1022973: Words for numbers in spellbook description - server/c_object -Ryo 2004-09-12 - -server/attack.c: Pass in skill (string) to change_exp instead of skop->skill - - skop can be null, resulting in a crash here. In addition, other calls - to change_exp in this function use the skill string, so it is good to - be consistent. -MSW 2004-09-09 - -server/c_wiz.c: Don't forget to skip blanks after reading item number or stack - position. Works better for commands like patch :) -Ryo 2004-09-06 - -common/object.c: Fix insert_ob_in_map so right coordinates and map - value are used on GET_MAP_OB call - was using values before changes - for tiling were applied. -MSW 2004-09-02 - -server/player.c: allow to 'talk' to players with ambiguous names: use a - perfect match even if other partial matches exist. -Andreas Kirschbaum 2004-08-30 - -include/define.h -server/shop.c - add new flags F_IDENTIFIED and F_NOT_CURSED to query_cost() to pretend - the item to be identified/not cursed or damned. -server/alchemy.c - fix possible abuse of shadow alchemy: do not allow the generated items - to be more valuable than the ingredients when using alternate recipes. -Andreas Kirschbaum 2004-08-24 - -common/map.c: Add extra check to make sure variable is set before calling - strcmp - this can happen if the map file that is being loaded is - 0 bytes - without this, the server would crash. -MSW 2004-08-23 - - -server/disease.c: fix crash when casting diseases on tiled maps. -server/move.c: fix problem with multi-tile monsters and pass thru walls. -server/spell_effect.c: fix magic walls sometimes appearing in wrong place. -Andreas Kirschbaum 2004-08-20 - -common/loader.l, loader.c: in check_loaded_object() - don't give spell - objects inventory if we are in the arch_init phase. When loading objects - in common loader routine, if object doesn't have arch, set the object - name to the arch name so that it is more meaningful than 'singularity'. -common/map.c: If object has inventory, check to make sure the inventory - objects have an archetype set - if not, remove and free the object - - objects without archetypes causes crashes. -MSW 2004-08-17 - -server/apply.c: fix_auto_apply() - add some debugging statements, as I've - seen crashes caused by monsters with scrolls with no spells - need to - figure out how those are showing up. -server/c_wiz.c: command_kick() - fix occasional crashes when player isn't - on any map when kicked. command_create() largely rewritten so it doesn't - crash the server on any malformed values passed in, add some more features - so it should be easier to create objects. -MSW 2004-08-16 - -server/apply.c: better to not create a treasure for spellbooks that already have - something in inventory. Else you get 2 spells in the book, which then - mutates when loading (first spell is the book's spell, and order changes every - load/save...) -Ryo 2004-08-16 - -Those changes mostly add an item stack for DMs. It makes it easier to dump & patch & -manipulate items without having to copy numbers all the time. -Basically, you can use '$x', meaning item at position x on stack. Or even -omit argument, defaulting to stack top. -When using an object number, it gets stacked automatically (up to 50 items). -Also add a 'diff' command, letting the DM see the result of 'get_ob_diff' on items, -to spot differences easily. - -common/player.c: free item stack when freeing player structure. -include/player.h: add item stack to player structure. -include/sproto.h: new functions for stack. -include/win32.h: missed commit for 1.6.1 version. -server/c_misc.c: push item dumped with 'deumpbelow' on dm stack. -server/c_wiz.c: add stack functions. Use'em on patch, create, remove, free, and such. - Add 'diff' command. -server/commands.c: add new stack & diff commands. -Ryo 2004-08-15 - -server/spell_attack.c: fix mood_change when spell has no attacktype. - In this case, do a specific saving throw, to ensure a level 1 player - can't charm a level 125 monster. -Ryo 2004-08-14 - -random_maps/exit.c -random_maps/random_map.c -random_maps/random_map.h -random_maps/reader.l -random_maps/rproto.h -random_maps/special.c -random_maps/wall.c - added fix for random maps with single arch walls, - added level indicator on random map signs - added new parameter 'exit_on_final_map'- see documentation -TM 2004-08-07 - -include/plugin.h -plugin/plugin_python.c -server/c_wiz.c -server/plugins.c - add event hooks for Kick and Muzzle(toggle_shout) commands. - fix CFSetQuantity by changing the int to uint and remove 100000 item limit. - pythonplug now looks for event scripts in maps/python/events. -TM 2004-08-02 - -server/skills.c: xp for writing is now multiplied by skill level, to - make it possible to level. -Ryo 2004-07-17 - -common/loader.c: add #ifndef for non-existant Win32 header -include/win32.h: #define vsnprintf _vsnprintf to fix linking issue -Ryo 2004-07-03 - -server/skill_util.c: Fix skills command so that it properly displays - percentage of permanent exp. -server/time.c: Modify move_arrow() so that it removes thrown objects - with no inventory. -MSW 2004-06-22 - -socket/info.c: Replace sprintf() calls with snprintf() - got metalforge - crash with apparent buffer overun - going to snprintf should prevent - the problem in the future. -MSW 2004-06-21 - -server/c_wiz.c: for command_create() - check to see if 'of' parameter - is a spell archetype name, and do the right thing if it is. This - allows things like 'create rod_heavy of spell_large_lightning'. - Note that the command_create is still a seriously broken function - in many regards. -server/rune.c: Fix write_rune() when trying to find the spell in encase - in the rune - assignment was incorrect, so it always took the last - matching spell in the players inventory, not the best matching spell. -server/spell_util.c: Change the call to prayer_failure() so that its - potency is based on how badly short the player is short of grace. Eg, - if only 1 point short, potency of 1. This changes from before where - the potency was always the difference in mana. -MSW 2004-06-17 - -server/attack.c: Fix hit_with_arrow() so that it uses the proper map - when inserting the arrow. -server/c_wiz.c: Add note about brokeness of command_create() -server/spell_effect.c: execute_word_of_recall() - don't attempt recall - if player isn't on any map. -MSW 2004-06-15 - -common/object.c -include/define.h -include/player.h -include/sproto.h -server/attack.c -server/c_object.c -server/player.c -server/shop.c -socket/item.c -socket/loop.c -socket/request.c: Remove explicit calls to - esrv_update_item(UPD_WEIGHT, pl, pl) for player objects. Instead - send the new weight whenever it changes. -Andreas Kirschbaum 2004-06-13 - -server/spell_attack.c: cast_destruction() - have it change the skill - for the caster so that exp is properly awarded. -common/object.c: insert_map_in_ob() - remove CAN_MERGE checks after the - map translation - otherwise, we can have bogus coordinates - that are used for GET_MAP_OB. -random_maps/style.c: pick_random_object() - have it return null object - (and probably crash) instead of getting into an infinite loop. -server/c_wiz.c: command_kick() - check FLAG_FREED of player. Remove all - the broken skill/exp object granting code in command_possess() - this - is probably still a broken function. -common/item.c: describe_monster() - if the creature/player is stealthy, - mention it when the object is described. -common/loader.l, loader.c: Fix passed in size to get_ob_diff() - was one - to long, causing string corruption. -server/spell_attack.c: mood_change() - fix get_map_ob call - wasn't using - correct coordinate variables, resulting in crash. -MSW 2004-06-10 - -server/c_party.c: gsay improvements, courtesy Katia. -Ryo 2004-06-09 - -server/commands.c: Disable 'possess', that crashes server. -server/monster.c: Make monsters use wands/horns/... again. Also make'em - ignore DMs all the time (even when not invisible). -server/skill_util.c: Fix the change_skill when called for monsters. -Ryo 2004-06-06 - -server/c_misc.c: Add sum_weight() call to fix_me command so that players - weight is properly recalculated. -server/skills.c: Fix up attempt_steal() so that it doesn't improperly - remove object from target when person doing the stealing can't pick - it up. -server/spell_attack.c: Set maxhp properly, so multipled fireballs, etc - can be going off at the same time. -server/spell_effect.c: Fix up cast_create_missile() so more esoteric - missiles can be created. -MSW 2004-05-31 - -include/sproto.h: new 'dmhide' command. -server/commands.c: new 'dmhide' command. -server/c_wiz.c: added 'dmhide' command. Player becomes DM, and 'hide's immediately. Others - only see him/her leave the game, they don't know s/he's DM. -Ryo 2004-05-24 - -include/book.h: Increase the size of BOOK_BUF, so inscribed books can hold - more informatin. -lib/Makefile.am, lib/Makefile.in: Add the 'rename' to the list of help - files. -lib/archetypes: update the glyph/rune spells to have proper face. -lib/bmaps, lib/crossfire.* - add glyph.111 image. -server/gods.c: Modify tailor_god_spell() to look harder to find a god - - necessary for glyph spells. -server/spell_attack.c: Give players 50% of exp for monsters they charm. -MSW 2004-05-19 - -common/object.c: Correct get_search_arr() to return a proper permutation. -Andreas Kirschbaum 2004-05-18 - -server/main.c: Have process_events display information from dumped object. - also, more refinement on checking of object status. -MSW 2004-05-16 - -server/build_map.c: change 'player' variable to 'pl', since a player - structure already exists. Also fix disappearing pedestals on non-unique - maps (put'em over floor, they are visible but hey, can't have everything :p) -server/c_wiz.c: fix learn_spell. -Ryo 2004-05-16 - -server/main.c: freeing removed objects appeared to have more of a - consequence than expected - only remove the object if it was on a map - (op->map). It turns out that the artifact code uses objects that - are removed to store what the new object is. -server/spell_effect.c: Fix cast_create_food() to call - find_archetype_by_object_name() instead of find_archetype(). In this - way, players can use invoke without having to know the archetype name. -server/c_wiz.c: Modify command_banish() to record dm name, player name, - and date of command. -server/acinclude.m4: Patch by acinclude.m4 to add python 2.3 support. - Rebuilt files (Makefile.in, aclocal.m4, configure, configure.in). add - config.guess, config.sub since automake now includes them in the Makefile.in - file. -MSW 2004-05-15 - - -Added a new item type: ground positioning system (GPS). -This lets a player know his/her location in the world. -Only works in 'world_xxx_xxx' maps. - -include/define.h: add new item type, 'GPS' (162). -include/sproto.h: add new function, 'apply_positioning_system'. -server/apply.c: handle new item type. -Ryo 2004-05-15 - -server/spell_util.c: SP_level_spellpoint_cost() - never have a spell - cost 0 spellpoints due to attunement or other bonuses - spell always - cost at least 1 sp/grace. -server/main.c: Fix process_events() so it doesn't purge removed players - from the list - players get in the removed state at play again - prompt. -server/apply.c: Fix fix_auto_apply() so we don't generate additional - spells for spellcasting objects that already have them (regression - from fix from 5/11 below) -MSW 2004-05-13 - -server/pets.c: Fix summon golem, summon pet monsters so that the summoned - monsters are not worth any exp. Fixes bugs were players could - summon monsters and then kill them. -server/skills.c: Fix do_skill_detect_curse() and do_skill_detect_magic() - so that they don't process objects the player is incapable of picking - up (eg, floors). Fixes experience exploit. -server/apply.c: modify fix_auto_apply() so that it properly generates - items for creatures that start with objects in their inventory. -MSW 2004-05-11 - -server/spell_util.c: Fix cast_spell() so that failed spells (due to - encumberance or other penalties) still cost some random number of grace/ - mana points. -MSW 2004-05-10 - -common/treasure.c: Change the loading of the artifacts file to actually - calloc() the object - reset_object() doesn't clear all the values, - like active_next, active_prev, so better to just do it there. -server/main.c: Add code in process_events() that checks for removed objects - - have seen occasional crashes caused by them. -MSW 2004-05-08 - -Armor enchantment now uses setting values. -common/init.c: new values to init in settings. -include/global.h: new setting values. -include/config.h: new default values for settings. -lib/settings: explanation for those new values. -server/apply.c: change armor improvement code to use setting values. -server/init.c: read new settings. -Ryo 2004-05-08 - -common/init.c: there's a #define LOGFILE, use it instead of hardcoded value. -include/config.h: change default logfile path to previous value in init.c. -server/c_wiz.c: Fix 'nodm' displaying incorrect messages, and forgetting to - update player count on map. -Ryo 2004-05-08 - -server/apply.c: Fix apply_special() to properly deal with LAMP objects - it - wasn't dealing properly with the split off lamp compared to the one it - was supposed to deal with - was crashing server. -MSW 2004-05-04 - -common/item.c: describe_monster() - print luck when describing players (fixex - perceive self not showing luck) -server/attack.c: kill_object() - don't give player exp if he kills himself - - compare owner against what was killed, not the hitter. -server/pets.c: summon_object() - move breaking out for last treasurelist - after we set the last valid treasurelist - otherwise, the list entry for - the treasurelist was never used. Change summoned creatures so that - the items they have are god given, and thus disappear when they - are killed - prevents players from summoning and then looting their pets. -server/spell_attack.c: explode_bullet() - Get owner of the spell so that we - can properly tailor the explosion portion of the spell for the god - of the worshipper. -MSW 2004-05-03 - -server/shop.c: patch from Andreas Kirschbaum for Windows compilation. -server/spell_effect.c: patch from Andreas Kirschbaum for Windows compilation. -Ryo 2004-05-03 - -common/porting: changed open_and_uncompress to use const char* instead of - char*, since value shouldn't be changed (and isn't). -include/libproto.h: changed prototype for open_and_uncompress -Ryo 2004-04-28 - ------------------------------------------------------------------------------- -Changes for 1.6.0: - -configure, Makefiles: Rebuilt for 1.6.0 release -doc/*/Makefile.am: Modified to use one makeps.pl utility in scripts directory. -doc/scripts/makeps.pl: Make this the definitive copy - fix problem with it - trying to combine big images when it doesn't need to. Remove other copies. -doc/playbook/chap1.tex, doc/playbook/chap5.tex: Fix some obvious errors, - but overall, the playbook is still quite out of date. -doc/playbook/treas2-extract: Have it not include abilities in given items, - have it properly deal with multiple underscores in arch names. -doc/spoiler-html/spoiler.html, doc/spoiler.ps: Rebuilt -MSW 2004-04-26 - -server/apply.c: apply_savebed() - make call to terminate_all pets before - call to remove_ob() so that pets are properly removed. -common/item.c, server/c_object.c: Fix code so that skill tools (talismans, - holy symbols, etc) are properly describe. Clean up formatting of long_desc() -MSW 2004-04-25 - - -Change most shop buy/sell functions to use 64 bit values. Problem arises -where player would sell valuable item, and if they wanted to buy them back, -it would overflow a 32 bit value, so they could buy them back for free. -Note quite as odd when you consider the buy/sell price for really valuable -items to be very different. -include/global.h: Add UINT32_MAX and other max type defines for our typedef - values so that we have standard setting of what the cap is. -server/apply.c: Change get_payment call to take second argument. -server/plugins.c: Add note about bug in handling of query_cost in this - function. -server/shop.c: query_cost() now returns 64 bit. Many other functions - updated to also take/return 64 bit cost values. Have cost_string - nicely deal with values that are beyond affordability. Rename get_payment2() - to get_payment(), and remove the later, which was just a simple wrapper - function that called get_payment2. -server/spell_effect.c: Update alchemy code. Remove some suspect use of - static values. -MSW 2004-04-24 - -server/apply.c: fix check_weapon_power() so it operates on overall character - level and not skill level - this matches up what the out of skills - displays. -MSW 2004-04-20 - -common/button.c: Patch by Bernd Edler to have proper speed set for items - activated by buttons. -server/apply.c: Apply the 'special prayer' marker stuff, since it wasn't - used anymore. -server/gods.c: Check for FLAG_EQUIP on spells and not for a special prayer - marker to guess if a spell is a god given spell or not. -server/spell_util.c: Patch by Bernd Edler so that firewalls are immune - to casting time. -MSW 2004-04-17 - -server/shop.c: Decrease adjustment limit for expensive items to 10000 to get a - continuous adjustment function. That is you will get much less when selling - items with a value between 800pp and 2000pp. -Andreas Kirschbaum 2004-04-16 - -common/map.c: Change blocked_link() to take a map parameter. Also, change code - in blocked_link() to assume that the caller has set up appropriate map and - coordinates related to tiling (in all functions that currently call - blocked_link, this is the case) -include/libproto.h: Rebuilt. -server/move.c, server/player.c: update call to blocked_link to include the map. -MSW 2004-04-15 - -common/object.c: Change CAN_MERGE() so that it compares the stats structure of - the objects being merged. Fixes problems of rings improperly merging with - other rings that have different stat values. -server/monster.c: Modify check_earthwalls() and check_doors() to take a - map structure as an option parameter, and use that structure when - calling get_map_ob. Fixes a crash in cases where earthwalls/doors - were at the edge of a tiled map, and creature was on other map moving into - it. -server/move.c: Change move_ob() to adjust coordinates for tiling, and - pass in these adjusted coordinages (and map) to the check_() functions - in monster.c -random_maps/treasure.c: Apply patch by Andreas Kirschbaum so that it does - more work in trying to place keys on maps. -MSW 2004-04-13 - -common/living.c: Patch by Bernd Edler to remove cap on exp for players. -MSW 2004-04-09 - -common/item.c: If potion wasn't given a random spell, use the archetype - name when it is identified. -common/treasure.c: Fix potion codes so that healing and magic power potions - get the proper spell inserted into them. Also fix line termination issue. -server/skill_util.c: Add check in skill_attack() to make sure current_weapon - is not null - there has been some crashes here, but I can't figure out - how it gets to this state, so better to at least handle it. -MSW 2004-04-07 - -server/player.c: In flee_player(), make sure the enemy to the player is - on an actual map - fixes crashes. -MSW 2004-04-06 - -common/potion.c: Fix up change_abil() to more properly deal with potions - - characters could get 0 stat values. Also, messages were not being properly - displayed. Patch is slightly modified from one sent in by Bernd Edler. -MSW 2004-04-05 - -server/main.c: Add extra checking for valid map coordinates after we grab - them from the destination map itself - if a map is broken and has - default enter_ coordinates outside the maps range, this previously - resulted in a crash. -server/pets.c: Pass the correct map object into insert_ob_in_map(). -MSW 2004-04-03 - -server/monster.c: fixed wiz's hidden mode not working on monsters. -Ryo 2004-03-28 - -common/porting.c -include/libproto.h -include/win32.h: added 'const' specifier to str-related functions. -Ryo 2004-03-26 - -common/exp.c -common/living.c -common/loader.[cl] -common/porting.c -server/c_misc.c -server/c_wiz.c -server/hiscore.c -server/resurrection.c: fixed %lld to %I64d for Windows. -Ryo 2004-03-26 - -server/attack.c: Add scare_creature() function, which sets FLAG_SCARED - and also sets up appropriate enemy. Clean up some formatting in - other functions, and fix friendly fire - move it out of the loop for - all attacktypes (can be after we have figured out max damage). Also, - has a bug where if an attach wasn't doing any damage, friendly fire could - actually make it do damage (eg, fear spell). -server/player.c: Fix up flee_player() to be map tile aware. Also, add - call to flee_player() in handle_newcs_player() so player will run away. -MSW 2004-03-24 - -server/attack.c: Add missing skill=NULL in kill_object() - can be rare - cases where the proper skill can't be found. -server/move.c: Fix push_object() so that it also updates the pushers/ - pushees map - should only happen in tiled map cases. -server/pets.c: Fix summon_object() so that if a summon cult monsters was - cast, we try to find the god from the owner. If still can't find the - god, just return instead of crashing. -server/rune.c: Change trap_disarm() to call destroy_object() on the - trap object, so that all the trapss inventory is also destroyed - and not dumped on the ground. -server/skills.c: Only players without arms to steal. -server/spell_util.c: Change cast_spell to set up the skill pointer for the - caster even if the caster is the wizard. -MSW 2004-03-22 - -server/treasure.c: patch from Bernd Edler to enable multiple - 'allowed' lines in artifacts. -Ryo 2004-03-12 - -Those fixes make DMs more 'stealthy' (when hiding/unhiding). -Also use yet unused colors for player join/leave, and DM join/leave. -This way those messages appear in a different window in split window -mode, to make the messages easier to spot. -server/apply.c: change color for player leave message. -server/c_misc.c: let DMs see hidden DMs. -server/c_wiz.c: make DMs more stealthy. -server/login.c: change color for player joining message. -server/main.c: change color for player joining/exiting message. -Ryo 2004-03-12 - -common/item.c: Fixed calc_item_power() to return valid item power for - items with high enchantments. -Andreas Kirschbaum 2004-03-07 - -server/spell_effect.c: small patch by Karla Stenger to put player's name - in the 'race' field of marking runes. This way, a DM can know who wrote - a rune, in case it has some bad vocabulary :) -Ryo 2004-03-06 - -server/spell_attack.c: change check_cone_push function to use arch weights. -move function up for resuability and change to check_spell_knockback -include/sproto.h: change function name -TM 2004-02-28 - - -common/image.c: removed unused variables. -common/item.c: conditionally remove unused variables. -common/map.c: conditionally define variables, unused under Windows. -include/global.h: turned off a conversion warning under Windows. -Ryo 2004-02-28 - - -common/living.c: changed 'signed char' to 'sint8' for set|get|change_attr_value. -common/map.c: map size is sint16, for arch_blocked. -include/libproto.h: update prototypes for set|get|change_attr_value and arch_blocked. -random_maps/rproto.h: changed prototype for surround_flag3. -random_maps/wall.c: changed surround_flag3 to use sint16 instead of int for map - coordinates. -server/apply.c: attribute values are sint8 in eat_special_food and - apply_changes_to_player. Some explicit casts. -server/player.c: map coordinates are sint16, in hideability. -server/spell_attack.c: map coordinates are sint16, not int. -server/spell_effect.c: stats are sint8 in cast_change_ability. Map coordinates are - sint16 in move_aura. -server/time.c: generate_monster doesn't return a value. -Ryo 2004-02-27 - - -common/living.c: Have give_skill_by_name() update the skill pointers in the - player object. -server/spell_attack.c: Properly set maxhp in the cone spell - this is used - in ok_to_put_more() to make sure one spell doesn't hit a single space - too many times. -MSW 2004-02-23 - -common/object.c: Change CAN_MERGE() so that we never merge applied objects - - whether or not they are rings. -lib/*: different spell for dragons vs players for firebreath - update - treasures so monsters use ability version. -server/gods.c: Add missing call to link_player_skills(), resulting in players - having multiple praying skills. -server/skill_util.c: Change learn_skill() so we don't create a skill pointer - for the player if they didn't learn the skill (even if they can't use - such a created skill, it is still a bit confusing). Fix finding of - hand to hand skills to make sure the player can in fact use the skill - in question. -server/spell_attack.c: Fix cast_cone() so that it properly hits all directions. -MSW 2004-02-22 - - -include/define.h,server/shop.c: Apply patch by Bernd Edler that gives - bargaining experience based on the amount of money a character saves. - Higher the bargaining skill, the more money they can save. -MSW 2004-02-16 - -doc/Developers/spells: Update type on casting_time - include suggested value - for times so that results are hopefully more coherent. -lib/archetypes, treasures.bld: rebuilt. -lib/treasures: Change some of the 'spelldirect' types to just the actual spells, - so that two seperate archs don't have to be maintained. -server/c_wiz.c: Add some basic sanity checking to command_remove() so that - we don't unnecessarily crash. -server/skills.c: write_scroll() - have it reset value of the scroll so that - the scrolls so inscribed by players have better chance of merging. -server/spell_attack.c: cast_cone() - if the caster is a trap, have it hit - the center space, so that characters who detonate cone traps will get hit - by the effects. Also, reduce range of cone spells if they are going - in all directions, compared to being targetted in a speciifc direction. -server/spell_util.c: cast_spell() - put lower limit on player speed_left value - when casting spells - since higher up the calling stack, the player speed - is also reduced, we need to set the lower limit here so that the player - isn't out of action longer than they should be. -MSW 2004-02-16 - -include/map.h: removed unused fields from wmapdef.. -include/object.h: removed unused field from object.h. Changed glow_radius to sint8 to be - coherent with struct MapSpace. -include/player.h: removed unused fields from player structure. -server/apply.c: removed unused known_spell field. -Ryo 2004-02-16 - -common/object.c: change get_owner() so that it also returns no valid owner if - the owner is removed. This fixes a crash if a player quits but is still - sitting at the play again prompt when something he owns kills something. -server/skill_util.c: Fix show_skills() so that if the character has too many - skills for whatever reason, we don't crash, and instead print an error - to the player. -server/spell_attack.c: Fix typo - not sure actual effect, but probably nothing - good. '+ +' should just have been '+' -MSW 2004-02-12 - -common/Makefile.am: Clean up proto - lex seems to toss some new symbols in - now days. -common/map.c, common/object.c, server/player.c, socket/item.c, - socket/request.c: change parameters of get_map_from_coord from int to - sint16, so the op->x,op->y can get passed directly in. Update callers of - this function. -lib/archetypes: Add damned 1 to the shop floors. -server/pets.c: Fix problem with big (multisquare) pets following the owner - across tiled map boundaries. -socket/item.c: Fix problem of players being able to see everything within - containers by just looking at them. -MSW 2004-02-10 - -common/treasure.c: add_abilities(): For potions and horns (spell casting - objects) convert the other_arch into a spell and put into the object - - otherwise, the spell casting object casts the wrong spell. -common/object.c: Clean up formatting of copy_object. Only real code change - is to fix events - copied event data wasn't getting malloc'd, and thus - when another object of that event was freed, it freed the event data - for all objects derived from it. -common/treasure.c: Fix fix_generated_item() so that books generated by - monsters with no_pick set don't inherit that for the book itself. - Still do it for other objects of the creator type. -MSW 2004-02-08 - -server/c_object.c: fixed sack_can_hold for the 'won't fit' cast, - missing 'return 0' -server/gods.c: applied Karla Stenger's patch, making sure 'praying' is - applied when becoming fellower of a god -Ryo 2004-02-08 - -Changed map-building to work on non-unique maps too. -server/build_map.c: removed check for unique map. -Ryo 2004-01-19 - - -Added map-building code. This lets players change unique maps, - adding & removing walls, doors, stuff like that. - New item types BUILDER & MATERIAL. New item flag FLAG_IS_BUILDABLE. - New range attack (builder). ----- -Changelog: change prescribed date format to be coherent with usage :) -common/loader.l: added 'is_buildable' flag. -include/define.h: added defines for item types & subtypes, and item flag. -include/player.h: new range type 'builder'. -include/spropo.h: new function apply_map_builder. -server/apply.c: handle new range type. -server/build_map.c: new file, handles all build-related code. -server/c_object.c: added 'buildable item' to examine function. -server/Makefile.am: added build_map.c to compilation. -server/player.c: handle new range type. -socket/info.c: handle new range type. -Ryo 2004-01-18 - - -Fix a crash related to plugin hooks -common/object.c: clear_object(): object's event's hook/plugin/options - are initialized with FREE_AND_COPY, so they are shared strings. - Better to release'em with FREE_AND_CLEAR_STR instead of - FREE_AND_CLEAR, else nice crashes... -Ryo 2004-01-16 - -Fix writing not inserting correctly item in inventory, and Windows- - specific stuff too -server/skills.c: write_scroll(): Better to insert spell in scroll, - and not the other way around -server/skill_util.c: fix Windows-specific int64 stuff. -Changelog: fix Mark's 2003 to 2004 :) -Ryo 2004-01-16 - -Fix a bunch of crashes observed on metalforge: -server/player.c: do_hidden_move(): Move call to find skill so that it is - always called. -server/skills.c: write_scroll(): Fix freeing of spell object in - scroll - newscroll->inv isn't valid after calling remove_ob, so - need to copy object to temporary pointer first. -server/spell_effect.c: cast_detection(): Pass in skill to use. If no - skill in use, use the caster object - fixes pointer derefence - as op->chosen_skill wasn't always set. -server/spell_util.c: modify caster_level() to always return at least 1. - Fixes pointer potential divide by zero problems - also guarantees - that players will be able to cast first level spells even if - repelled to that spellpath. ok_to_put_more() - Fix to use correct - map pointer variable. find_target_for_friendly_spell() - make it - so it handles tiled maps OK. -MSW 2004-01-15 - -common/object.c: fix the monsters on tiled maps bug that I may have - mentioned a while ago. Seems that the server assumed that all - parts of a multi part monster are on the same map as the head - while moving. -DVS 2004-01-12 - -common/living.c: fix fix_player() so that character gets benefits/penalties - for sp/hp/grace/etc regen bonuses as related to the god they worship. -server/player.c: dragon_ability_gain(): Modify so that character now gets - attacktype of new ability that they gain. Also, add code so that - the characters face/animation can change (getting set to values the bonus - ability). -MSW 2003-12-27 - -common/object.c: Set op->events=NULL in reset_object(), and move the - clearing of the op->events structure to be before the memset in - clear_object() - this was otherwise resulting in a memory leak, - as memset would clear the pointer without actually freeing the data. -server/attack.c: Fix indentation of hit_map(), modify it so that attacks - won't destroy items with no_pass set. -server/login.c: set op->speed=0, call update_ob_speed() before calling - reset_object() - fixes problem with players not moving with recent - changes to initting the active lists to NULL. -msw 2003-12-20 - - -server/skills.c: changed NDI_UNIQUE to NDI_BLACK for the meditation - message (so that messages can correctly be grouped, also makes it - coherent with praying). -Ryo 2003-12-20 - -Those fixes deal with gcc3.3 infinite loop. -Fixes (except sizeof/memset) courtesy Bernd Edler. ---- -common/item.c: use right buffer size for safe_strcat. -common/object.c: clear active_next and active_prev when cleaning an object. -include/define.h: fixed *curlen=maxlen-1; instead of *curlen=maxlen=1; -socket/init.c: initialize whole ns->inbuf.buf, instead of setting first - element only to 0. Also allocated with a sizeof( unsigned char ) * size, - in case size changes one day. And initialize some more fields. -Ryo 2003-12-18 - - -Those changes deal only with warning cleaning under Windows. -Mostly, using the right type at the right place, or doing explicit casts. ---- -common/object.c: changed free_arr_[xy] to short[] instead of int[]. -include/global.h: changed free_arr_[xy] to short[] instead of int[]. - Changed Windows-specific comments to C-style comments, not C++-style. -include/sockproto.h: play_sound_player_only takes sint8, not int, for - coordinates. play_sound_map takes a short for the sound number. -socket/image.c: some type fixing, explicit casts. -socket/init.c: Windows-specific type fixing. -socket/lowlevel.c: explicit casts to char for SockList_AddInt64 -socket/request.c: fixed types to match function parameters, or added - explicit casts when needed. -socket/sound.c: play_sound_player_only takes sint8, not int, for - coordinates. play_sound_map takes a short for the sound number. -Ryo 2003-12-14 - -server/rune.c: Fix it so that players won't be hit by traps if they are - not next to them when set off (firing arrows at a door for example). -server/spell_util.c: Fix spell_failure() to properly damage player if they - fumble. Fix cast_spell() to not complain about not having enough - grace if the spell doesn't take grace. Add same check for mana, but that - is much less likely, as harder to get negative mana. -socket/request.c: Fix problem where map sending code was not properly avoiding - duplicating the head of a big image on multiple layers. This bug most often - manifested itself of player standing on lower right corner of large building, - and something else standing on other portion of building - player would seem - to disappear. -MSW 2003-11-30 - -lib/adm/collect_images.pl: forced binary mode for written files. - This lets the script work correctly under Windows. -Ryo 2003-11-29 - -server/apply.c: correctly display learned skill's name, and not the - scroll's. -server/skills.c: make 'sense curse' and 'sense magic' check items - on the ground too. -Ryo 2003-11-25 - -common/loader.l, loader.c: Fix firewalls so that their spell is properly - initialized - uses 'dam' and not sp for those objects -server/apply.c: Fix check_weapon_power so that it finds proper wc object. - Fix unapply_for_ob so that it won't unequip cursed/damned weapons if - player switches objects. -MSW 2003-11-11 - -bulk of this is to fix exp loss when changing gods if you have more than -2 billion exp, removal of spells when you switch levels, and not giving you -all new spells when you switch religions. --- -common/living.c: Update exp functions to be fully 64 bit aware. Don't - take away from player total exp if SK_SUBTRACT_SKILL_EXP is passed in. -common/utils.c: Add 64 bit version of random_roll(), called random_roll64() -lib/treasures: Make indentation consistent for some treasures. -server/apply.c: Use the FLAG_STARTEQUIP to denote god given spells, instead - of using special prayer markers. This simplifies the spell learning - and removal code. -server/gods.c: Make exp loss for changing religions 64 bit compliant. - Fix become_follower() so that it doesn't give all the new gods special - spells if you switch religions. Fix code so that it properly removes - all special prayers from previous god, and also print out message on what - spells you lost. Don't set the prayer skill as applied in various - areas - this results in two skills being applied, which isn't proper. -MSW 2003-11-09 - -common/living.c: Win32 compilation fix (levels is sint64, not uint64) -include/plugin.h: new hooks for free & fix_player. Required for Win32. -include/plugproto.h: new prototypes for CFWFreeMemory and CFWFixPlayer, - wrappers for free( ) and fix_player( ). Required for Win32. -include/sproto.h: added prototypes for new plugin hooks and improved tell - command helper. -plugin/plugin_python.c: wrap calls to fix_player, free and free_object - with plugin ones when memory allocated by CF's main exe. Required for - Win32 to work correctly. -server/c_chat.c: improved 'tell' command to accept first letters of player - name only, case-insensitive. If 2+ players match, returns with a failure - message. -server/player.c: new function find_player_partial_name. Returns player whose - beginning of name matches specified string, NULL if more than one matches. - Fix move_player to check specified direction's validity. -server/plugins.c: added wrappers for free( ) and fix_player( ). Required for - Win32 compatibility. -Ryo 2003-11-07 - -common/treasure.c, doc/Developers/spells: Fix generation of rods so they have - enough charges to cast the spells. Update documentation on what maxhp for - the archetype of rods means. -MSW 2003-11-01 - -server/player.c: Fix crash in stand_near_hostile when it is called on - tiled maps with player near edge. -MSW 2003-11-01 - -Various bug fixes: -common/arch.c: Fix item_matched_string() so that it only passes in the length - of the pssed in name in the strncasecmp(), and not the shorter of the - passed in string or item name. Otherwise, if player does a 'drop wand of', - unidentified wands (name just wand) would match. Similarly, if a player - did 'drop ringmail', unidentified rings would match, etc. -common/living.c: Fix fix_player() to always process the praying skill with - respect to resistances and whatnot. This is necessary because the - god give abilities are put in this skill, and those shouldn't go away - depending on if the skill is in use or not. Also fix bug in add_exp - routines which wasn't multiplying permanent exp by PERM_EXP_GAIN_RATIO -common/object.c: Fix find_obj_by_type_subtype() - had extraneous semicolon - after the for loop, so the if code that was supposed to be for each object - was never called and instead would crash as it would get called with tmp - was null. -server/attack.c: Fix problem with kill_object() not finding proper skill - - it would use the skill object instead of the skill. Fix problem of - poisoning not setting up proper skill name in poisoning object. -server/c_range.c: If player is invoking a spell, don't update their - range_magic value. -server/skill_util.c: Fix divide by zero problem if improperly passed - skill object. -MSW 2003-10-26 - -TRIGGER_MARKER: -common/glue.c, common/button.c, include/define.h, funcpoint.h, libproto.h - server/init.c: Add trigger_marker (type #52) which is a Marker that can be - triggered. Useful for placing forces in player when connected trigger is tripped. -TM 2003-10-26 - -common/glue.c, common/object.c, common/player.c, include/funcpoint.h, - server/init.c, server/monster.c, server/shop.c, server/skill_util.c: add - find_skill_by_number() function - this replaces find_skill. Locate new - function in skill_util.c, which is more a proper place than - common/player.c - this change necessitated adding glue function pointers - so the other common files can call it. -server/spell_effect.c: Fix cast_heal() so if the spell is not one that heals - hit points, don't process the code that checks for that and sets - a false success value. -socket/metaserver.c: Clean up formatting - no code changes. -MSW 2003-10-25 - -server/apply.c: small fix to apply_spellbook in the rare case when - the spellbook contains no spell (happens when DM issues a bad - 'create' command for instance :). -Ryo 2003-10-04 - -server/c_new.c: fix command_run and command_fire so they check - the given direction is [0..8]. This enabled weird things like - hitting non-adjacent monsters. - Patch by Karla Stenger on cf-devel, slightly modified by me. -Ryo 2003-10-21 - -common/arch.c: fix item_matched_string() so that matching makes sense - - the ordering was wrong, so that we would match something with a low - priority, and skip over looking to see if that same object would get - a better match. Order the function so that we look for the best - matches first. -MSW 2003-10-08 - -socket/request.c: Clean up some compile warnings. Improve big face - handling - there were cases where data wasn't being sent when - it should have, and vice versa. Basically, do better checking - to see if we should send a big face for a particular layer, and - also better checking to make sure we don't send the same face more - than once for the same layer. Also, change esrv_map_scroll() - to clear out spaces that appear into view - adds a little extra bandwdith, - but necessary because otherwise the fact there is a big face on the edge - doesn't always get sent. -MSW 2003-10-07 - -TODO: various updates. -common/button: Old patch by David Seikel: change inventory checkers so that - the monster/player is also checked against. And do more proper for checkers - that check against slaying or race - if the trigger doesn't have - those set, we don't want to compare a null against another null and - get success). -server/apply.c: Change apply_shop_mat() so that it removes unpaid objects from - monsters (or thrown containers for that matter). Old patch by Bernd Edler - to improve messages dragons get for eating various food types. -server/player.c: Add another missing call to fix_player(). Modify - move_player_attack() so that the target player doesn't hit back if - they are the WIZ or on a battleground -MSW 2003-10-06 - -utils/player_dl.html utils/player_dl.pl.in: New files - scripts for allowing - character directories to be downloaded over the web. -configure.ac: Add check for 'tar', so that we can put it in the script above. -Makefile.in (All of them): Changed because TAR variable propogated to them. -MSW 2003-09-30 - -server/time.c: Real change is to add a missing call to fix_player - without - this new players would be getting messed up maxsp/maxgrace values. Cleaned - up formatting in move_player_changer() while doing the other change. - MSW 2003-09-28 - -common/living.c, include/libproto.h: Update some functions to take 64 bit int - values for exp usage. -random_maps/random_map.c: Don't ever make rogue maps symmetric - - creates unconnected maps. Clean up layoutgen() to not have a bunch - of duplicated code. -MSW 2003-09-25 - -server/skill_util.c: Call esrv_send_inventory on the cauldron if we - performed alchemy. Needed for cauldron's contents to get updated. - MSW 2003-09-23 - - Modified files: - TODO common/anim.c common/arch.c common/button.c common/exp.c - common/init.c common/item.c common/living.c common/loader.c - common/loader.l common/logger.c common/object.c - common/re-cmp.c common/readable.c common/recipe.c - common/treasure.c doc/Developers/objects - doc/Developers/protocol doc/Developers/python - doc/Developers/skills doc/Developers/spells - include/Makefile.am include/Makefile.in include/attack.h - include/config.h include/define.h include/global.h - include/includes.h include/libproto.h include/living.h - include/map.h include/newclient.h include/newserver.h - include/object.h include/player.h include/plugin.h - include/skills.h include/sockproto.h include/spells.h - include/sproto.h include/timers.h lib/Makefile.am - lib/Makefile.in lib/animations lib/archetypes lib/artifacts - lib/bmaps lib/bmaps.paths lib/collect.pl.in lib/crossfire.0 - lib/crossfire.1 lib/faces lib/formulae lib/settings - lib/treasures lib/treasures.bld lib/adm/collect_images.pl - plugin/plugin_python.c plugin/include/plugin_python.h - server/Makefile.am server/Makefile.in server/alchemy.c - server/apply.c server/attack.c server/c_misc.c server/c_move.c - server/c_object.c server/c_party.c server/c_range.c - server/c_wiz.c server/commands.c server/disease.c - server/gods.c server/init.c server/login.c server/main.c - server/monster.c server/pets.c server/player.c - server/plugins.c server/resurrection.c server/rune.c - server/shop.c server/skill_util.c server/skills.c - server/spell_effect.c server/spell_util.c server/swamp.c - server/time.c server/weather.c socket/info.c socket/init.c - socket/item.c socket/loop.c socket/lowlevel.c - socket/metaserver.c socket/request.c socket/sounds.c - Added Files: - server/spell_attack.c - Removed Files: - include/skillist.h lib/skill_params lib/spell_params - - Updated code for skill + spell code. skills and spells are now objects. - tuning these now means changing the archetypes. New spells can now - be added just by making a new archetype. Lots of code cleanup - also done. - MSW 2003-09-12 - - -TRAPS: - include/define.h - common/object.c, treasure.c - server/attack.c, skill_util.c, skills.c, rune.c, time.c, player.c, - apply.c Established new type traps distinguished from runes. Traps - are more mechanical in nature, not impacted by detect magic or - counterspell (maybe in future once skills are settled out more fine - tuning changes in detecting and disarming these too...). Traps also - can now trigger connected objects if they are detonated. Migrated - traps to new type and made new generic trap archetype for more complex - trapping (ye olde red shaded tile...) TM -2003-09-04 - - -friendly_fire: - Added friendly_fire to attack.c, called from hit_player. - Will put a cap on maxdam that is a percentage (1-100%) of damage (min - 1) based on SET_FRIENDLY_FIRE value when players attack in peaceful - mode. Changed who, statistics to show this setting better and added - help file for peaceful. It would be nice to have a indicator in the - client for this as well. TM - 2003-08-25 - -protocol/doc/code: - Changed the way smoothing is done. Switched the smooth - command to binary mode, rebuild archetype files, added doc - on smoothing, updated protocol file. - Changed a the "togglemapextended smoothing" to "togglemapextended - smooth" to prevent problem of compatibilities with previous cvs - smoothing releases. -Tchize 2003-07-08 - -protocol: - Added new command to send extended map informations to the - client. Mainly used for now to send smoothing informations. - Also commented the modifications in the protocol file ind doc/ -lib/Makefiles: - Changed to install the smooth file too. Needed by smooth code -common/loader.l and loader.c - completly reworked get_ob_diff to improve speed at mapsave time. - For now function is interlaced with commented old code. Will clean - up when code will be proved working. (hope middle of july) -Tchize 2003-07-03 - -server/apply.c: Fix auto_apply - missing else, causing extra - treausres to be generated inside of shop tiles. -server/monster.c: Fix npc_call_help to be map tile aware. -MSW 2003-06-18 - -lib/collect.pl.in: Modify it so that it will collect .trs (treasure) files and - build a treasures.bld from that as well as the existing treasures file. In - this way, treasure information for objects can be put in the arch - directory. -lib/Makefile.am, Makefile.in: Modified so that it copies over the - treasures.bld to treasures in the destination directory. Have - the collect directive also build the images, so that a double - make isn't necessary. -lib/treasures.bld: Added file - like the archetypes, this is the pre- - build treasure file. Until .trs files are added, this will just - match the treasures file with some additional comments. -MSW 2003-05-26 - -common/map.c: Fix bug causing unnecessary crashes - ok for the map - to match if the object has been removed. -socket/loop.c: Only make call to draw_client_map() if we have a valid - map to draw. -MSW 2003-05-26 - -common/anim.c: Patch by AV to make sure multipart monsters animations - stay in sync. MSW 2003-05-25 - -server/apply.c: Fix bug in that we weren't calling esrv_map_scroll() - when player used a shop map but lacked sufficient funds to pay - for his items. -MSW 2002-05-23 - -common/item.c, common/utils.c, include/config.h: Add #define NEW_MATERIAL_CODE - and checks in the other files for this - if this is commented out - (default), then the new material naming code is disabled - material - names won't be put in the items names as shown in the inventory - (can still see material by examining an object), and objects that are - created will be created with the default material (eg, iron for - most armor/weapons, eg, brass, bronze, copper items won't show - up anymore). -lib/settings: Add comments from the old config.h file that describes - what the options already does. Having no comments in this file - or in config.h anymore is very unfriendly. -MSW 2003-05-20 - -server/player.c: Have players start at max hp/grace/sp. -MSW 2003-04-14 - -server/c_range.c: Add check to make sure we are actually removing a - golem and that the object hasn't been freed/recycled and the - player not updated. Fixes crashes. -MSW 2003-04-13 - -acinclude.m4: Update path to find python includes, since aclocal.m4 gets - derived from this file. -configure.ac, configure: Add utils/scores.pl to list of files to substitute on. -common/loader.l, loader.c: Add subtype for objects - will be used in future work. -common/object.c: Add subtype diff check in CAN_MERGE() -common/porting.c: Have it use SAVE_DIR_MODE when doing the mkdir, and not have - hardcoded 777 permissions. -doc/Makefile.in, doc/Makefile.am, doc/Developers/Makefile.am, - doc/Developers/Makefile.in: Move some of the spell docs around and merge - them together -doc/Developers/objects: Add notes about subtype. -doc/Developers/spells: New file, contains preliminary work on spell objects. -include/config.h: Remove command about DM_MAIL and LIBDIR from file, as they - are options no longer present. Update comment about SAVE_MODE, and add - SAVE_DIR_MODE -include/object.h: Add subtype field to object. -server/login.c: Have it use SAVE_DIR_MODE when doing the mkdir, and not have - hardcoded 6700 permissions. -utils/Makefile.in: Updated to know about scores.pl -utils/scores.pl.in: New file - reads player file to generate HTML score - file. -MSW 2003-04-04 - -TODO: Various update -aclocal.m4,configure: Update path to find python (fix again) -common/image.c: Minor update to a ocmment in the code. -common/los.c: Add missing P_OUT_OF_MAP checks that resulted in some incorrect - LOS calcuations. -include/funcpoint.h: Remove draw_func function pointer. -lib/Makefile.am, in: Remove bmaps.paths to from being installed or being part - of distribution - bmaps.paths is only needed when collecting the image -lib/*: Rebuilt -server/c_object.c: Patch by Bernd Edler to have the apply functions take into - acount if the item is equipped or not when looking for good matched items. -server/commands.c: Move printlos to normal commands. I don't think it reveals - any information that is in any way harmful. And since it dumps the - output to the players screen, no concern of it filling up log files. - Also, when doing LOS debugging, it is pointless to have it as a DM command - because LOS is ignored for DM's. -server/disease.c: Modify remove_symptoms to remove all symptoms the player - may have a disease. Modify infect_object() to not allow a creature to - have more than one instance of the same disease. -socket/info.c: remove draw() - instead, draw_client_map() can be used, - as that is most the only thing draw() did anyways. -socket/loop.c: Update draw() calls to draw_client_map() -socket/request.c: Remove special handling for darkness==4 cases (first - space that is in full darkness) - this is extra complications and causes - display problems. Update draw_client_map() to include the little bit - of logic that draw() had that this function did not have. -MSW 2003-04-01 - - -common/glue.c, include/funcpoint.h: remove draw_func() pointer - no longer - needed, so code that sets up pointer removed. -lib/*: rebuilt - facings added to old player animation information. - ruined_temple archetype added. -server/init.c: remove set_draw() function -server/player.c: remove call to draw() - socket code takes care of this. -MSW 2003-03-24 - -server/spell_effect.c: Some code cleanuip to cast_change_attr - mostly - to combine the processing of the stat improving spells together. - The actual change to playability is that bless and holy possession - don't stack if cast multiple times. -server/spell_util.c: Modify create_aura so that player can't have more than - one aura (of the same type) active at a time. -MSW 2003-03-20 - -server/apply.c: Change weapon improving code to only use up the number of - potions that it needs, and not all on the ground. Required adding - another arg to eat_item() which is the number of items to consume. -include/sproto.h: Rebuilt for new eat_item() (actually, a static, so no - longer shows up in this file) -server/attack.c: Change did_make_save to strip out magic attacktype when making - saves for objects - otherwise, things like poison cloud destroy objects. -server/time.c: deal with player animations special in process_object - need to - pass in the facing value, and not direction, since direction gets reset. -MSW 2003-03-19 - -common/anim.c: Pass direction to animate_object() - needed for player - animations as player's facing may not match direction. -crossedit/Attr.c, server/main.c, server/time.c: Update calls to animate_object() -include/libproto.h: rebuilt -include/newserver.h, plugin_animator/animator_box.c, socket/init.c, - socket/request.c: Remove newanim field from socket structure - not needed - - how to animate is determined by object, not by socket. -server/move.c: Add check to P_OUT_OF_MAP in teleport function. -server/player.c: change move_player to call animate_object, so it gets full - power of functionality it supports instead of 4 way hardcode animation - information. -server/spell_effect.c: When altars are consecrated, don't look to arch name - for first portion of name - always call them Altar of %s - fixes problem - where altar is special god altar that has god's name in archetype, resulting - in altar of .. of ... -MSW 2003-03-18 - -Patch for 64 bit experience total, as well as flexible number of levels. -Basically, max level is now dynamic, set in exp_table file. Experience -is now a 64 bit value, so much higher totals now allowed. To -allow for flexible levels, add new function - did_make_save() which is used -for players/monsters to see if they make their saving throw - this is -necessary because the savethrow[] array may not be as large as max level - -did_make_save takes this into account. -NOTE: If your updating a server, you will need to copy over/set up a -new exp_table file that has max_levels defined and at least one of the -tables uncommented. There are no longer any compiled in defaults --- -configure, configure.ac: Add AC_CHECK_SIZEOF calls for long and long long - so we can know which one to use for 64 bit support (other checks - may need to be added) -common/exp.c: Remove levels table, replace it with a 64 bit pointer. - Change init_experience to allocate appropriately sized table, have it - read max_level value from exp_table file. Replace atoi calls with - atoll to get 64 bit value. Update dump_experience to properly - print 64 bit values. -common/info.c: Update dump routines that dump exp to properly print - 64 bit values. -common/init.c: Add initializing for settings.max_level value. -common/item.c: Update sprintf's to handle 64 bit output of exp (speed) - value in objects. -common/living.c: change MAX_EXP define, update MAX_EXP_IN_OBJ define, - add MAX_SAVE_LEVEL which corresponds to how large the savethrow - table is. Change MAXLEVEL to settings.max_level. Change level_exp() - to return 64 bit value, other updates in functions to use 64 bit - values. Add did_make_save() function. -common/loader.l, common/loader.c: Update load/save routins of exp to - deal with 64 bit values. -common/map.c: Update calculate_difficulty to use 64 bit values when - storing exp - unlikely to make a difference, since unlikely any map - will get to a point where it has that much exp on it. -common/porting.c: Remove dead code from save_long(), add save_long_long() - to save 64 bit values. -include/autoconf.h.in: SIZEOF_LONG and SIZEOF_LONG_LONG values added. -include/global.h: Add code to typedef sint64/uint64 types based on what - type gives us those values. Add max_level to settings array. -include/libproto.h: rebuilt. -include/living.h: Replace exp field with 64 bit value. -include/player.h: Update party kill log exp tracking to have 64 bit - values. -lib/exp_table: Udpate comments about max_level, uncomment what - was the default table so new installs have working table. - Add 5 levels to all the tables. -random_maps/monster.c: Update place_monsters to use 64 bit when storing - exp total for map/per square. -server/apply.c: Replace MAXLEVEL with settings.max_level, add - did_make_save calls where appropriate -server/c_misc.c: have statistics command properly print 64 bit - exp value. -server/c_wiz.c: Have stats command properly display 64 bit value. -server/hiscore.c: Replace exp values with 64 bit values, update to - properly load/display them. -server/player.c: replace savethrow[] reference with did_make_save() -server/skill_util.c: Update skills command to properly show 64 bit exp values. -server/spell_effect.c: replace savethrow[] reference with did_make_save(), - allow players to cast directors right beneath themselves, but other - walls must be on empty space. -MSW 2003-03-07 - -Various bug fixes. -crossedit/Attr.c: Minor cleanup to eliminate some compile time warnings. -plugin/plugin_python.c: Remove some unused variables, thus fixing up some - compiler warnings. -random_maps/random_map.c, random_maps/random_map.h, random_maps/special.c: - Add MIN_RANDOM_MAP_SIZE values instead of hardcode constants. -server/monster.c: Fix communicate - odd bug can be map gets swapped out - just after player is transferred to another map, causing crashes as - map that was originally spoken on is no longer in memory. -server/rune.c: add missing free_object call when erasing runes. -server/skills.c: Change write_on_item to determine type of writing based - on content of mesage, or lack thereof, and not the marked object. - Fix problem of buf not being initalized. -MSW 2003-03-06 - - -Various bug fixes. -Makefile.am, Makefile.in: Put crossedit as the last directory, so any build - errors for crossedit doesn't effect anything else. -README: Update ftp site listing. -TODO: More things aded. -aclocal.m4, configure: Add missing / when checking in /usr/local for - python headers. -common/map.c: Add some debugging in free_all_objects that checks to make sure - there are not objects remaining that belong to the map just freed - - only active if MANY_CORES is set. -random_maps/random_map.c: Increase minimum random map size to 10x10 - this - is need for square spirals to work properly I think. -server/spell_effect.c: Have perceive self tell dragon players what they are - currently focused on. Fix town portal to remove force objects from - players if destination is no longer available. -server/swap.c: Reset maps reset_time when loading them in in read_map_log() - - this is only used if recycle temp maps is on. Also, do sanity checking - on reset_time value - bogus values were observed on metalforge. -socket/request.c: Update map timeout in draw_client_map() - in this way, - we don't swap out a map within a players view only to swap it back - in. -MSW 2003-03-01 - ------------------------------------------------------------------------------- -Changes for 1.5.0: - -*/Makefile.in, related files: Updated for 1.5.0 -server/attack.c: Don't change weak wall image if no damage was actually done. -server/c_object.c: Include math.h - needed for pow() -server/spell_effect.c: fix infinite loop in town_portal -MSW 2003-02-24 - -common/anim.c: Fix for 8 way facing animations. -lib/treasures: Add sheep treasures -lib/* (rest) - rebuilt -server/spell_effect.c: Fix up counterspell - mainly fix a bug in that if - counterspell hit a multipart magic that used magic as an attacktype, - it would also crash. However, code also woudln't work properly on - tiled maps, and I'm dubious if it would work properly if there was more - than one effect on a space. -MSW 2003-02-23 - -server/skills.c: Fix jump so that it updates the clients map properly. -server/spell_effect.c: insert town portals below the player so it - works better with apply. -MSW 2003-02-20 - -server/move.c: Fix transfer_ob so that it sends newmap command to client - if we're moving a playing - otherwise fog of war displays bad - information on the client. -MSW 2003-02-19 - -More bugfixes: -server/c_wiz.c: Fix reset command - while it deleted the maps, it made things - so that it never got removed from the map listing - instead, just let - flush_old_maps do most of the work. -server/main.c: If player tries to enter a random map that has been reset - and that we have no informatino about (eg, going up in a dungeon), - just say the exit is closed instead of making a completely random map - that usually isn't in keeping with the dungeon (and still won't lead - outdoors) -server/move.c: In move_teleporter(), change it so that if a player uses - a shop map yet there is no place to put the player, just drop him on - top of a monster - this fixes problem of players getting trapped inside - of shops in random dungeons. -MSW 2003-02-16 - -random_map/random_map.c: Include parameters used to make map in msg of map - - this can hopefully be used to debug what is really happening when bad - maps are made. -server/rune.c: Modify dispel_rune function (called from disarm spell) - to erase marking runes. While at it, fix it so that it does the right - thing with respect to tiled maps. -MSW 2003-02-15 - -include/sproto.h, server/move.c: Modify try_fit() to take mapstruct parameter - for which map we are trying to fit this on - fixes problems with rolling - boulders accross map (only function that currently uses this). -MSW 2003-02-14 - -common/item.c: make item_power stop showing up in ring short descriptions. - fix some of the items that were double-displaying materialnames, like - mithril mithril chainmail. -common/loader.l: add tooltype -common/utils.c: Unless the object is armour or weapons, pick the first - materialname we find. Now, newly generated diamonds will stack. - Fix name_to_material to return NULL if it finds nothing, fixes - navar_city/museum crash. - Change set_materialname to take a materialtype_t argument, allowing - functions to manually set the materialname, rather than let the - randomizer pick for them. -include/define.h: Add TOOL and BUILDFAC for item building. -include/object.h: add tooltype for item building. -include/materials.h: add M_SPECIAL. Set this in an object, to prevent things - like mithril mithril chainmail. This is primarily only needed in - artifacts, because they change the base material of the arch. Also - useful in things like the demonspawn shield, and on maps. -lib/artifacts: sprinkle M_SPECIAL around. -server/player.c: remove auto_heal. This never should have been - committed, and was never referenced by any code. -server/c_object.c: add item building, but add it disabled. Too many - bugfixes were tied in with this code to cleanly add them. When - enabled, this code will add player item building, similar to - create to take place. Requires a host of graphics and arches - to be useable. -garbled 2003-02-13 - -random_maps/special.c: Fix possible bug with placement of special maps. -Add lore/endlore to object structure to hold general information about objects: -common/loader.c, common/loader.l: Add loading and saving of lore field. -common/object.c: handle lore field for copy/free/other object operations. - Also, update CAN_MERGE to look at materialname also. -doc/Developers/objects: Add notes about lore. -include/object.h: add lore field to object. -server/apply.c: Fix bug in that cursed weapons were not equipped/ - unequipped. -MSW 2003-02-11 - -doc/Developers/objects: Add nodes about shared strings in objects. -server/c_misc.c: Remove check for name length - check_name takes care - of that for us. -server/monster.c: store return value from get_map_flags - seen some - crashes traced back to this area, want to see what it returned. - Allow objects with no msg to still use scripts that listen. -server/player.c: Fix potentional issue of freeing/adding players name - when they enter play again - seen some crashes attributed to - odd names. -MSW 2003-02-08 - - -More bugfixes: -server/player.c: Fix permadeath without resurrection - wasn't deleting - player save files as it was supposed to. If permadeath + - resurrection was in use, I believe it all worked as expected. -include/shop.h: remove _SHOP_H after endif, causing compiler warnings. -include/skills.h: Add check to USING_SKILL to make sure chosen_skill - is not null. -server/c_chat.c: Add some missing return values, resulting in compiler - warnings. -server/skill_util.c: Remove unused variable. compiler warnings again. -server/spell_effect.c: Change dimension door so that you can't go - through spaces that block passsage and also block view (eg walls). - This goes back to the more traditional behaviour. Remove - some unused variables. -server/spell_util.c: Add missing P_OUT_OF_MAP to move_missile, resulting - in crashes. -server/time.c: if generator is not on a map, don't have it generates. - Fixes crashes. -MSW 2003-02-02 - -New materialtype system for crossfire. Based in concept on my original -design, but rewritten from scratch to make it easily extensible. - -In a nutshell: - -Each of the old materialtypes (metal, glass, stone, wood) are now a class -of materials. When an item in the game is created, if it does not have a -specific materialname of it's own, a materialname is generated randomly -from the matching entries in the "lib/materials" file. This file -contains all of the saving throws, and other material specific -modifications for each of the expanded materials. - -Materials can be manually specified in the arch with the "materialname" -directive. Such as the gold coins, which are specified to be made of, -you guessed it, gold. - -Saving throws have been slightly rewritten to use the new materialtypes, -and a few other minor details associated with materialtypes have been -patched up. - -Adding a new type of stone or wood, is as simple as adding a new entry in -the lib/materials file. The game will automatically start distributing -them around randomly. -garbled 2003-01-29 - -Various bug fixes: -common/item.c: If nrof of an item is 0, have it print singular name and - not plural name. -server/c_object.c: Fix typo when printing value of optoins - had an - extra 'the' in place. Also, don't print value of objects with - no pick flag set. -server/login.c: Enforce maximum name length for new characters. -server/monster.c: Change parsing code for messages/@match code - - new code is simpler, and should also be simpler and less bug - ridden, but otherwise functionally equivalant. Also fix up - communicate to work properly on tiled maps. -server/spell_effect.c: fix up move_aura to not crash hopefully. -MSW 2003-01-26 - -More bug fixes: -common/item.c: Add missing braces - was resulting in some items getting - display like 'gauntlets of strength (Str+1)(Str+1). -include/map.h: Add MAGIC_MAP definitions to the file. -server/shop.c: Put back in code that uses magic_mapping_mark to determine - what items to display in inventory. Update for new one magic mapping - code stores information away. -server/spell_util.c: Add missing P_OUT_OF_FLAG check, which resulted - in crashes. -socket/info.c: Move MAGIC_MAP definations to map.h. Add check for - P_OUT_OF_MAP. Remove code that stops on P_NO_MAGIC - with that - it wouldn't search the shops. -MSW 2003-01-16 - -server/move.c: fix try_to_fit and roll_ob to work properly on tiled maps. -Also some performance improvements to those functions. -MSW 2003-01-12 - -Bulk of this commit is to improve code for tiled maps - replace -wall/blocks_magic/blocks_cleric, etc with get_map_flags which -also does map tiling translation as needed. This should fix a lot -of the bugs related to map tiling (there are sure to be more out -there - all the get_map_ob still need to be checked). -Other changes - many spells stopped progressing on spaces that -blocked view - that is now removed - didn't make a lot of sense. -Other fixes - some cleric spells (eg, word of recall) checked to -see if magic was prohibited, didn't check to see if cleric -was prohibited. -Clean up some bugs in the lighting code that would cause erroneous -results. Also, allow players to see immediately around them on -outdoor maps no matter how dark the map really is - behaviour -on indoor maps is the same. -Lots of code reformatted, and lots of obsoleted/dead code removed. -Add max range to dimension door. -Fix magic map - got broken when the layer stuff was redone - was -not showing proper colors. IT also works sensibly on tiled maps -now - rather than display based on the map, it gives the player a -50x50 area centered on where the player is. -Change fire_bow - move special player fire modes into own function - -makes code much cleaner. -Hopefully this fixes more bugs than it introduces. -common/los.c, common/map.c, common/object.c, crossedit/Edit.c, -include/libproto.h, include/sockproto.h, include/map.h, -include/spellist.h, include/sproto.h, random_maps/treasure.c, -random_maps/wall.c, server/attack.c, server/c_misc.c, -server/c_wiz.c, server/disease.c, server/main.c, server/monster.c, -server/pets.c, server/player.c, server/rune.c, server/shop.c, -server/skill_util.c, server/skills.c, server/spell_effect.c, -server/spell_util.c, server/time.c, socket/info.c: See note above -server/apply.c: Limit number of times weapon can be enchanted so - that it won't overflow item_power. Modify enchant armor - to enchant as normal armor is enchanted, also only allows one - item to be enchanted. -MSW 2002-01-07 - -common/item.c: Add 'unidentified' to display of examined items if the - item has not been identified. Only display spell regen penalty - for armour if there is in fact a penalty. -lib/archetypes: rebuilt for updated demon speed, pick up other new archs. -lib/animations, lib/bmaps lib/bmaps.paths lib/crossfire.0 lib/crossfire.1 -lib/faces: rebuilt -server/main.c: Name random maps based on final map component (if available) - or map they are spawned from - this gives so clue in 'who' command - where the players really are. -server/monster.c: Fix code that would cause monsters to ignore golems/ - avatars. -server/pets.c: Clean up a few warnings, fix bug in pet_move that caused - crashes - owner of a pet isn't always a player. -server/player.c: Remove on_same_map check - can_detect_monster also - performed check, so no need to have extra call. -server/spell_effect.c: modify alchemy to properly deal with tiled maps, - change behavior for spells that block view - they no longer block - alchemy, but spaces that block magic will. -MSW 2002-01-05 - -TODO - add notes about item damage - clear it out of my mailbox. -common/loader.l, loader.c: Add check at load time to see if monsters - hp is higher than its maxhp and print a debug message if so. -devel/Makefile: Remove - makefiles shouldn't be in CVS, only .in versions. -server/attack.c: Fix calculation of max_damage in kill_object - this - was being done incorrectly, resulting in fired spell objects causing - incorrect amounts of damage, resulint in some monsters ending up with - a lot of hp. Fix call to kill_object to pass in correct damage value. -server/monster.c: Put in check so that monster won't regen to more hp - than they should have. -server/spell_util.c: Removed unused variable from move_missile. -server/weather.c: fix bug that causes crash if empty space is encountered - on map. -MSW 2003-01-03 - -socket/request.c: Fix buffer (malloc) overrun in esrv_send_stats - more - stuff has gotten to be added, without ever increasing the size of the - buffer to hold it. -MSW 2003-01-01 - -server/time.c: Fix bad code in stop_arrow that caused crashes/improper -freeing of data. -MSW 2002-12-30 - -common/treasure.c: Fix initialization of treasure structs to use calloc. -server/player.c: Fix infinite loop. -socket/loop.c: Make sure we put in null terminator for socket data. -MSW 2002-12-26 - - -New Arrow and Pet Code: -Add bowmode and petmode commands. Allowing the player to change the firing -style for bows to one of either threewide, or spreadshot. -Allow players to change the operating modes of his pet with petmode. Can be -either seek and destroy, defend, or normal historical behavior. -Change bows to impart speed to arrows based on damage and other magical -plusses. Damage decays over distance, to stop arrows from flying forever. -Very fast moving arrows will pierce multiple targets. An arrow moving at a -speed greater than 10.0 will go straight through a target, losing 1.0 of -speed in the process. -Change magic missile to use spell_find_dir instead of find_dir to stop it -from flying in a circle and hitting the caster, and to make it stop -flying into walls to hit creatures behind the walls. - -Various bug fixes: -common/living.c: Reset glow_radius for players, so they stop glowing - after they snuff out their torch or whatever. -server/apply.c: Fix message about improving armour so that it is now - accurate. -server/monster.c: Add some debug lines that may show cause of excess - monster hp. -server/spell_effect.c: fix compile warning in summon_pet(). Clean up - indentation of alchemy functions, but functional changes is to - insert gold nuggets below player (so more of the actions work), - as well as to reset the view position, so that it won't have the - 'previous 50' object selection. Add suggested parens in - cast_detection. -server/weather.c: Fix crash in weather code if snow was only object - on space. -MSW 2002-12-20 - -+++ -server/weather.c: -More weather routines: - -Now the game will attempt to completely reformat the world, and modify it -with the weather and elevation. When dynamiclevel is set to 5 or above, -the game looks at each tile, and the weather conditions present in that -tile. It then consults a table of different terrain types, and what -conditions they prefer to grow under. If the conditions match the spot, -and there is nothing special about the spot (like a house, or a road), -then we drop the new tile type on the overlay map on that location. - -Tuning of this can be done at the top of weather.c, by changing the -weather_tile array. - -Also.. add a feather_map() routine which tries to break up the blockiness -of some of the weather effects by spreading the tiles around. - -This code works.. but needs tuning, and probably a little more testing. -Some of the conditions for the various tiles really need to be looked at, -and fiddled with. -garbled 2002-12-08 -+++ - -common/exp.c: Fix bug were drain attacks added exp. -MSW 2002-12-05 - -server/player.c: Change move_player_attack() so that we look for monsters - to attack even after finding a rollable object - there can be non - blocking rollable objects with monsters on top - we want to attack - the monster, not roll the object. -MSW 2002-12-03 - -TODO: Move more items from my mailbox to the TODO list. -common/living.c: Init item_power in player to zero in fix_player() - - bogus results were getting generated as it just kept getting incremented. -common/porting.c: fix remove_directory so it works properly - checking - for . and .. entries too late, calling unlink instead of rmdir. -include/sproto.h: rebuilt -lib/animations, lib/archetypes, lib/bmaps, lib/bmaps.paths, lib/crossfire.0, - lib/crossfire.1, lib/faces: Rebuilt - new archs added, catch is_thrown - addition to thrown rock/boulder archs. -server/c_move.c, server/c_range.c: Add another parameter to do_skill() - part, which - is closest part of creature to target object - current only used - for the throw code. Update calls to this function to add additional - parameter. -server/c_object.c: Remove the NDI_UNIQUE from the 'item is too heavy - to pick up' so that it won't flood the client with them if players - goes onto space with lots of objects. -server/main.c: Minor cleanup to fix compiler warning about ambigous - if/else. -server/monster.c: Pass closest part of monster when having it use - a skill so that it doesn't throw rocks into itself. Update calls to - do_skill as described above. -server/player.c: Cal delete_player() when player quits - this properly - cleans up any per player unique maps they have. Also, check for - any such maps currently in memory, and delete those so that unique - maps don't get 'gifted' to the next character of the same name. - Update calls to do_skill as described above. -server/shop.c: Combine items of the same name together in the output - of the shop listings. Include the number of items, remove special - casing of some objects so that query_base_name is used for all item - types. -server/skill_util.c: Modify do_skill() to take additional param as - described above. Also, have do_skill return 1 on success, - 0 on failur to use skill, and not return exp - otherwise, - monster code has no idea if skill was successfully used, as throw - doesn't grant exp, and this caused monsters to move into the - object they just threw. Update calls to do_skill as described - above. -server/skills.c: Clean up skill_throw function to return meaningfull - value. Also, pass along extra part of closest monster part - to target. Modify do_throw to return value, use closest - part of body as origin point for thwon object. -server/spell_effect.c: Use isqrt function instead of definining - ISQRT that used float version. Cleans up compile warning - most - likely not seen before as spell was #ifdef SPELL_ENCUMBERANCE out. -server/time.c: Put sanity checking for players speed_left in - move_player_mover() - got some reports of infinite negative speed - on metalforge, and this is the only place in the code where I could - see that happening given the description of the events. -utils/arch2xml.py, utils/cfarches.xsl: New script (and template) by - Todd Mitchell. Script can convert archs to xml, and the template - is usuable with mozilla to look at the output. -MSW 2002-12-02 - - -common/object.c, include/object.h: Add INS_BELOW_ORIGINATOR flag to - insert_ob_in_map - this is used for treasure chests so the - treasure is put below the player. Also fix insertiong of items - on spaces that block view - put them in proper order, and not just - directly above the floor -server/apply.c: Tell player what level they need to be if they are not - of sufficient level to improve armor. Modify apply_treasure to - use INS_BELOW_ORIGINATOR flag, clean up some of the other logic - in apply_treasure. -server/c_object.c: Modify command_take to use the container inventory - when doing a pickup, and not the container itself. -MSW 2002-11-30 - -TODO: Updated with dm 'follow' command. -common/loader.l: Rebuilt. -common/map.c: Fix up some formatting - no code change. -include/player.h, server/apply.c, server/player.c, socket/info.c: Remove - chosen_item_spell field - isn't needed anymore as that information - is determined each time player fires wand/rod/horn. This fixes - those items firing magic bullets if they were equipped when player - saved and rejoined. Some additional cleanup done in rangetostring() - - mostly formatting changes, but minor code changes. -MSW 2002-11-29 - - -include/shstr.h: Update REFCOUNT_TYPE to be an int - seems to at least fix - the bug of server crashing when running around the bigworld - given the - size of the maps, quite possible that enough objects of the same name - would be in memory to overflow the size size of a short. -MSW 2002-11-19 - -Changed a ton of #ifdefs into settings: -convert #ifdef NOT_PERMADETH into settings.not_permadeth. -SET_TITLE and RESURRECTION are now settings. -#ifdef SEARCH_ITEMS -> settings.search_items -#ifdef SPELL_ENCUMBRANCE -> settings.spell_encumbrance -#ifdef SPELL_FAILURE_EFFECTS -> settings.spell_failure_effects -#ifdef CASTING_TIME -> settings.casting_time -#ifdef REAL_WIZ -> settings.real_wiz -#ifdef RECYCLE_TMP_MAPS -> settings.recycle_tmp_maps -#ifdef SPELLPOINT_LEVEL_DEPEND -> settings.spellpoint_level_depend -#ifdef EXPLORE_MODE -> settings.explore_mode -make explore mode actually *work*. -#define MOTD -> settings.motd -#define DM_MAIL -> settings.dm_mail -garbled 2002-11-12 - - -New alchemy code, as discussed on the developer list. Now recipies include -two new tags: skill and cauldron. With skill, you can set which skill -activates this recipie, and the cauldron, corresponds to the arch name of -the facility you will use when creating the item. In this way, item -creation is now more generalized than just alchemy, and specific formulae -can be written to utilize different skills, or perhaps special formulae -would require a hard-to-find cauldron. - -Functionally, the alchemy, or alchemy-like-skills are now activated by -the use_skill command. The secondary use of the alchemy spell has been -withdrawn, so now it functions in the way it was originally intended again. -garbled 2002-11-11 - -socket/loop.c: add a setting fastclock. This makes the server's clock run -*really* fast. For now, it's good for debugging purposes, but in the -future it will allow a dm to ravage a world with weather quickly. -include/define.h: add FLAG_IS_WATER -include/global.h: add fastclock to settings -include/map.h: add water to weathermap structure -include/sproto.h: add tons of new functions in weather.c -common/init.c: update for FLAG_IS_WATER -common/loader.l: update for FLAG_IS_WATER -server/init.c: add code to read fastclock setting -server/weather.c: Complete update, largely rewritten. Now the world is -cut into a 100x100 matrix of weathermaps. Each one of these maps is -computed at initial boot, and written to disk, following which, they are -simply read from disk at boot. For each of the main weather types -(pressure, humitidy, base temperature, wind direction, wind speed) the -game recomputes the entire weathermap, applying smoothing algorithims, or -derriving each map from it's predecessor. Weathermaps are only used if -you have set your dynamiclevel to 1 or greater, and, are using the bigmap -set. At this time, there is still no functional change to the game, -bigmap, or not. -utils/maps.c: This program will generate ppm files from each of the -weathermaps. Mostly for debugging, but curious DM's might find it useful -to see the weather. -garbled 2002-10-27 - -server/c_chat.c: Fix some buffer overflow issues - use snprintf or - use new_draw_info_format instead. -lib/artifacts: Update some cloaks not to require a minimum magic level, - since that will never be met. -MSW 2002-10-16 - -Minor bugfixes: -common/living.c: Fix it so that if you die, you won't _gain_ exp in any - skills - could happen if new table is harder - 3 level loss could still - mean having higher exp total. -common/map.c: Fix on_same_map so check to see if either object has null - map value - prevents crashes. -MSW 2002-10-13 - - -Experience cleanup - the main functional change is that no upper limit of - exp in an individual skill, save for the limit that there is an upper - limit of total exp a player can have. Thus, if a player concentrates - complete in one skill, he could get to level 110 in it. A lot of - code cleanup was done - so much had gotten added to the exp code that it - was a real mess. -common/living.c: re-arrange some of the code, so all the exp related - functions are together. remove adjust_exp(), change check_dm_add_exp_to_obj() - to check_exp_adjust. Add new functions add_player_exp(), check_exp_loss(), - check_exp_add(), subtract_player_exp(). -include/libproto.h: rebuilt. -server/c_wiz.c: Update command_addexp() to use new exp functions. -server/gods.c: Update lose_priest_exp() to use new exp functions. -MSW 2002-10-11 - -configure, configure.ac: Remove --enable-old-layout option - that is more than - 3+ years old now. Add --enable-dmalloc option so code can be compiled - with dmalloc debugging without needing to change/rebuild the configure - files. -common/porting.c: Add stdarg.h to list of included files. -include/autoconf.h.in: rebuilt, HAVE_LIBDMALLOC undef added. -random_maps/square_spiral.c: fix bound checking value. -MSW 2002-10-07 - -common/item.c: Fix bug with identified potions not getting set to proper name. -MSW 2002-10-03 - -Bugfixes: Add golem_count element to player structure so we can properly - detect when golem is destroyed. This fixes a crash in some places as the - code tried to remove this already removed golem. - Fix crash when null player maps. -include/player.h: Add golem_count element to player structure. -server/player.c: Add code in handle_newscs_player() that checks status of - golem, clears op->contr->golem is value is bogus -server/spell_effect.c, server/spell_util.c: Initialize golem_count - value when golem is created. -socket/request.c: Check for null map value. -MSW 2002-10-02 - -Mostly bugfixes, but the addition of a wiz 'hide' command which makes the - wiz out of sight so to speak. --- -common/loader.l, common/loader.c: Fix bug where flag values were being saved - with actual value of the flag (eg, 32768, 16, etc) instead of 1/0 value - - Code effectively worked the same, just was a bit odd looking at save files. -include/player.h: Add hidden element to player structure. -include/sproto.h: Add command_hide(), update proto for players_on_map() -lib/Makefile.am, lib/Makefile.in: add wizhelp/hide file. -server/apply.c: Add error checking to converts so it doesn't crash if the - converter doesn't have a proper other_arch. Modify shopmats so that they - don't transport spell effects, like fireballs an burning hands. -server/attack.c: Modify code so players can drain other players exp. -server/c_misc.c: Modify various functions to not show info on hidden DM. -server/c_wiz.c: Add command_hide(), clean up command_invisible() a bit. -server/commands.c: Add hide command to dispatch table. -server/main.c: Add code to not update players on map for hidden dm. -server/player.c: Give hidden dm perpetual invisiblity. -server/skills.c: Only get exp if you actually stole an item - fixes abuse - whereby players who couldn't carry item could continually 'steal' it from - monster and just gain exp. -server/swap.c: modify players_on_map() to take addition arg to determine if - real players on map should be shown, or if we shouldn't count hidden dms. -socket/info.c: Modify code so that oldsockets don't get reports on high verbose - messages. -socket/metaserver.c: Modify metaserver update to not include hidden dms. -utils/Makefile.in: update datestmp. -MSW 2002-09-27 - - -server/pet.c: Add check to pet_move() to make sure the space we are - checking is within the map, and handle map tiling. -MSW 2002-09-23 - -Various updates: -NOTE - You need to install the updated archetypes (included below) - if you run this code without the updated archs, you will likely find - many things do not work. -acinclude.m4 aclocal.m4 configure: more refinements for libpython detection. -common/button.c: Two push_button() changes - have it check for ACTIVATE_ON_ - PUSH/RELEASE to determine if the object should get activated. Also, - change behaviour of TIMED_GATE so that multipart timed gates work. -common/loader.l, loader.c: Update with acttivate_on_push/release -doc/Developers/objects: Add notes about how to add flags to objects. -include/define.h: add new FLAG_ values -include/win32.h: update by pstolarc so it compiles on Win32. -lib/archetypes: rebuilt -MSW 2002-09-17 - -common/map.c: Fix problem with ordering in check_linked() - checking - for NO_PASS was before checks for inventory checkers, resulting in - inventory checkers that require the player to have an item not working. -MSW 2002-09-15 - - ------------------------------------------------------------------------------- -Changes for 1.4.0: - -server/disease.c: Change move_disease() somehwat - before, if you were - not susceptible to a disease, it would never run its course. Yet you - would still get stuck with the symptoms. there was a case on - metalforge where a character had a symptom with no disease, and - had immunity, yet was still getting stuck with the symptoms. Not sure - if this change will help prevent that in the future or not. -include/player.h: Change item_power in player structure to be 16 bits - - 8 bit values were getting overflowed. -MSW 2002-09-14 - -INSTALL: Update directions with new automake method. -common/Makefile.am, common/Makefile.in: Fix code for building the libproto.h - file - it was including loader.l and not loader.c -common/exp.c: Add init_experience() and dump_experience() functions - - init_experience() loads the experience table from a file. Add default - experience table into this file -common/init.c: Add call to init_experience() -common/living.c: Remove experience tables - players can select the one they - want by changing the exp_table file. Remove reference to new_levels[] - - only levels[] is used now for the formentioned reason. -include/config.h: Update notes about SIMPLE_EXP system. -include/libproto.h: rebuilt. -lib/Makefile.am, lib/Makefile.in: Add exp_table to list of files. -lib/exp_table: New file that contains experience information. -server/c_object.c: Modify command_take() to look for objects above the player - to pick up, then objects below. This fixes the bug with not being able - to use the take command on items from a chest the player opens without - moving off the space. -server/init.c: Add -mexp dump switch to dump the experience table. Allow - the simple experience system to be set in the settings file. -server/skill_util.c: Fix oddness in calc_skill_exp() which could result - in add amounts of exp given. -MSW 2002-09-10 - - -include/sproto.h: rebuilt -lib/help/killpets: New file -lib/Makefile.in: Add help/killpets file. -server/c_misc.c: Add command_kill_pets(). -server/commands.c: add killpets command which kills your pets. -server/monster.c: Add some code in check_enemy so that the enemy - has to be a monster/generator/player to be considered valid - - I was seeing things like arrows ending up as target enemies. -MSW 2002-09-07 - -More bugfixes: -common/loader.l, loader.c: Fix up the handling with speed with respect - to style maps - the objects were still getting put on the active - list. -common/map.c: Fix up blocked_link() to behave more like the - blocked_two() function - inventory checkers and door handling. - Comment out blocked_two since it isn't used anymore. Modify - load_objects to remove objects on style maps from the active - list. Remove some of the debug messages about map loading. -common/object.c: Add remove_from_active_list() function for use - in map.c to remove objects from active list. -common/porting.c: Comment out debug message if open_and_uncompress() - can open a file - caller of the function should print out messages, - and it really isn't much of an error in any case. -include/libproto.h: rebuilt. -random_maps/special.c: Modify place_special_exit() - this should fix - bug of very large treasure maps - problem was if the generated map - size was too small, when generate_random_map was called, it would - generate a newly sized map that was much larger. Code was also - re-arranged some to make it a little more readable. -server/attack.c: Fix crash when creature may not have an owner and - it kills something else. -server/move.c: comment added - no code change. -socket/request.c: Fix off by one error in esrv_send_animation() - - rare condition as it only showed up when trying to send the last - animation (zombie) - only an issue if the player is put on top of - a zombie for some reason (no other space for them) - observed when - leaving the random dungeon in the undead church in scorn without - clearing out all the zombies first. -MSW 2002-09-06 - - -CHANGES: Update build instructions for the plugin. -random_maps/square_spiral.c: Fix bug that could cause the search - function to go off the edge of the map looking for a clear space. - Doesn't happen often, but one crash did happen here. -server/monster.c: Fix some bugs with monsters and wakeup - remove - check for friendly that could never be true, and also fix - logic so that monsters will now find the players. -MSW 2002-09-05 - -common/button.c: Fix do_mood_floor() to look at all objects on space for - something to effect, not just things above the moodfloor. -server/attack.c: Add missing check to make sure the plugin exists before - we try to access the plugin function. -common/readlable.c: Fix crash caused by passing null value to mon_desc - - check for non null was at end of { } do loop - check should be at the - start. -server/monster.c: Make it so that monsters with see invisible are not - immune to blind - monster can be given appropriate resistance to make - it so it is not effected by blind. -MSW 2002-09-04 - -server/main.c: Move #endif in crypt_string to more proper place. -server/monster.c: Fix bad if statement that may have been waking up - monsters when they shouldn't have been. -MSW 2002-09-03 - -This change mostly deals with improving behaviour of pet monstes. -Most of the code is from K. Reinert - however, I did some code cleanup/ -fixes related to pet monsters, so it is difficult to note where -each piece of code came from. One thing this does fix is handling of -multipart pets - these now work properly. -common/map.c: Update comment for get_rangevector() - no code change. -common/object.c: Add get_search_arr() which is used in pet monster code. - This returns a semi random scrambling of the freearr array. -doc/Developers/protocol: Update documentation about map1a protocol command. -include/libproto.h, include/sproto.h: rebuilt. -server/attack.c: Have drain attacks return 1 damage so that it is clear - that you are actually hitting your opponent. Otherwise, you would - get messages that 'you missed xyz', even though you are draining it. - This extra point of damage shouldn't change balance in any significant - way. -server/monster.c: Update hnadling of enemies for pet monsters. It should - more intelligently choose the monsters and not switch/clear the - enemy field for no reason anymore. Change find_nearest_living_creature to - use the get_search_arr() to more randomly choose direction of target - - before, there was a proclivity to always look in the north direction. - Modify can_hit() to look for closes part of enemy - otherwise, monsters - may not attack opponents even if they were right next to them because - they couldn't get to the enemies head. Remove move_object from - this function - merged with move_ob in move.c -server/move.c: Fix move_ob to use 'cleaner' code of move_object, but - also have specific features that move_ob had (player handling). - Before move_ob didn't handle multipart objects correctly, and the - two functions were largely the same. Now move_object() just calls - move_ob - the only difference in the functions is that move_ob() - takes 3 parameters instead of 2 of move_object() (added - parameter is originator). I think this should now mean multipart - player objects may now work. -server/pets.c: get_pet_enemy enhanced to be much smarter about - selecting/finding things for the pet to attack. -server/player.c: Remove commented out line of init_beforeplay -MSW 2002-08-31 - -server/attack.c: Modify drain attack code so that if some agent of the -player is doing the drain (eg, avatar, summoned monster, or even spell), -player gets exp added to his total. Otherwise, the agent could suck all -the exp out of the monster, resulting in no gain for the player. -Also, fix bug in drain code where uninitialized value was being used -if enemy had 0 protection to drain. -MSW 2002-08-30 - -Various bugfixes: -common/map.c: Change so that same logic is used to determine pclose/fclose - that is used to determine popen/fopen - otherwise, compressed map - files probably don't work properly. -common/treasure.c: Do a memset to make sure entire treasureslist is - set to sane values. -lib/archetypes: Fix 'slaying' field (which determines spell name) in - god_spelldirect_face_of_death and god_spelldirect_finger_of_death -server/apply.c: Fix infinite loop if the player had cursed items - that needed to be unapplied to apply an item - setting up next - item iteration was inside if check when it shouldn't be. Also, - print message to player if this is the case. -server/monster.c: Better format some of the code for improved readability. - Fix indentation of can_see_enemy. Clean up invisiblity check - may - have fixed a bug - old code should have worked, but wasn't very - readable. -server/move.c: Fix some bad code from last checkin - didn't fix - the crash on no floor for door type, and instead removed - check type from next line by accident. -server/player.c: Remove call for init_beforeplay - this is already - properly called, and re-calling it resulted in some things being - redone when they shouldn't be. -server/skills.c: Add message if there is nothing to steal form the monster. -server/spell_effect.c: Improve message when invisiblity duration is - maximized. -socket/init.c: change O_NDELAY to O_NONBLOCK of fcntl. -MSW 2002-08-25 - -doc/Developers/objects: Update with new (better) information from - Todd Mitchell. Doc is more complete, and now has an index which - should make it easier to find things. -server/move.c: Fix dereferencing NULL problem - was looking at op->above, - but op could be NULL if the map had no objects on a space (typically - not the case, but...) No reason I can see that we care about the object - above - just process in normal order. -MSW 2002-08-21 - -server/time.c: Possible fix for bug seen on metalforge - - in move_player_mover, make sure we are working with the head of the - monster. -MSW 2002-08-13 - -More spoiler-html fixes - was not including attacktype information, but -also fixed some formatting issues. -common/item.c: Include attacktypes in describe_monster. -doc/scripts/Makefile.in: Add monsters-extract.pl file. -doc/spoiler-html/Makefile.in: Update to use ../scripts/monster-extract.pl - file, remove monster-extract file. -doc/spoiler-html/spoiler.html: rebuilt. -MSW 2002-08-11 - -Fix spoiler-html generation to show resistances. Need to do normal spoiler -next. Add a new docs/scripts directory to hold the common scripts, -instead of spoiler, spoiler-html, playbook, and playbook-html each having -their own copies. -configure, configure.in: Add doc/scripts directory. -doc/spoiler-html/Makefile.in: Update build directions to use - ../scripts/items-extract.pl -doc/spoiler-html/spoiler.html: Rebuilt with updated information. -doc/scripts/Makefile.in: Makefile for directory. -doc/scripts/items-extract.pl: perl version of the items-extract file. -doc/spoiler-html/items-extract: awk version - no longer used. -MSW 2002-08-02 - -common/item.c: Have describe monster show resistances of monsters - useful - for spoiler output, as well probe spell. -server/disease.c: Fix typo. -MSW 2002-08-02 - -include/global.h: add FREE_AND_CLEAR_STR macro, relocate DELETE_STRING - by the other macros. -server/c_misc.c: Fix string printout in applymode function. -server/disease.c: Update name_pl in diseases. -server/player.c: replace FREE_AND_CLEAR with FREE_AND_CLEAR_STR - was - freeing data that shouldn't be freed. -MSW 2002-08-01 - -Various fixes: -INSTALL: Update with note about --with-includes configure option. -common/loader.c, common/loader.l: Add comment about flag_invis_undead -include/define.h: Add FLAG_INVIS_UNDEAD -lib/adm/map_info: Modify to not follow symbolic links. -server/monster.c: Modify can_detect_enemy to be a bit more straightforward - in its logic. Also, modify detection of invisible creatures - don't - reduce duration, just return that the monster can detect the player. - There were also spurious messages about the player being seen. - Modify can_see_enemy to check FLAG_INVIS_UNDEAD, also fix broken - comparison -server/player.c: Clear FLAG_INVIS_UNDEAD when invisibility ends. Fix - action_makes_visible() - had reverse logic on FLAG_MAKE_INVIS check, - and a typo in the printed message. -server/spell_effect.c: cast_invisible() to use FLAG_INVIS_UNDEAD - - also check for maximum duration, and only search active objects when - clearing enemy. -server/weather.c: Fix off by one on comparision when intializing maps - darkness when loading map from disk. In dawn_to_dusk, don't do - further processing if the light hasn't changed. -MSW 2002-07-29 - - - -Various bug fixes, add glyph spell: -TODO: Updated -common/map.c: Fix change_map_light() - if darkness was reduced to zero, - it wouldn't properly notify the players or update the maps they are - on. Also, make it more robust to handle changes by more than one. -include/define.h: Increase NROFREALSPELLS -include/spellist.h: Add glyph spell. -include/spells.h: Add SP_GLYPH entry. -server/attack.c: Fix up kill_object() - it has had some many various - additions that it was difficult to follow the logic. It should also now - do better check on skill objects when awarding experience. -server/player.c: Add some checks/addition to properly deal with freeing the - name_pl in the player object. Fix it so that if you are braced, you - still won't attack friendly creatures. -server/rune.c: Add cast_generic_rune() to handle the glyph and rune spell. -server/spell_effect.c: Fix up some pointers in cast_cause_disease() - - needed so that it works properly when embedded in a glyph. Have it - return 1 even if no one caught anything - you still cast the spell, so - you should lose the grace for it. -server/spell_util.c: Fix some formatting. Break out the code dealing - with rune into cast_generic_rune() -socket/loop.c: Add flag to player command mapping, and update structure - - if flag is set, command can only be issued when player is in play, - and not when waiting at the quit or login prompt - fixes crashes where - players could wait for the map to get swapped out (after quitting), and - then looking at a space. -socket/request.c: Fix map2cmd so that invisible players are drawn. -MSW 2002-07-24 - -Add dm command 'freeze' which freezes a player from doing anything for some -amount of time. -include/sproto.h: rebuilt. -lib/Makefile.in: Add freeze to wizhelp files. -lib/wizhelp/freeze: New file. -server/c_wiz.c: Add command_freeze(). Also, break out - get_other_player_from_name() - several functions need the same logic - of getting a player named X that is not us - making it a function - reduces the duplicate code. Fix some formatting for some functions. -server/commands.c: Add command_freeze to the dispatch table. -MSW 2002-07-17 - -lib/Makefile.in: add a 'archonly' directive that only collects archetypes - and doesn't collect images. -lib/archetypes: rebuilt for fixes made to arches. -lib/collect.pl.in: modified to take second parameter -ARCHONLY, that causes - it not to save out animation, bmaps and faces file. -server/apply.c: Change order of print when applying/unapplying - print out - the 'you apply/unapply' before we print out the changes that applying - the item does. It seems odd for it to be 'you feel stronger. you apply - xyz'. Fix can_apply_object() so that if a player needs to unapply - several items, the right return code is returned and we don't say - the player has a choice. -server/player.c: Fix missing clearing of player->next. -MSW 2002-07-15 - --- Start body commit notes -- -Major commit. This adds body locations which is used for equipping items. -Equipment has information which body part it gets equipped to, and monsters -have information on how which body locations they can have. - -As part of this work, I also did a lot of code cleanup. - -To use this, you must use up to date archetypes - the ones included -in this commit are fine - just make sure you install them. If -you don't, players will not be able to equip items. - -common/arch.c: Initialize body_used to be same as body_info for - archetypes - this way when monsters are created, they can - start equipping items right away. -common/exp.c: update new_exp() - some flags it checked for before no longer - exist or have new names. -common/info.c: describe_item() now takes second parameter - update - dump_abilities to use new calling convention. -common/item.c: Add table that describes the body_info locations and - their names. Add functions that calculate item power for objects - that don't have it set. Update display functions to show - item_power in items. Update describe_monster() - use_horn/wand/rod - merged into just use_range. Modify describe_item() to take second - paramater - who the item is being described for. Show item_power - in describe_item. -common/living.c: Pull out MAXLEVEL from being defined in this file - - define in in define.h, since other files use it. Add NUM_STATS - define - replace hard coded values of having just 7 stats with it. - Update change_abil to not display that the player has a new - attacktype when equipping a bow that has it - fix_player() ignores - the attacktype of the bow, so it was incorrect information. - fix_player(): Initialize player ranges structure to null - - will get filled in by code in function, updated to deal with - updating the body_used data from body_info in the objects. - Replace instances of last_heal with gen_sp_armour. Rearrange - some code to make function more readable. -common/loader.c, common/loader.l: Remove the variable_const information - no - longer needed and confusing for new people when adding in new object - elements. Add set_body_info() - parses the string from the load file and - sets the appropriate array element. Add check_loaded_object() - does - sanity checking for an object after finished loading - replaces need for - long processing directive in the actual rules by having seperate function. - Remove unused flags from load directives (apply_once, no_pretext, - can_apply), add some new ones (item_power, gen_sp_armour), update others - to can_use_range. Replace flag_links with simple array that contains the - name for each corresponding flag. Update get_ob_diff to not use the V_ - values and just include the actual string name - all recent changes have - done this, just updated for old stuff. Update get_ob_diff to save new - values that have been added. -common/object.c: clear_object: Modify to use memset to clear - the structure to zero - this is less error prone than listing - all the specific values, and probably faster. Also, makes it - easier to add new elements - no need to update object.c in most - cases. -common/player.c: Remove get_player_ob routine - this is now merged - in with get_player_ob in server/player.c. Remove generate_ext_title - - not used. -common/readable.c: Update to pass second argument to describe_item. -common/treasure.c: Update to calculate item_power of generated items. - Clean up a lot of code formatting. Update add_abilities - to use gen_sp_armour values, not last heal (note, it appears - the last_heal values weren't being used before). Update - calls to describe item to take second parameter. -doc/Developers/objects: Update will_apply notes, add note about - item_power, body location. -include/define.h: Comment out unused flags (flag_apply_once, flag_paralyzed, - flag_no_pretext, flag_ready_rod, flag_read_horn). Add flag_use_shield. - rename flag_use_wand to flag_use_range. rename flag_ready_wand to - flag_ready_range. Add flag_ready_scroll. Update ARMOUR_SPELLS access - macro. Add AP_PRINT flag to apply flags. Add CAN_APPLY_.. return types - for can_apply_object function. -include/includes.h: add strftime, mktime checks to this file. -include/libproto.h: rebuilt. -include/living.h: Add NUM_STATS define, update extern declarations - to use it for sizing. -include/loader.h: remove the V_.. info and xbm_.. externs that were not - used. -include/newserver.h: Remove ext_tile information. -include/object.h: Add Body_Locations structure, NUM_BODY_LOCATIONS define. - Add definitions for WILL_APPLY values. Clean up object structure - - formatting is now consistent, ordering of values groups values - together more logically. Update all types to use the int8/int16/int32 - types. Several unused fields removed. -include/player.h: Update rangetype enum. Add unapplymode enum. - Clean up player structure - type updates, unused fields removed, - formatting fixed up. -include/spells.h: remove range_name extern. Update SpellTypeFrom - field to combine wand/rod/horn into spellMisc - none of the - spell casting code was differentiating these. -include/sproto.h: rebuilt. -lib/Makefile.in: Add new help files (applymode, bind, brace) -lib/archetypes: rebuilt for body_info, gen_sp_armour, item_power, - can_use_shield information. -lib/artifacts: updated for item_poer and gen_sp_armour changes. -lib/treasures: remove unused _force for player treasure. -plugin/plugin_python.c: Change FLAG_USE_WAND to FLAG_USE_RANGE. -server/apply.c: Move stftime, mktime to include/includes.h. Remove - draw_find() - one line function can just as easly be in the - code itself. Update calls to long_desc to pass second parameter. - move gravestone_text() to player.c file. Add direction parameter to - apply_scroll() - in this way monsters can use it properly. - Remove dead code. Update apply_special function. Add - unapply_special(), get_item_from_body_location(), unapply_for_ob(), - and can_apply_object() functions. -server/attack.c: Remove SET_FLAG(op, FLAG_PARALYZED) line - no code - was ever checking status of FLAG_PARALYZED. -server/c_misc.c: add command_body() which dumps body information for - player. Update who as idle element in player structure removed - - was not being used by anything. Add command_applymode() to - set players prefered unapply method. Remove calls to unlock_player() - in various functions - unlock_player() has not done anything - meaningful for a while. -server/c_object.c: Modify long_desc to take a second parameter - which is who is examing the object. this is needed so that we - can pass it down to some of the lower level functions. - Update calls to describe_item to pass this second parameter. - remove FLAG_NO_PRETEXT code - no archetyps were using it. When - examining objects, also tell player where to put them on. -server/c_range.c: Update legal_range() - we now store the object that - is responsible for a range in the player object, so code is - much simpler. Update change_spell() to not destroy golem - just by readying another spell - we now let players regain control - of golems after switching to another range. Update change_spell - to use item name of object for range description. -server/c_wiz.c: remove reference to count_left from player object - - field removed from structure. -server/commands.c: add new commands (applymode, body) to command dispatch - table. -server/login.c: Remove unlock_player() and lock_player() and calls to it - - current checking of names at login should be sufficient to - prevent duplicates. Remove dead code from check_name. Update - load/save code for unapply mode value. Add set_flag(op, - FLAG_USE_SHIELD) if player is allowed to use armor - needed since - flag_use_shield is really a class feature and so is not automatically - updated for old player files. -server/main.c: Remove references to count_left. memset marker object to - NULL - seems to increase stability on metalforge server. -server/monster.c: Many updates related to the body info - monsters follow some - rules as players. Add monster_should_cast_spell function - monsters will - use this for all spellcasting related actions (abilities, scrolls, wands, - etc). Update for merged rod/horn/wand ranges. Update bow use by monsters - - they don't actually need to equip it to fire - this way we don't need to - constantly swap the monsters weapons between the bow and melee item. Use - fire_bow from player.c for most of the work. Modify scroll usage - - monster will use it when player is near, not when it first picks it up. - Add FLAG_READY_SCROLL to denote the monster has a scroll to use. Also, - monster now casts it in appropriate direciton. Merge the - monster_use_wand/rod/horn into monster_use_range. Modify - check_good_weapon and check_good_armour to just look at the stats of the - two items without needing the monster to apply it first. -server/player.c: Print motd in green so it is more noticable. Update - get_player function to do work it did before as well as that of - get_player_ob. Have get_player take a parameter which is the object of - the player if he has one. Modify to use memset to clear the player - structure - more sure fire than explicitly listing values to initialize. - Remove calls to unlock_player. Modify fire_bow so that monsters can also - use the function. Add fire_misc_object() to fire_wand/rod/horn - removes - code from fire(). Add gravesetone_text() to this file. -server/shop.c: Update to pass second parameter to describe_item(). -server/skill_util.c: Update check_skill_to_fire since there are fewer - rangetypes now. change range_scroll name to range_golem, as that is - a bit more accurate for what it actually does. Modify show_skills() - to show player his item power and total of items he has equipped. -server/skills.c: Add second paramater to long_desc, remove references to - count_left. -server/spell_effect.c: Add second paramater to long_desc, remove references to - count_left. Update range_scroll to range_golem -server/spell_util.c: remove references to count_left. Update messages - if player trying to cast where he can't with new range names. -socket/info.c: Update range information and how we display what it is - - we will use the object name of the range if available. Remove - reference last_known_spell, last_shoot, last_spell, last_value - player structure fields. -socket/init.c: Remove ext_title information. -socket/request.c: Add element for life_stealing in the resistance array. - Remove references to idle, count_left in player structure. remove - ext2 title information. -MSW 2002-07-14 --- End body commit notes -- - -common/anim.c, common/button.c, common/friend.c, common/glue.c, - common/init.c,common/logger.c, common/los.c, common/porting.c, - common/time.c, common/utils.c, crossedit/png.c, crossedit/xutil.c, - include/attack.h, include/config.h, include/map.h, include/material.h, - include/newclient.h, include/skills.h, include/treasure.h, - random_maps/decor.c, random_maps/door.c, random_maps/floor.c, - random_maps/monster.c, random_maps/special.c, random_maps/standalone.c, - random_maps/style.c, random_maps/wall.c, server/alchemy.c, - server/c_chat.c, server/c_party.c, server/gods.c, server/hiscore.c, - server/init.c, server/pets.c, server/resurrection.c, server/rune.c, - server/time.c, socket/metaserver.c: Update banner copyright - with proper contact information. -MSW 2002-07-14 - -server/disease.c: Fix propogation of diseases with negative damage (these - do a percent of the creatures damage). The new disease was getting - a damage rating of 1 in all cases because we were passing a negative - value to random_roll for the top end of the range. -MSW 2002-07-08 - -common/arch.c: Add 'unlocked' match for item_matched_string. -lib/help/drop, lib/help/dropall: Help files for these commands. -lib/Makefile.in: Update to include help commands above. -server/spell_effect.c: Fix formatting of summon_pet() function. Modified so - that it no longers sucks player spellpoints when casting it via scroll - - scrolls should not cast the player spellpoints. No idea why that code was - there - in fact, casting off a scroll used more sp than casting from - memory. Modify cast_cause_disease() function so that if the passed - direction is 0, we refer to the facing and cast in that direction - this - means spells of cause disease now work. Also perform some minor formatting - changes in the function. -TODO: Add not about inscription. -MSW 2002-07-05 - -common/arch.c: Fix bug in item_matched_string which was matching all - values (inverse in fact) when passed with count > 1 in matching - string - missing ! operator. -README: Update - remove note about windows client, since it is currently - unsupported and could stop working in some future release. -MSW 2002-07-05 - ------------------------------------------------------------------------------- -Changes for 1.3.0: - -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 - ------------------------------------------------------------------------------- -Changes for 1.2.0: -Makefile.in, include/version.h: Update for 1.2.0 release -lib/Makefile.in: have it make an archive for the archetypes. -MSW 2002-04-28 - - -doc/Developers/protocol: Add documentation about the map2 protocol command. -socket/request.c: Fix bad indentation for the map2 function. No actual - functional code changes, but some comments updated. Running diff with the - -w option will make the changes, or lack thereof, more viewable. -MSW 2002-04-28 - -crossedit/xutil.c: Update to use name of png file. -lib/archetypes: collected - pl_dragon arch changed a while back, with no - new collect. -lib/collect.pl.in: Add some notes about usage if no option is given or - if --help is given. -server/gods.c: Fix that resulted in weapon/armor restrictions not working. -MSW 2002-04-23 - -Various minor bugfixes. Note the changes may appear larger than they -really are due to formatting/indentation changes. Run diff -w to -supress those: -make_win32/installwin32.bat: Update for new image files. -server/c_object.c: Fix SAVE_INTERVAL #ifdef block. It failed to compile - as it was written. Simplify code, but it should have the same effect. -server/move.c: Modify push_object so that if a player swaps position - with his pet, we send a esrv_map_scroll. This should save bandwidth, - and also prevents display corruption when fog of war on the client - is in use. Add some new comments, adjust some formatting. -server/player.c: Fix minor typo in comment. -server/skills.c: Modify new_draw_info that is responsible for the - "You pray" messages to not have the NDI_UNIQUE flag so that - they can get batched up, depending on users value of output-count -server/swap.c: Remove swapped out per player unique maps from the list - of maps. Reduces cpu and memory consumption by a minor amount, and - results in a cleaner 'maps command output. -server/weather.c: Add standard crossfire banner to top of file. - Modify long long declartion to just be a long. -MSW 2002-04-20 - -socket/item.c: Add checks to esrv_move_object - before it just trusted -the client that the destination target to move items into was a container. -Now do valid checking that the object can be picked up, that the container -can hold it, etc. MSW 2002-04-18 - -Add utils/crossloop.web.in script. This script is used on metalforge - - it generates the backtrace file, compresses the core, and sends out - mail. -configure.in, configure: Rebuilt to make the crossloop.web script. -utils/Makefile.in: Install the crossloop.web script. Include the - crossloop.web.in script when making the archive. -utils/crossloop.web.in: New file. -MSW 2002-04-14 - -Update to improve image caching and faceset support in the client. - The main change is adding the 'requestinfo image_info' and - 'requestinfo image_sums' commands. -common/image.c: Checksum the bmaps file when we load it - we send this as - part of the image_info data. -doc/Developers/protocol: Document the requestinfo data. -include/global.h: Add extern for bmaps_checksum, and the define for - ROTATE_RIGHT which is used for checksumming. -include/newserver.h: Update SC version to 1027 so that clients can - know if they can issue requestinfo commands. -include/sockproto.h: rebuilt -lib/adm/collect_images.pl: Add support for it to make a crossfire-images - distribution that the client can use to bootstrap its image set. -socket/image.c: Change SendFaceCmd to take a NewSocket parameter instead - of a player parameter - in this way, it can be used before the - AddMe command - this allows the client to download images before - issuing that command. Add send_image_info and send_image_sums - function which send the requestinfo data to the client. -socket/loop.c: Move the askface command from the player commands to the - newsocket commands. Add RequestInfo functino that determines the - type of request and calls the specific function to deal with it. -MSW 2002-03-25 - ------------------------------------------------------------------------------- -Changes for 1.1.0: - -Updates for 1.1.0 release - pretty much all minor bug fixes, like -compiler warning messages, invalid ANSI C constructs, missing files to -include in the distribution. -Makefile.in, include/version.h: update version. -include/Makefile.in: Add some missing files -include/libproto.h, sproto.h: rebuilt to prevent compiler warnings -lib/Makefile.in: Include the wizhelp files in the archive. -server/apply.c, server/skill_util.c: fix invalid code (function parameter - names can't match structs/typedefs), add a missing return value. -server/c_move.c, server/c_new.c, server/c_object.c, server/commands.c, - server/daemon.c: Don't include the sproto.h if CEXTRACT is defined. -server/plugins.c: fix printf command that was printing wrong value type. -doc/spoiler-html/Makefile.in: Remove extraneous newline - -server/player.c: modify play_again to remove the player object if not done so -already. This fixes a crash observed on metalforge when a player quit at the -roll/swap stats prompt (undocumented that you can use 'q' then to do so). It -looks like this should also fix crashes that may be associated with the kick -and shutdown wiz commands. -MSW 2002-03-12 - -Added new dragon race to crossfire. -Players of this dragon race can gain resistances -by eating the flesh of their defeated foes. -They can also specify in a certain resistance-type -and gain various abilities when increasing levels. -This "focus" can be switched by eating very special -As announced on cf-devel, this is the patch which -adds a new dragon-race to Crossfire. -Players of this dragon race can gain resistances -by eating the flesh of their defeated foes. -They can also specify in a certain resistance-type -and gain various abilities when increasing levels. -This "focus" can be switched by eating very special -flesh, which will be available for sale. -Dragon players gain special titles which cannot -be overwritten by manually set titles. -AndreasV 2002-03-01 - -lib/collect.pl.in: Modified so that it uses the image.base.xyz.png to make -sure each listed face in objects has an image, and not the old xbm images -for that task. Also, ignore all files that end in .png, .xpm, or the -face extension - consider them legitimate files for the arch directory. -MSW 2002-02-25 - -socket/image.c: Change type of image data to be uint8 from char. Checksums -were being incorrectly calculated when using the char type. MSW 2002-02-25 - -server/main.c: If exit is damned, update players death & WoR home-position - and delete town portal. -server/apply.c: Fix bug in move_apply. return was used instead of goto - leave, so recursion_depth wasn't decremented. -mids 02/13/2002 - -server/spell_effect.c: Fix bug in summon_cult_monster that would result -in crash if monster was killed when inserted. MSW 2002-02-10 - -common/map.c: load_map_header: If the map message is empty, don't copy - uninitialized data as the message. This fixes various crashes. -lib/Makefile.in: Remove the adm/*xpm* utilities, as they are no longer - needed or distributed. -server/apply.c: set the player speed to zero after they use a savebed. - Fixes crashes with players that have constant image animation (fireborns) - when they apply the savebed and the map then gets swapped out. -server/plugins.c: Fix some serious memory leaks. Some still remain, with - my comments included. -server/skills.c: Removed unused variable. -MSW 2002-02-05 - -include/player.h include/sproto.h server/c_chat.c server/player.c: - New player command 'reply', replies to the last person who told you - something. -server/c_wiz.c: New DM command 'teleport', lets a DM teleport next - to target player, it is an inverse summon. -server/commands.c: Add hooks for 'reply' and 'teleport'. -mids 2002-01-16 - -TODO: updated with bugs, remove things that have been done and are no - longer TODO's. -configure.in, configure: Remove lib/xpmtopix.pl file form those to be - built, as that file has been removed. -common/object.c: Fix bug in check_walk_on which would result in spell - objects not being properly processed - the intention is not to process - spell objects - we should stop going up (in previous loop) when we - get such an object, not on the way down. This fixes directors not - working really well. -MSW 2001-01-13 - -Add the concept of overlay maps to the code. An overlay map is a map which -is loaded on top of another map, replacing values in the header, and placing -objects on top of other objects. This is the fundamental part of the new -weather code, but also can be used to allow dynamic editing of the worldmaps -by DM's eventually. -garbled 2002-01-01 - -server/spell_effect.c: fix animate_bomb so that if the bomb is in a container, - it does not crash the server - the problem was that it was calling - drop, which would then drop it right back into the container. also, the - x and y coordinates were not being properly set. -MSW 2001-12-31 - -This change lets the server have multiple image sets. The client -can then request which image set to use, and the server will use -that image set, falling back to other sets as necessary. I have tested -this with CVS client, and works fine at least in terms of old functionality. -= -doc/Makefile.in: Add images file which describes image guideline. -doc/Protocol: Various updates - some things missing, added other notes - about facesets. -doc/images: New file, describes guidelines for image sets, as well - as some of the internals -include/newserver.h: Update for multiple image set - redid most of the - image definitions as they were out of date with only png being supported. -include/sockproto.h: rebuilt -lib/Makefile.in: remove crossfire.png, add crossfire.0, crossfire.0. Update - build directions to use crossfire.0 instead of crossfire.png -lib/adm/collect_images.pl: Modified to collect all the image sets, remove - support for collect xpm and xbm images. -lib/crossfire.0: new file, base images -lib/crossfire.1: new file, alternate images -lib/image_info: New file, describes image sets. -lib/crossfire.png, lib/xpmtopix.pl.in: Removed - no longer needed. -socket/Makefile.in: add image.c file. -socket/image.c: Moved all image related data in this file - this includes - loading the image files, as well as the protocol commands. -socket/init.c: move read_client_images to image.c file. set ns->faceset - and ns->facecache to 0. Move freeing of image data to image.c -socket/request.c: fixed some indentation inconsistencies.add setup commands - for faceset as facecache. Move SetFaceMode,SendFaceCmd,esrv_send_face - to image.c file. -MSW 2001-12-31 - -common/loader.l, common/loader.c, common/object.c, include/object.h, - socket/item.c: - Remove sub_type and sub_type2 information - - these were poorly named fields and not properly implemented. -common/treasure.c: Add missing return type to change_treasure function. -crossedit/Edit.c: Add SET_MAP_FLAGS macro to set P_NEED_UPDATE flag - before calling update_position. -include/config.h: Add NEW_WORLD_MAP selection which results in proper - emergency save paths if you are using the maps-bigworld distribution. -server/c_wiz.c: Fix the formatting (indentation) of the command_create - function. No actual changes in how it runs, but the old - formatting was really terrible and inconsistent. -server/main.c: remove call to send_mapstats_cmd -server/monster.c: Update the comment style to be proper, as well - as the comments themselves. -socket/request.c: Fix up improper indentation in esrv_update_stats. - remove send_mapstats_cmd function. -MSW 2001-12-23 - -Lots of changes here. Basically implement a night and day system, as -well as tracking of game time. A clockdata file is now created and -updated by the server to increment time. Time increases by 1 hour, -approximately every 2 minutes of real time. Right now this code has -virtually no effect, but as maps are updated with outdoor settings, -nightfall will occur automatically. The time command has been modified -to show the current game time, and the clock objects have been changed to -show the game time as well. -garbled 2001-12-18 - -common/map.c: Fix some bugs relating to map tiling. MSW 2001-12-16 - -common/object.c random_maps/Makefile.in - server/c_wiz.c server/player.c server/plugins.c server/timers.c - socket/request.c: Most of the changes are to just fix compiling warnings - or errors so that it compiles on sparc solaris with the workshop - compiler (things like }; should just be }). Declaration for alphasort - was missing in plugins.c. random_maps/Makefile.in had the wrong order in - linking - the system library needs to be linked in after the crossfire - libraries. -crossedit/App.c: Fix for running on 8 bit color - colormap was not being - initialized to usuable default value. -crossedit/xutil.c: Broken code when duplicating faces for undefined - images. That code should never really be used, as pixmaps currently - are always contiguous. -MSW 2001-12-15 - - -Include mapstats cmd for extended clients (sdl iso). Cmd is needed for automaps - ambient media infos, map name and map parameter infos. Paramter infos are used - for "fire & forget" animation tags inside the map2 cmd (next patch). -server/main.c: include a automatic mapstats cmd every time the player enters a new map. - Its the "default" mapenter cmd. The script event should used for special cases. -include/sockproto.h and socket/request.c: include the mapstats cmd function. -MT 2001-12-03 - -This checkin for the most part removes support for xpm and xbm graphics - - now the only image supported is the png. -common/arch.c: comment out printing on warning of object having no type - - getting 300 meaningless messages at startup is annoying. -common/image.c: Remove X11 color information from colorname array. Remove - processing of color_fg and color_bg information from face file - only - use color_fg if no magicmap information is available - foreground - and background infoformation was only needed for bitmap graphics. -common/loader.c, loader.l: Add elevation element, comment out some logging - messages that are excessive and only really relevant for people - who want to fix them (really should be in the collect script - anyways). Remove some unused code. -common/map.c: add outdoor field to map structure - add support for loading - and saving it. -crossedit/App.c,crossedit/CrUtil.c, crossedit/Defines.h, crossedit/crossedit.c - crossedit/xutil.c: Remove support for non png graphics. -crossedit/Attr.c: Add support for elevation variable, remove code for non - png graphics. -doc/map-technical: Add note about outdoor field. -include/face.h: remove fg, bg fields from face struecture. -include/global.h: Update colorname array definition. -include/loader.h: Add V_ELEVATION field. -include/map.h: Add outdoor field to map structure. -include/newserver.h: Update types so it only loads/knows about png information. -include/object.h: Add elevation field to object structure. -lib/Makefile.in: Remove support for building crossfire.xpm and crossfire.xbm - files. -lib/animations, lib/archetypes, lib/bmaps, lib/bmaps.paths, lib/crossfire.png, - lib/faces: Rebuilt. Main difference is a few sea types, and the fact - that it hadn't been collected for a while. -server/spell_effect.c: Modify dimension door so that it calls MapNewmapCmd - so that fog of war does not get confused. Also, removes call to - draw as functions further up will do that. -server/spell_util.c: Remove color information from attack information that - shuffle_attack uses. -socket/init.c, socket/request.c: Remove support for non png images. -MSW 2001-12-02 - -Various minor bugfixes - -common/loader.c: rebuilt -include/map.h: Change width,height,enter_x,enter_y to be 16 bit instead - of 8 bits. -lib/treasures: change skull treasure to tooth instead of skull_tooth since - the later is not currently in the distributed archetypes file -server/monster.c: Optimize some code, remove some other that is not used. -server/plugins.c: Fix un initialized value in initPlugins that would - cause crash at startup if plugin directory does not exist. -MSW 2001-11-13 - -common/object.c: Modify copy_owner so that if a player is passed in - as the object to copy, we properly set that player as the owner of the - object instead of returning. This fixes the lack of exp when poison - inflicted from a weapon kills something. MSW 2001-11-05 - -common/map.c: Fix bug in get_rangevector which was causing reverse - of documented procedure. This also resulted in monsters not attacking - adjacent creatures with physical attacks. MSW 2001-11-03 - -Add weapontypes to the game. These are currently used for nothing other -than messages, which are not fully written yet. Players should not see them -appear yet. -Fix the bug where you opened a door with a key and saw "You ." -Fix a bug in the PLUGIN code where current_weapon wasn't set when the -player loaded from savefile. -Take the setting of current_weapon out of #ifdef PLUGIN -garbled 2001-10-31 - -server/spell_util.c: Add out_of_map check to can_see_monsterP. Fixes - crash when casting ball lightning/divine shock (and likely other events) - on maps not surrounded by walls. MSW 2001-10-07 - -New attacktype messages for damage. Now it gives you the message for the -damage type you actually did. So if you are attacking with stormbringer, -you get electrical or drain-based messages. Also added special messages for -the attack-based skills like punching, karate, etc. -garbled 2001-10-06 - -common/map.c: Add INS_ON_TOP flag to insert_ob_in_map calls to preserve - stacking order. Modify update_position to generate map spaces with - more proper order. -common/object.c: Modify insert_ob_in_map so that it preserves stacking - if INS_ON_TOP is set. -crossedit/CrEdit.c: Add missing code that would draw third face on a space. -include/object.h: Add INS_ON_TOP flag/define. -random_maps/exit.c: Modify code so that if the random maps leading to - a special map are reset, they will properly link in with an already loaded - final map (and update exit from final map back up) as needed. Also fix - bug in that if the final map has been reset, a new one will now be properly - loaded. -random_maps/random_map.c:Update minimum size to be 7 (up from 6) - fixes - bug which caused crashes when square_spiral maps of 6x6 would fail to - generate. -random_maps/random_map.h,random_maps/room_gen_onion.c: move OPT_values from - room_gen_onion to random_map.h since the square_spiral code uses them. -random_maps/square_spiral.c: Update call to map_gen_onion to use - OPT_.. values instead of constant integer. -random_maps/treasure.c: Add some casts to sprintf statements to eliminate - some compiler warnings. -server/main.c: Modify enter_exit code such that a random map has - reset, we generate a new random map. This can happen when the random_map - resets before the map that leads to them resets. -MSW 2001-10-06 - -Add a new command category called communications commands. Place tell, -shout and say in here. Also create emotion functions. These functions -have no real effect on the game, but make communications between players -more colorful and fun. They are mostly fluff. Included with this patch -are two new convenience functions, new_info_map_except, and -new_info_map_except2, which allow the programmer to write to an entire -map, except for certain individuals. - -garbled 2001-09-27 - -Add complete processing code for luck. This new code removes all -previous instances of luck, and adds a few new convenience utilities. -Now, every die roll in the game is affected by luck in some small way. -This causes luck to be an intangible benefit to the player, without -totally unbalancing the game. The new functions are random_roll, -die_roll, and rndm, which should be used in place of RANDOM() whenever -possible. - -garbled 2001-09-26 - -This checkin mainly fixes multipart teleporters - they should now -work properly. Also a minor fix to make the new pickup code work. -server/apply.c: apply_shop_mat rewritten to be more 'presentable'. - Minor changes were needed in any case to pass the player/creature - a a second object to teleport. -server/c_object.c: change the sscanf to be unsigned when getting value - for new pickup mode. At least on my system, if the value in the - string was larger than the max signed value, sscanf set it to the - max value. -server/move.c: teleport function largely re-written. Instead of the - third arg being the 'originator', it is now the object to teleport. - This allows the head of the teleporter to get passed to this function - even if the object to teleport is not on the head. -server/time.c: move_teleporter modified to also check for objects on the - other parts of multipart teleporters. Also, pass the head object - to the teleport function so that proper destination is used. -MSW 2001-09-02 - -Add Nils Lohner patch that new selections to the pickup mode. - -include/define.h: Pickup type defines added. -include/player.h: Change mode (pickup mode) to 32 bits. -server/c_object.c: command_pickup function modified to support all - the new pickup options. -server/player.c: Fix for path_to_player to prevent crashes. Add check - in move_player_attack just in case. check_pick function modified to - support new pickup options. do_some_living modified to eat flesh - items if player is starving and they don't have any food. -server/spell_effect.c: cast_detection modified so that detect magic/curse - will not show objects beneath the floor. Change so that detect_monster - and detect_evil spells copy the face of what they detected - gives better - appearance on client. -socket/item.c: fix bug LookAt that ws checking blocked_los on wrong - offset. -MSW 2001-08-28 - -Enhancements to make monsters 'do the right thing' with relation -to tiled maps (ie, will detect players and attack them if on an adjoining -tiled maps). This involved a rewrite of path_to_player - I've tested this -out, and if anything, it seems that monsters may be more aggressive on -spellcasting. -++ -common/map.c: blocked modify to make sure it is checking valid coordinate - value. blocked_link,blocked_two modified to translate for tiled maps. - Add load_and_link_tiled_map which loads a tiled map and links in all - pointers relative to adjoining maps. out_of_map modified to use - this function instead of doing the work itself. Add get_rangevector - function that returns offset, direction, and distance between two - objects, taking into account tiled maps. get_rangevector_from_mapcoord - added which is similar to get_rangevector, but takes a map and coordinates - instead of a second object. on_same_map function added which returns - true if the two objects are on the same logical (ie tiled) maps. -doc/crossfire.doc: Add note about what Int does for monsters. -include/map.h: Add some comments, and add structure for rangevector - function return values. -server/attack.c: add calls to on_same_map instead of doing op->map - comparisons. -server/monster.c: Many functions modified to properly handle tiled - maps properly. -server/pets.c: get_pet_enemy modified to know about tiled maps. -server/player.c: get_nearest_player modified to know about tiled maps. - path_to_player rewritten to know about tiled maps - I think some other - bugs were also fixed in return values. Split player_attack_door - from move_player attack to keep functions a more reasonable size. - move_player_attack, player_can_view modified to know about tiled - maps. -server/skills.c: can detect_enemy modified to take another parameter - - call in steal updated to pass this parameter. -server/spell_util.c: ok_to_put_more, can_see_monsterP modified to - handle tiled maps properly. -socket/item.c: look_at modified to return proper results when player - looks at something on an adjoining tiled map. -++ End of checkin - -common/object.c:decrease_ob_nr modified to correctly update client when - player uses item from container that is on the ground (bookshelf for - example) -server/time.c: move_teleporter modified to skip over wall/floors and - teleport whatever is above them. -MSW 2001-08-05 - -common/map.c: modify link_multipart_objects to preserve name and title of - head when making the more parts. modify update_position so that it should - never show an invisible face to the player. -common/object.c: fix check_walk_on so that spells will now properly get - affected by spinners and directories. -include/sockproto.h: Rebuilt to include MapNewmapCmd -server/hiscore.c: Fix crash if player savebeds map on map which does not - have a name. Use the path instead. -server/move.c: modify teleporter function to send MapNewmapCmd to client - if player got teleported. Needed for fog of war code. -server/time.c: modify move_teleporter so that it will not teleport walls. -socket/Makefile.in: Modified to use cproto to generate proto files. -MSW 2001-08-04 - - -common/Makefile.in crossedit/Makefile.in doc/Makefile.in -doc/playbook-html/Makefile.in doc/spoiler/Makefile.in -doc/spoiler-html/Makefile.in lib/Makefile.in lib/crossfire.png -random_maps/Makefile.in socket/Makefile.in utils/Makefile.in: Fix up -so that distclean now clears out all appropriate files - MSW 2001-08-01 - -common/map.c free_map Set in_memory status to MAP_SWAPPED - fixed bugs of maps - not getting reset properly -common/object.c: insert_ob_in_map - was passing wrong value to check_walk_on, - resulting in some things not working as expected. -doc/Protocol: Clarify how the sending of the version command works. -server/move.c: move_ob redone. It should hopefully be more efficient (only' - remove objects after verifying they can in fact move). IMO, code is - also simpler, and hopefully has fewer bugs. -socket/init.c: InitConnection - modified to set faces_sent[0] to one - so that we will never send any information about face 0 to the client. - facecode 0 is sent in the map1 command to clear spaces/layers. -MSW 2001-07-30 - -Added support for the newmap cmd needed for the fog_of_war code -in the gtk client. -include/newserver.h: added newmapcmd:1 to NewSocket struct -server/main.c: added call to MapNewmapCmd in enter_map() -socket/init.c: init code for new newmapcmd value in NewSocket -socket/request.c: deal with "newmapcmd" value in client setup string - Added MapNewmapCmd( player* pl) function. -SMACFIGGEN 2001-07-21 - - -common/object.c: remove_ob - set P_NEED_UPDATE before calling update_position -to prevent warnings from update_position being called with P_NEED_UPDATE -being set. MSW 2001-07-19 - -socket/request.c: Fix bug in map1 command which resulted in it sending -too much data with even maps. For example, if the client requested -a 16x16 map, the server would effectively send a 17x17 map to the client. -MSW 2001-07-19 - -+++ -Major redo of map code: -1) Remove encounter map support (with the much better random map code, - I don't see much reason for it) -2) Remove map_ob from map structure, and instead store relevant information - in map structure itself. Remove strange meanings (stand_still meaning - fixed reset time for example) -3) Redo internal structure of map and how information on each space was - stored - this should make future extensions much easier, as well - as making debugging easier. -4) Make USE_LIGHTING standard part of game. -5) Redo how lighting objects are handled - instead of making a linked list - of the light giving objects, at field to mapspace that contains - lightsource for the space. -6) Rewrite insert_ob_in_map to take optional parameter that determines - other behaviour. This replaces insert_ob_in_map_simple. - Function now does sorting of some objects, so performance for lots of - spell objects on one space should be much better. -7) Change how multipart objects are saved. Now only save the head, and - link in the rest of the parts when map is loaded. Additional parts - linked in are put just above floor level when linked in, so things like - shops won't hide items that someone drops on them. For monsters, this - linking shouldn't be a problem - once they start moving, they will get - relinked as normal (on top). -8) Modify update_object to only call update_position when necessary - (ie, space attributes change). Otherwise, let the map transmission - code call update_position when necessary (ie, in players view) - this - saves cpu time as time will not be spent updating spaces that no one - will see (before, how the space looks was updated whenever a space - had an object added or removed). - -TODO: remove some things that have now been done. -common/Makefile.in: Remove ltostr.c and sqrt.c from list of files -common/ltostr.c, common/sqrt.c: Moved into porting.c -common/anim.c, common/button.c, common/item.c: Update calls to update_object -common/living.c: have fix_player calculate light value for player/monster. -common/logger.c: Remove code that has server exit if too many LOG messages - happen too quickly. This was not a reliable mechanism, and it should - really be up to the functions doing the logging to know if they can - continue or not. -common/los.c: Changes on how it deals with lighting on maps - get light - value from map space array instead of using the linked list. Functions - that managed the light list have been removed. Change logic of - line of sight function to be more efficient (before, we may examine - the same space multiple times). rename update_all_los to - update_all_map_los, and change update_all_los to take coordinates - so that we only have clients within view of the change recalculate - los. Also, have update_all_los check for tiled maps that may have - clients that need to get updated. -common/map.c: remove refresh_map - this used to be used to try to recover - from map errors if many_cores was not set - IMO better to core and - just restart and really fix the error than try to deal with possible - corruption that may otherwise result. - Move open_and_uncompress and close_and_delete functions to porting.c - - they are 'common' functions that are not related to the map code. - Remove some lighting related code, as that is no longer done with - a list. Many modifications because of new map structure. And - logic to load and save the new map structure format. Modify - many of the functions to take map tiling into account. Change - way multipart objects are saved, and add logic to relink objects - when maps are loaded up. Remove some functions that are only - used by the editor into the editor. Move update_position from - object.c to map.c as it is better placed in map.c. Modify - function to figure out light for a space. Make out_of_map a - function that knows about map tiling. New function - get_map_from_coord - which knows about map tiling and does coordinate and map translation. -common/object.c: Have update_object take another parameter which tells - update object what has changed about the object. This lets the function - know if it should call update_position right away or if it can just - mark the space as needing an update at a later time. move update_position - to map.c. - insert_ob_in_map: now takes another parameter that describes actions not - to do. modified to know about map tiling and do appropriate translation. - Does some object sorting so it should handle spell objects more - efficiently. - insert_ob_in_map_simple is now replaced by - using appropriate flag to this changed version of insert_ob_in_map. - Clean up remove_ob - seemed to have done things in a more complicated - fashion that is no longer necessary. Modify check_walk_on to look - at all objects on space, not those below the object - with changes to - insert_ob_in_map, new object won't always be on top. -common/porting.c: functions from ltostr.c, sqrt.c, as open_and_uncompress - close_and_delete, make_path_to_file from map.c -common/treasure.c: Modified to use updated insert_ob_in_map -crossedit/Attr.c: Rename Layout to AppLayout so other files can use it. -crossedit/CrEdit.c: Modified to use new map header. Modified drawing - routines, as face values could be null -crossedit/Edit.c: Move many functions from common/map.c that are only - used here and thus don't need to be in common/map.c. Modify to use - new map structure. -crossedit/Makefile.in: Change to use cproto to make proto.h file. -crossedit/png.c: change user_read_data to be static so proto doesn't pick - it up. -doc/Makefile.in: add map-technical to list of files. -doc/crossfire.doc: remove map information that was in this file. -doc/map-technical: new file. Describes inner workings of how the maps work. -include/config.h: remove RANDOM_ENCOUNTERS (no longer available) and - USE_LIGHTING (now standard part and always on). -include/define.h: move P_... values to map.h -include/global.h: add definition for compression externals, as they - are used in a few files. remove map macro functions - moved to map.h - as appropriate. Add FREE_AND_CLEAR macro that frees data and then - sets the pointer to NULL. -include/map.h: Largely redone - many new macros, new map structure. -include/object.h: remove lights object link pointer from objects. - At some #defines that are the flags for update_object and - insert_ob_in_map -include/player.h: Add a few comments. -random_maps/decor.c,random_maps/door.c, random_maps/exit.c, - random_maps/floor.c,random_maps/monster.c,random_maps/special.c, - random_maps/standalone.c, random_maps/style.c,random_maps/treasure.c, - random_maps/wall.c: - modified to use modified insert_ob_in_map function, - use new macros to access map structure related data -server/Makefile.in: Remove encounter.c file. Use cproto instead of - cextract to create proto file. -server/alchemy.c,server/attack.c,server/c_object.c,server/c_wiz.c, - server/disease.c, server/login.c, server/main.c, server/monster.c, - server/move.c, server/pets.c, server/player.c, server/resurrection.c, - server/rune.c, server/shop.c,server/skill_util.c, server/skills.c, - server/spell_effect.c, server/spell_util.c, server/swap.c, server/time.c - modified to use modified insert_ob_in_map function, - use new macros to access map structure related data. - change calls to update_all_los, remove lighting related code. -server/apply.c: modified to use new insert_ob_in_map function. Update - calls to update_object. remove RANDOM_ENCOUNTER code. - for exits, modified to use the head for valid coordinates since the - other parts may not have valid values since they are not saved out to - disk anymore. -server/c_misc.c,server/hiscore.c: modified to use new map - structure/information. -server/commands.c: remove dumplights command. -server/encounter.c: removed - code no longer used -server/init.c: remove RANDOM_ENCOUNTERS code. -server/script.c: change Script_getMapObject to return NULL since there - is no longer a map object. Modify to use new insert_ob_in_map and - update_object functions. -socket/info.c: Modified to use new map structure/macros -socket/request.c: Modify draw_map_routines to use get_map_from_coord so - that it properly deals with tiled maps. Modified to deal - with potentially NULL face values. Modified update routine to - call update_position for spaces within player view which need an - update -MSW 2001-07-13 -+++ - - -common/object.c, common/player.c, include/object.h, server/skill_util.c: - Remove the unused LINKED_SKILL code. -common/Makefile.in: Use cproto to make prototypes - cextract fails for - some reason and now seems unsupported. Cproto generates a bunch - of warnings, but does do the job. -common/arch.c,server/apply.c, server/main.c, server/monster.c: cleanup some - compile warnings (unusued variables, returns without value -doc/playbook/Makefile.in: Create proper dependencies for files. -doc/playbook/treas2-extract: Add player_force to value to ignore. -doc/spoiler-html/spoiler.html: rebuilt -server/skill_util.c: Remove the unused LINKED_SKILL code. Prevent - characters that have meditation skill from learning melee weapon skill. -MSW 2001-06-28 - -doc/Protocol: Add 'darkness' setup option documentation. -include/newserver.h: add darkness element to socket structure. -include/script.h,server/script.c: remove static declaration from script.h, - move it to script.c -socket/init.c: init darkness element in socket structure. -socket/request.c: Add support in setup command for client to set if it - wants darkness information or not. Modify map update functions such - that if the client does want darkness information, server does not - send it. Improve darkness handling so that if using the map1 - protocol command, send darkness for first blocked space due to - darkness - this makes it possible for client to interpolate results - better. -MSW 2001-06-16 - -common/item.c: Add boots and gloves to items which are not magical just - because they have resist physical. This bug resulted in most all boots - and gloves being shown as magical, even though they had no special - properties. -socket/request.c: remove some dead code. Memset entire map cell - to zero when scrolling and the map is cells is one that was not in - view. This fixes redraw problems when using large viewable maps. -MSW 2001-06-11 - -doc/Protocol: update information for the mapcmd, add map1cmd to - section of setup commands. -include/newserver.h,socket/init.c: add map1cmd element to socket structure that - determines which protocol (map,map1) will be used for sending the - map. -socket/request.c:add 'map1cmd' to list of setup options. when sending - the map, use the map1cmd element to determine what protocol command - to use to send it. -MSW 2001-06-07 - -server/shop.c: Fix bug that resulted in items in shop being paid, -as well as not generating proper listing. MSW 2001-06-06. - -Checkin of code that supports larger map sizes (configurable in -config.h). -common/los.c: update los code since it only handled 11x11 maps. Now - uses formulatic approach so any map size should be supported. This - does result in a few more spaces getting blocked around corners, - but it doesn't seem that bad - certainly not compared to the ability - to have larger viewable maps. -common/map.c, crossedit/CrEdit.c, crossedit/Edit.c, include/global.h, - include/map.h,random_maps/monster.c,random_maps/special.c, - random_maps/standalone.c, server/apply.c,server/c_misc.c, - server/spell_effect.c,socket/info.c: - change mapx,mapy to what they really point to, - as it prevented using those as variable/structure element names. -common/object.c: update_position - if faces for different layers are - duplicate, set the duplicates to be blank to increase client - update efficiency. -doc/Protocol: Add map1 command description, update setup command to - describe setting of mapsize. -include/config.h: add MAP_CLIENT_X/Y to set maximum map size we can - send to the client. -include/newserver.h: add mapx, mapy values to socket structure -include/player.h: Use MAP_CLIENT_X/Y for sizing arrays that hold - map related information in player structure. -server/player.c: As per player.h above, use appropriate sizing when - initializing player stucture. -server/shop.c: Update mapx,mapy like above, but re-do shop listings code as - it was doing a lot more work than necessarily (I think some changes - got put in for sorting, and the old object manipulation was never - removed when that got done) -socket/init.c: set default client map size to 11x11 in the socket. -socket/item.c: LookAt - change checks for position checking (such that - you can only look at things in bounds) use max viewable map size. -socket/request.c: Make setup commands a little more forgiving if there are - extra spaces. Add 'mapsize' command to setup command. Update - old map sending code to use socket map sizes (to support even - smaller than normal maps, or 13x13 or 15x15 maps). add draw_client_map1 - command which implements the map1 protocol command. -MSW 2001-06-03 - -random_maps/treasure.c, wall.c: fix a problem where hidden doors -surrounding a treasure could destroy exits. --PeterM 5/31/2001 - -Make ALLOW_SKILLS standard part of game (remove #ifdef's for it) -Files affected: common/living.c common/object.c common/treasure.c - include/config.h include/player.h server/apply.c server/attack.c - server/c_move.c server/c_range.c server/c_wiz.c server/commands.c - server/init.c server/login.c server/monster.c server/player.c - server/rune.c server/skill_util.c server/spell_util.c -Make MULTIPLE_GODS standards part of game (remove #ifdefs for it) -Files affected: common/readable.c include/spellist.h include/config.h - server/attack.c server/gods.c server/skills.c server/spell_effect.c - server/spell_util.c -doc/Makefile.in, doc/Protocol: Add protocol description file here instead - of in the client distribution. -include/global.h: Move declaration of MAX_EXP_CAT near top of file - so it is set before player.h is included. -include/newclient.h: Add CS_STAT_SKILL* values for sending skill - experience information to client. -include/newserver.h: Add skillexp value to socket struct which determines - if client wants skill experience informatiion. -include/player.h: Add skill information tracking to player structure - so we can easily know when to send updates to client. -random_maps/expand2x.c: remove unused variable to prevent compiler warnings. -random_maps/square_spiral.c: Include prototype information on all systems, - not just win32 to prevent compiler warnings. -server/skill_util.c: Initialize skill pointers to make it easier to - find skill information when we want to update client. -socket/init.c: Init socket->skillexp to 0. -socket/loop.c: Fix indentation of table - whitespace change only -socket/metaserver.c: Minor fix to prevent compile warnings (on the sprintf - that composes the data to send to the metaserver) -socket/request.c: Redo SetUp function to be more compact and IMO simpler as - wll as easier to read (functionality remains the same). - VersionCmd modified to warn users of on dxclients (code on MT) - StatsCmd added to send skill information if client wants it. -The sending of skill experience is by MT, rest of the changes by me. -MSW 2001-05-28 - -common/readable.c: When making recipe books, give the recipe that they - are for in the title. Makes it more worthwhile to buy them. -lib/treasures.c: Increase the chance of readables in chests some (in fact, - add a chance.) -MSW 2001-05-25 - -lib/artifacts: Reduce potency of Poison artifact foods. -server/apply.c: When eating poison artifact foods, hit player with poison - attacktype instead of just subtracting hp. This way people with - poison resistance get proper benefit. MSW 2001-05-24 - -doc/metaserver, doc/Makefile.in: Add metaserver file which describes - working of metaserver and format of data fields. -socket/metaserver.c: Add reporting of inbytes, output bytes, and uptime in - seconds to notification of metaserver -MSW 2001-05-24 - -server/player.c -common/living.c -include/libproto.h: New experience loss on death policy implemented. -(As per consensus.) 3 levels or 20%, whichever is less. - --PeterM 5/24/2001 - -server/spell_util.c: Fix typo in polymorph code (when enabled in config.h) -MSW 2001-05-24 - -server/disease.c: replace disease->owner check with get_owner. -MSW 2001-05-24 - -server/pets.c: pet_move - fix formatting to be 4 space indentation. - if we remove the monster, free it here instead of having move_monster - do it. Add check for was_destroyed after first call to move_ob - - crashes have been observed in that function, and I believe that is the - cause. -server/monster.c: move_monster: let pet_move free the pet if necessary. -server/spell_effect.c: Clear sleeping flag of monsters when casting - summon pet monster (or other creatures). Some archs have this - value on by default, so the monsters don't follow the player until - an enemy is found. -MSW 2001-05-22 - -socket/item.c: Don't raise player to top of stack when they look at - something. I think this may be causing server crashes in some - circumstances - plus its not really needed anyways. -socket/loop.c: block_until_new_connections: Add call to flush_old_maps - so maps are reset while waiting for a new player. -MSW 2001-05-22 - -configure.in, configure: Fix png and Xpm library detection. Suggested -patch by Yann Chackhoff, applied by MSW 2001-05-20 - - ------------------------------------------------------------------------------- -Changes for 1.0.0: - -common/living.c: Fix AC wrapping problem - now limit ac to +/- 120. -MSW 2001-05-12 - -include/config.h: Add NO_POLYMORPH feature selection -include/spellist.h: If NO_POLYMORPH is set, make it so that polymorph will - not show up in wands/rods -server/spell_util.c: Handling for NO_POLYMORPH selection -MSW 2001-05-11 - -server/rune.c: Make sure rune message is newline terminated. Fix map -corruption problem. MSW 2001-05-10 - -Various improvements to make finding memory leaks easier. -common/anim.c: Add free_all_anim function -common/arch.c: Modify free_all_arch to free more data -common/init.c: If running under MEMORY_DEBUG, don't pre-allocate objects. -common/map.c: Add free_all_maps functiion. -common/object.c: Modify object allocations if using MEMORY_DEBUG to only - malloc one object at a time, and not pre-allocate objects. -common/readable.c: Fix memory leak. -common/shstr.c: Include autoconf.h so it can pull in dmalloc.h file. -include/config.h: Remove notes of what was removed a long time ago. - Add MEMORY_DEBUG option. -include/libproto.h, include/sockproto.h, include/sproto.h: automatic rebuild -server/c_misc.c: Fix 'malloc info command so it reports right memory total - for maps. Add command_style_map_info which sums up memory used by - style maps. -server/commands.c: Add style_info wiz command which dumps memory usage - for style maps. -server/init.c: Have sighup handler call cleanup function. -server/main.c: Fix clean_tmp_files which could result in crash if one - of the maps in memory has 0 reset time. Modify cleanup function - to free more data. -server/player.c: op_on_battleground: Fix compile warning about unuused variable. -socket/init.c: Change name of free_all_ericserver to free_all_newserver, - have it free all face data. -MSW 2001-05-08 - -socket/item.c: Modify look_at to not stop when it finds the first invisible - object. -server/monster.c: Modify monster_check_pickup to check to see if the - next object got destroyed. I'm not sure the exact way this happens, - but I've seen one crash where this did happen - I'm guess some - function further down in the monster_check_apply look may call - this or destroy the item. -MSW 2001-05-01 - -common/object.c: Add clear_owner function. -include/libproto.h: rebuild. -server/player.c: Modify op_on_battleground to look for battleground - anyplace on space. Temp for for wall of thorns on space - as long - as maps don't try to abuse the use of battlegrounds, should be OK. -server/time.c: Add clear_owner call to stop_arrow. Fixes problem of - thrown objects not getting saved. -MSW 2001-04-28 - -common/object.c: Have update_object map the look window for redraw if - the object is not something the client normally animates (like a lever). - MSW 2001-04-27 - -server/apply.c: Modify apply_id_altar check for player - had a && instead of - a ||. -socket/item.c: Modify ApplyCmd so a removed player can not apply objects. - Fix crashes caused by players applying savebeds after they have - used the bed. MSW 2001-04-26 - -server/spell_util.c: have put_a_monster generate random monster - abilities. -TODO, doc/mapguide: Various minor updates. -MSW 2001-04-25 - -server/c_object.c: Pass right object to query_cost_string so that - if you pick up an unpaid object into a container, it generates - the correct price. MSW 2001-04-22 -server/c_wiz.c: fix shutdown and reset_map wizard commands/function - so they no longer crash the server. MSW 2001-04-22 - -server/monster.c: add check to was_destroyed when monster fires an - arrow. Call was certainly missing, and appears to be responsible for - crash. MSW 2001-04-20 - -server/player.c: Clear op->chosen_skill when we get to the play_again - prompt. Otherwise, the server may try to use this later on, and it - no longer points to a valid object, so it results in a crash. - MSW 2001-04-19 - -server/skill_util.c: Add missing call to out_of_map in skill_attack which - could result in crashes if player is at edge of maps and decides to attack - in direction off map. MSW 2001-04-18 - -server/attack.c: Remove error message about golem without owners, - also add better checking before clering the op->contr->golem field. -common/map.c: set status flag on maps to MAP_SAVING so remove_ob does - not do extra work when we are deleting a map (ie, immediate reset) - from emory. -server/skills.c: If someone is stolen from a player, send an esrv_delete_item - to the client so the clients inventory remains correct. -MSW 2001-04-16 - -common/re-cmp.c: Modify re_cmp functiion so that it properly matches - strings not at the start 'ie, dude chain will now match against - the chain value'. -server/monster.c: Properly alter direction monster moves if they are - feared or confused. It was properly altering direction when monsters - were using range attacks, but not if they were just wanting to move. -MSW 2001-04-12 - -common/living.c: Don't use the last_heal object in experience objects as - sp regen penalty. This should fix the problem of inconsistent sp regen - rates - last_heal is used in experience objects if the permanent experience - option is turned on. MSW 2001-04-11 - -PeterM: -server/spell_util.c: fix peace so it gives experience -common/button.c: change the "error" to a "debug" message - to reduce server crashing. - ------------------------------------------------------------------------------- - -Changes for 0.98.0: - -server/skills.c: Modify inscription so that when inscribing cleric spells, - it reduces grace. Before, reduced mana no matter the type of spell. -server/c_object.c: Fix bug in pick_up where it was not using the right - count for picking up objects if the player did not specify one. This - allowed players to put objects into containers that should not really - fit. -server/player.c: Don't let players shoot arrows at themself. Also, - minor changes to use new_draw_info_format. -server/swap.c: If recycle temp maps, don't save out random maps to - get recycled. MSW 2001/04/07 - -PeterM 2001/04/06: -include/libproto.h common/object.c server/apply.c server/spell_util.c -Added a new function: instead of stacking many burnout or firetrail -objects, only 1 per square is added. Real reduction in server overhead. -No reduction in cosmetic effect. - -common/porting.c: Fix compile warnings/bugs introduced by Win32 changes. -server/time.c: Modify move_player_mover so that it determines direction - of the mover and then process accordingly, as well as formatting - changes. -server/c_object.c: modify examine so that it properly shows info about - magic bullet spell books. MSW 2001-04-05 - -common/item.c: Modify identify function to clear the NO_SKILL_IDENT - flag so objects will now merge. Also, once the object has been - identified, the no_skill_ident doesn't have meaning anymore. - MSW 2001-04-03 - -server/c_object: Modify examine command to only be able to examine - valid objects, and not whatever is on top of the space, which may be - insivisible. MSW 2001-04-01 - -include/sproto.h, server/c_wiz.c server/main.c server/player.c socket/loop.c: -Modify leave function to take a second parameter that determines if it -should print a message about the player leaving the game or not. Proper -use of this prevents duplicate XXX left the game messages. MSW 2001-03-29 - -common/image.c, include/define.h, include/global.h: Add empty_face structure - and appropriate code to initialize it. This is used for the server side - look selection. -include/newserver.h: Add NUM_LOOK_OBJECTS to control number of look objects - to send at any one time. add look_position field to the newsocket - structure. -server/move.c: clear look position as player moves. -server/player.c: initalize look_position element in structure. -socket/item.c: modify esrv_draw_look to sne NUM_LOOK_OBJECTS at any one - time, and to also send pseudo objects that lets the player scroll up and down. - modify ApplyCmd so that if it detects the application of one pseudo objects - to adjust the look_position. -MSW 2001-03-29 - -common/readable.c: Name spellbooks based on level of spell, and not - just randomly. Patch by Preston Crow, applied by Mark Wedel 2001-03-29 - -configure, configure.in, include/autoconf.h, includes.h: add check for - time.h and include it if we find it. -socket/item.c: esrv_move_object - have it check to see if the object is - already on the ground before we try to re-drop it. Likewise, check - to see if it is already in players inventory before we try to pick - it up. -common/object.c: Don't send face updates to the client or make - the space as needing to be redrawn. Client now deals with animation - of the look window on its own. -utils/(metaserver.pl crossloop add_throw.perl crossloop.pl) -lib/(Makefie.in, checkarch.pl collect.pl xpmtopix.pl) - - deleted - from CVS - '.in' versions of these files now exist and the real - versions are created as part of the configure process. Update - Makefile.in to reflect this change. -MSW 2001/03/28 - -common/object.c: have update_position just update the flag that the - server needs to send the look window to the client and don't send the - item at this point, as sending the look will do that. -server/main.c: process_players1: Remove call to draw (which updates - the client map) - the handle newclient in socket/loop.c already - does this and there is no reason to send multiple instances of the - same map. -MSW 2001/03/23 - -server/c_object.c: drop_object function: send delete item to client as - item is dropped. This fixes a problem of phantom objects in the - inventory. Unrelated change to not call esrv_send_item for objects - that are dropped - esrv_draw_look will get called later on and will - update this at that time. MSW 2001/03/23 - -server/c_object.c: Update the return value for some matches - they - function was returning immediately when it got a match, but did not give - them a high match value, so searching for 'key ring' used to return a - match value of 6 or so on the key ring, but a 14 on a key. - -common/object.c: Modify find_free_spot to call arch_out_of_map so that - it properly deals with multipart objects. -server/main.c: Fix enter_map so that we first use the golem (and not player) - when calling find_free_spot. Also, modify code so that it properly - updates coordinates of the multipart golem. -MSW 2001/03/20 - -server/skills.c: Fix orate so that we check for a positive chance (and just -not nonzero chance) for successful oration. Due to adjustments, at low levels, -the oratory chance can be negative. MSW 2001/03/20 - -server/spell_effect.c: Change cast_change_attr to find an enemy (and not -friend) when casting the curse spell. MSW 2001/03/20 - -server/apply.c: Increase size of buf to be a HUGE_BUF to very -long item names don't cause a stack overflow. MSW 2001/03/20 - -common/object.c: Modify update_position so that we don't show invisible -players to other players. MSW 2001/03/20 - ------------------------------------------------------------------------------- -Changes for 0.97.0: - -MSW 2001/03/18: -common/init.c: add RESET_LOCATION_TIME initializer to settings structure. -include/config.h: Add RESET_LOCATION_TIME value. If nonzero and the save was longer than - the specified time in seconds, player will be returned home upon login from - save. -include/global.h: Add reset_loc_time field to settings structure. -server/login.c: Remove some unused variables, add support to return player - home as described above. -server/spell_effect.c: Fix for crashes when casting control undead and your - god does not have an enemy. Now properly check to make sure we are not - dereferencing null pointers. - - -MSW 2001/03/16: -Change code so that if player dies and loading the players savebed map does -not work, return player to EMERGENCY_MAPPATH instead. New function added -to server/main.c called enter_player_savebed which does the work, -Files changed: include/sproto.h server/main.c server/player.c - server/spell_effect.c (comment added) -Unrelated change: Remove messages about multiple resist types set. -Files changed: common/loader.l common/loader.c - -MSW 2001/03/15: -server/spell_effect.c: Add physical attacktype when casting holy possession. - Otherwise, characters who use karate end up not being able to damaage - anything. - -MSW 2001/03/09: -crossedit/App.c: Move the loading of images to later in the editor - startup state. In this way, the client can allocate the colors it - needs for its windows before the the png images use up all the colors. -crossedit/png.c: New png loader implementation. New version is much - faster (50 times faster). As part of this, only 8 bit displays, - a private colormap will be allocated, and after that gets filled - up, a color mapping routine will be used - this makes the png - images loadable on an 8 bit system in addition to the speedup. -crossedit/xutil.c: Adding timing information for loading of images. - call init_pngx_loader before starting to load png images. Pass - colormap to png_to_xpixmap by pointer and not value so that - the loader can change the colormap. - -AV 2001/03/09: -common/button.c: Added new attribute to altar triggers: "last_sp 1". - If set, the altar trigger will push the connected value only - by dropping the sacrifice, NOT by altar reset. If unset ("last_sp 0") - it will work like it used to (push by sacrifice and by reset). - -MSW 2001/03/06: -server/spell_effect.c: Fix message when consecration fails - use the ob->name - field and not the ob->title field. Also fix broken logic that checked - for the floor. -server/init.c: Related to 3-4 change which changed the default name of - the logfile to "" so we know to use stderr. This doesn't work for - daemon mode, so if the name is "", we use the default logfile instead. - -MSW 2001/03/04: -TODO: add re-connecting player to new client if client logs in with - right name/password. -common/init.c: Open up the logfile with the provide filename when given - the -log option. -server/init.c: Make set_logfile a first pass option so the init_library - has the right logfile name to work with. -server/main.c: Fix crash if map has an exit path yet that file does not - exist. Give proper error message. - - -MSW 2001/03/01: -server/main.c: Modified random_map code so the server will not - crash if the exit object has no message (and thus variables to set - for the random map). - Modified so that golems move away from player when player - changes map. Values were reversed before, causing the golem to move - towards the player. - -MSW 2001/02/25: General player login cleanup. This should fix the crash - when players re-roll stats too often. So far, it also seems to - have the additional effect that calculated players on map now appears - to be correct. -common/player.c: No longer allocate the player object structure in - get_player_ob (function is really misnamed). Callers to this function - were not using the allocated function. -server/login.c: Add leave_map call when player is loaded. -server/main.c: Add leave_map function. -server/player.c: Move get_player function to start of file - can declare - it static that way. Move some initialize from add_player to get_player. - Add set_first_map function. Add appropriate calls to leave_map - and set_first_map when players join and leaves the game. - -MSW 2001/02/22: -TODO: Add some items, remove some others, remove outline of future versions, - since it was out of date. -common/loader.l,loader.c: Declare msgbuf a static outside the lex_load function. - lex_load was otherwise clearing it each time it was called, which resulted - in empty messages for the random artifacts (since the call lex_load one - line at a time). Instead, we just zero this at start of load_object. - Original reason of this change was due to purify errors - as I look at the - code, it appears even before these changes that it was clearing the buffer - properly. -common/map.c: removing pending field from map objects. -common/re-cmp.c: Comment out some code which was resulting in too many - false compares. -include/config.h: increase default for MAX_OBJECTS. 6000 is a bit small - on current systems. -include/map.h: Remove pending field from map structure. -random_maps/treasure.c: Increase size of doorlist. Fixes crash, in that - if a random map could place 8 doors around the treasure, the list - was not terminated, so the problem would eventually try to read/dereference - random memory after the array. -server/c_misc.c: Remove pending field from maps, so remove functions - and other places that referred to it (like the maps command) -server/c_wiz.c: fix up wiz map reset command. Not really tested, but - old code had some definate problems just from visual inspection. -server/main.c: Further fix for unique exits - relative paths to unique maps - from non unique maps should now work. -server/monster.c: Various fixes - one is that should get more reliable distance - values for multipart monsters. Second, modify dist_att to calculate from - closest part of monster, and not the head of the monster. -server/pets.c: Remove code dealing with pending objects. -server/player.c: Don't remove invisible objects in players inventory when - playing with permadeath mode. -server/spell_util.c: If you try to cast denied spell, it no longer costs any - spellpoints. -socket/item.c: Fix bug where it was using 'item' protocol command instead of - 'item1' -End of MSW 2001/02/22 checkin. - ------------------------------------------------------------------------------- -Changes for 0.96.0: - -MSW 2001/01/11: -include/rproto.h: Rebuilt for new random map code. -server/player.c: remove player insert in key_roll_stat - player is already - inserted. -server/swap.c: When swapping out map, see if it has already reached reset time, - and if so, just delete it and not save it. In flush_old_maps, now have - it check for maps that have no timeout set - this sometimes happens when - players save/die on maps. - - -MSW 2001/01/11: -Other than various general cleanups, the main change this code does is -that style maps (for random maps) get loaded special now - they objects -they contain are not put on the active list, and they use a private map -list so they do not appear in the output of the 'maps command. -common/arch.c, common/treasure.c,server/login.c: Update calls to load_object -common/loaderl.l,loader.c: Update lex_load to take an optional flags option. - This is currently only used so that the loader can decide if it should - call update_ob_speedto put objects on the active list or not. - Calls to lex_load updated. load_object modified to take another option -common.map.c: remove PROCESS_WHILE_LOADING and CHECK_ACTIVE_MAPS ifdefs. - update calls to load_object. Remove some dead code. -include/config.h: Remove CHECK_ACTIVE_MAPS and PROCESS_WHILE_LOADING flags. - Those options did not work, and in all likelihood, this would be done - via threading now days and not what code was there. -include/libproto.h, sproto.h: updated or various function changes. -include/map.h: Add MAP_STYLE flag. -random_maps/exit.c: Call set_map_timeout after we load the final map - so it will get swapped out. -random_maps/standalone.c: Add dummy set_map_timeout function so it compiles. -random_maps/style.c: Add load_style_map function which does the job of - actually checking to see if a style map is in memory, and if not, - loads it up. Updates the pointers so it appears on a map style map list - and not the general map list. -server/main.c: create set_map_timeout function that deals with setting the - map timeouts. Fix bug so server doesn't crash if two players kill each - other on hall of selection. -server/monster.c remove dead code. -socket/loop.c: If realloc fails, catch it and exit with meaningful - error message. -End of MSW 2001/02/11 checkin. - -MSW 2001/02/08: -server/login.c:Fix that would prevent maps from getting swapped out properly - -we would try to swap out a map the player is in the process of leaving - move -swap out code until after we have moved the player to the new map. MSW -2001-02-08 - - -MSW 2001/02/06: -common/porting.c: relocate clean_path from this file to server/main.c -server/main.c: relocate clean_path from porting.c. Add unclean_path. - Modify enter_unique_exit so it supports relative maps on unique maps. - Modify enter_exit so word of recall (or other forcelike fields), work - when the return point is a swapped out unique map. - -MSW 2001/02/05: -server/attack.c: Fix blind and paralyze - logic for reducing duration was - broken, resulting in zero duration for most characters. It should now - work properly, reducing according to the amount of protection. - - -MSW 2001/02/02: -common/item.c: Don't have armour item types get returned as magical if they - have an armour value - that is to be expected. This eliminates the false - positives that you otherwise get on armor when you cast detect magic. -include/newserver/h: and checksum field to FaceInfo struct. Update - version_sc to 1026. -socket/init.c: calculate image checksums as we load the images. -socket/request.c: If client is at least version_Sc 1026, use face1 protocol - command that includes the checksum. - -MSW 2001/01/31: -common/object.c: Fix that that spells cast on spaces with no floors get - set properly after the spell expires. -common/player.c: Use skill tools first (lockpicks, talismans, etc) before - using native skills. In this way, an object with bonus automatically - gets used. -common/living.c: Fix so that negative con bonuses work properly - fixes - bug where a higher con could result in lower total hp due to improper - calculation. - -MSW 2001/01/30: -Complete rewrite of the exit handling code. Hopefully as an effect, this will -fix the player appearing in the middle of the oceans. I think the code -should also work better in many other areas. Main enhancements is a 3x3 -area for pets to follow player to new map, as well as golems now following -players to the new maps. -include/sproto.h, random_maps/rproto.h - rebuilt. -random_maps/random_map.c: Change generate_random_map to take a structure - with the random map paremeters. -random_maps/reader.l, reader.c: Add set_random_map_variable function that - reads the map parameters from a char buffer. Also, remove some leftover - comments that were from the common/loader.l file. -random_maps/rogue_layout.c: Change some functions to be static so make proto - doesn't collect them. -random_maps/standalone.c: Add opening of parms file into main function since - it ws removed from the random_map.c file. -server/apply.c: Don't display the message of random maps to the players - as they enter them, as this message is random map parameters, and not - a real message. -server/login.c: #if 0 out using of the player loading element in the structure. - this isn't used right now. -server/main.c: Bulk of the changes. main changes are to break apart the - old enter_exit function into smaller functions that more logically do - the needed function (random maps, unique maps, and transferring the player - to the new map). random map code now passes the parameters via - structure instead of file in /tmp. Code is much more understandable now - and hopefully bugfree. -server/pets.c: minor changes/bugfixes. Search full SIZEOFFREE array, use - real owner variable when print out messages. -server/player.c: Remove usage of the loading variable in the player structure. -End of MSW 2001/01/30 checking. - -MSW 2001/01/23: -Various cleanups/fixes as detected by purify: -common/anim.c: animation[0] was given a null pointer as the name, but - bsearch/or comparison function will try to de-reference it. - Give it a unique name. -common/loader.l: msgbuf was being used initialized in the main loading - function. loader.c also regenerated. -common/object.c: find_free functions were not checking to see if the - spaces they were examining were out of the map. Added checks - to do so. -server/apply.c: buf was being used uninitialized in the function. -socket/init.c: input buffer needs to be initialized as we do a - strncasecmp against the buffer which may not have any data in it. - - -MSW 2001/01/18: -server/skill_util.c: add change_skill_to_skill function to be used when - we already know the skill object we want to use. This is more efficient - than change_skill which takes a skill number and then searches the - inventory for the object. - remove extra esrv_send_item from do_skill_attack - don't need to send - skills to player. - do_skill_attack: remove call to hth_damage - that function does not take - into account objects in the player inventory that increase damage, - and since that is called each attack, it is not feasible to have it - search the players inventory. Instead, we just rely on damage generated - by fix_player - only think hth_damage did was adjust damage based on - level difference. - -PeterM 2001/01/16 -Added randomly-generated nethack-style maps to crossfire's -random map generator. - -MSW 2001/01/15: -Change blindness and paralyze so that duration is reduced based on protection -the player has. file server/attack.c - -MSW 2001/01/15: -Various fixes for friendly object code: -common/button.c: Add missing call to remove_friendly_object -common/friend.c: Pretty much completely re-written. add_friendly_object now - checks to make sure the object being added isn't already on the list, - remove_friendly_object will remove objects whose tags don't match, - and added clean_friendly_list. -common/object.c: No reason to use the function pointer to - remove_friendly_object since that function is in the lib. -common/time.c: Make DEBUG_TIME always on (no longer compile time option). - other areas use the global var pticks, so if it was turned off, compile - would break anyways. -common/treasuer.c: No longer print debug messages on artifacts created. - Cluttered log file making it hard to see more important errors. -include/config.h: Remove DEBUG_TIME define. -include/libproto.h: Rebuilt for clean_friendly_list function. -server/main.c: rewrote do_specials to do things based on pticks variable. - This allows various specials to be spread out across multiple ticks - easier. Also, added clean_friendly_function to part of what this does. -server/skills.c: add missing call to remove_friendly_object. Also, removed - from #if 0 .. #else .. #endif code. -End of MSW 2000/01/15 checkin. - -PeterM 2001/01/08: Wrathful Eye spell implemented. - -MSW 2000/12/26: -Checkin of Jan's new god intervention code. I haven't played around with -it much, but I haven't seen any really obvious problems. -common/living.c: remove learn_prayer_chance -common/treasure.c: Various changes to treasure generation - mostly to - deal with starting equipment and putting it in the inventory. -doc/crossfire.doc: Update docs on god intervention. -include/define.h: GT_... flags removed. -include/treasure.h: GT_... flags added. Addition flags added from - what was in define.h before. -lib/archetypes, lib/crossfire.png, lib/treasures: Updated with new - archetypes and treasures. -random_maps/standalone.c,server/rune.c,server/time.c: Calls to - create_treasure updated -server/apply.c: New functions for god intervention added, update calls - to create_treasure, other god related changes. -server/c_wiz.c: Calls to create_treasure updated, various functions to - allow DM's to learn/unlearn spells added. -server/commands.c: Various commands added to the wiz set of commands. - See commen for c_wiz.c -server/disease.c: Changes to reduce_symptoms -server/gods.c: Numerous updates for god intervention code. -server/player.c: Modifications for starting player equipment. -server/skill_util.c: Display the god the character worships when they - issue the skills command. -server/skills.c: Minor cosmetic change made to message when praying on altar. -server/spell_effect.c: Changes related to gods, cure spells, and - generation of treasures & items. -End of MSW 2000/12/26 checkin. - - -MSW 2000/12/23: -include/define.h: Add SIZEOFFREE1 and SIZEOFFREE2 values to use instead of - arbitrary constants in the code. -server/monster.c: change communicate function to use above values. Before - it was stopping one short of the full 2 space array, so one particular - space (-1, -2 relative to player) would not hear players speech. -server/attack.c: Don't exit hit_player function if damage is reduced to 0 - in magical attacks. This was preventing face of death and probably a lot - of effect only spells from working. -server/spell_util.c: modify check_cone_push to use move_object to blow - the objects. Before, multisquare monsters were getting sliced - into their individual components - move_object deals with multisquare objects - properly. - -PeterM 2000/12/18: Re-add the conflict spell (various files) -attack.c: fix a bug which could easily have led to seg fault, - and did when I was testing under efence. - -MSW 2000/12/17: Various changes. Note that the scope of files in this checkin -make it appear that a lot was changed, but in fact it was mostly just -re-orginization - very little code has actually changed. -include/autoconf.h.in: Add HAVE_LIBDES to file. -include/config.h: Remove comments after defines for MAP_MIN/MAX timeouts. - This just removes some warnings during compile. comments are now - on lines by themselves. -include/player.h: remove shootstrength for player structure. It was unused. -server/Makefile.in: remove input.c file, add c_range.c file. -server/c_chat.c: remove command_last, add command_shout and command_tell - from input.c to this file. Also fix bug in command tell which - would let players crash server at will. -server/c_misc.c,server/c_object.c: Relocate many functions - from input.c into these files. -server/c_move.c, server/c_new.c: Add standard crossfire banner comment. -server/c_range.c: New file - contains range related commands, - including spell casting (relocated from input.c) -server/c_wiz.c: move command_invisible from input.c into this file. -server/commands.c: Remove unused commands (bell, last, strength) -server/input.c: removed file. -server/main.c: Change HAVE_DES_H to HAVE_LIBDES -server/player.c: When choosing a race, draw it facing south for best - presentation of image. -server/spell_util.c: Remove dead code (#if 0 shootstrength related - code) -socket/loop.c: remove unused variables. -NOTE: Due to the addition/removal of files, you will need to do -'config.status; make depend; make' from the top level directory for -everything to be compiled properly. -End of MSW 2000/12/17 checkin. - - -PeterM: 2000/12/17: Various problems fixed in -random_maps/*.c: endless loop removed, -exit leading to blocked area of spiral fixed. - - -PeterM: 2000/12/17: Stat max bug fixed. -server/apply.c - - -MSW 2000/12/16: -server/player.c: If the player race archetype has a message, print that out. - This allows a descriptive message about what the different races will - get. The message is removed from the player once they decide on the - race. -common/living.c: Add some parens around some PR resistant checks - eliminates - warnings from gcc. -server/disease.c: have cure_disease remove all diseases a player is infected - with. The code suggested it was attempting to do so, and the - messages it printed out certainly suggested that the character - was disease free. - - -PeterM: 2000/12/14: Added spiral map layout - -PeterM: 2000/12/14: -Restructuring of the random map code. Functionally, it -should be identical. All global variables moved into the -functions. - -MSW 2000/12/10: -utils/metaserver.pl: Various improvements. Main one is that tcp -connections to port 13326 of the metaserver will dump the information -in a easily parsable format for the client or other applications. -include/config.h: Set ARCHTABLE size to correct value. -server/player.c: Have server send update item to client for players face - while select class. Added esrv_new_player in Roll_Again, because - without it, the client had yet to receive information on what tag - the player was so could not make sense of the updated face. -server/spell_effect.c: Balance issues for polymorph. Reduce maximum - value for high valued objects, remove ability to polymorph generators, - put maximum level on polymorphed monsters and give them saving - throws against the effects. - -MSW 2000/12/5: -server/player.c: Move location of where it sets the player has_hit variable -until after we have confirmed that the player has actually attacked a monster -and not that the space is blocked. Fixes various problems and make -behaviour more predictable. -common/button.c: Do not set path_attuned when loading connected objects from within -the editor. This is normally done for random map code/glue logic. -common/player.c: When trying to find a skill to use, use a native skill -first before going off and returning a skill object like a talisman. - -MSW 2000/12/4: -common/treasure.c: Make it so resistances from artifact files are absolute - adjustments. -Makefile.in configure configure.in: Fix check for libdes to see if des_crypt - exists in libdes before setting HAVE_LIBDES -crossedit/Makefile.in: Add Cnv/libCnv.a before LIBS - should fix - linking error on irix systems. -utils/metaserver.pl: modified so it ignores entries from hosts that - report their name as put.your.hostname.here - -MSW 2000/12/3: -crossedit/Attr.c: Add the new resist names to set of variables one can set. - -MSW 2000/12/3: -Misc changes. Main one is adding PNG support to the editor. -TODO: Remove outdated things to do (like partial resistance code) -configure, configure.in, include/autoconf.h.in: Add check for libpng. -include/global.h: Remove displaymodes - moved to crossedit/Defines.h -crossedit/App.c, crossedit/App.h crossedit/CrEdit.c crossedit/CrFace.c - crossedit/CrList.c crossedit/CrUtil.c crossedit/Edit.c crossedit/crossedit.c - crossedit/xutil.c, crossedit/png.c (new file): Add support for png display - in crossedit. -crossedit/Makefile.in: Add png.c file. -server/c_misc.c: Change who command to only display real players, and not - players in process of connecting/unconnecting. Also, remove code to display - old sockets, since those are not supported anymore. - -MSW 2000/12/3: -Checking for partial resistance code. Various minor errors also fixed -(compiler warnings, unused variables, Makefile.in changes, etc). -PR code also includes support to send protections to the client. -Files changed: - common/Makefile.in common/button.c common/exp.c - common/friend.c common/holy.c common/info.c common/init.c - common/item.c common/living.c common/loader.c common/loader.l - common/object.c common/player.c common/re-cmp.c - common/readable.c common/treasure.c crossedit/App.c - crossedit/crossedit.c crossedit/proto.h doc/crossfire.doc - include/define.h include/global.h include/libproto.h - include/newclient.h include/newserver.h include/object.h - include/player.h include/sproto.h lib/Makefile.in - lib/archetypes lib/artifacts lib/crossfire.png - lib/crossfire.xbm lib/crossfire.xpm random_maps/rproto.h - random_maps/special.c random_maps/style.c server/Makefile.in - server/apply.c server/attack.c server/c_misc.c - server/c_object.c server/commands.c server/disease.c - server/gods.c server/input.c server/monster.c server/player.c - server/resurrection.c server/rune.c server/spell_effect.c - server/spell_util.c server/swap.c socket/metaserver.c - socket/request.c - Added Files: - include/attack.h - - ------------------------------------------------------------------------------- -Changes for 0.95.8: - -MSW 2000/11/26: -utils/metaserver.pl (added), utils/Makefile.in: Add metaserver.pl script. - -MSW 2000/11/25: -include/patchlevel.h (removed), doc/spell-docs/Makefile (removed), -include/Makefile.in, include/version.h, server/init.c, server/main.c, -socket/metaserver.c: remove patchlevel.h - include the patchlevel in the - version.h file, update other files to use version as a single string. - -MSW 2000/11/25: -socket/metaserver.c: If on FreeBSD systems, do not attempt to connect to -the metaserve. FreeBSD seems to have a problem using sendto on a connected -soccket. - -MSW 2000/11/25: -configure.in, configure, include/autoconf.h.in, server/main.c: Update -to check for libdes.a and des.h and use those for password decryption - fixes -a problem on freebsd if it is using md5 crypt. Hopefully it doesn't break -anything. main.c was also checking for HAVE_CRYPT_H too early. -include/sproto.h: Needed updating. Unrelated to above changes. - - -MSW 2000/11/22 -server/main.c: Modify enter_exit so that it properly uses per player -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. Change - 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 player -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/200 - -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. - ------------------------------------------------------------------------------- - -Changes for 0.95.7: - -README: Add crossfire.csua.berkeley.edu server. -TODO: Remove entry about setable behaviour for keyrings, since that has now -been done. -include/patchlevel.h, Makefile.in: Update for 0.95.7 MSW 9/20/2000 - -lib/maps: got rid of the stuff that was there. Useless stuff. -the maps dist. is the thing to use. --PeterM - - -common/living.c, server/skill_util.c: Patches by Garth Denley: -Fixes divide by zero crash, sets up perm exp when a new player is loaded, -seperates permanent exp code/calculations into another function. -checked in by MSW, 8/24/2000 - -lib/crossfire.png: ground/sea*png - remove transperancies from png images -since they should not be transparent. MSW 8/23/2000 - -doc/spoiler.html/(Makefile.in,empty.pbm, makeps.pl, spoiler.html): Modify -to make gif images from png source instead of xpm images. A valid question -to ask is why convert to gif at all and not just keep in PNG format. The -answer right now is that png support in netscape at least still is not very -good, and it displays gifs better. MSW 8/8/2000 - -Add/Remove some LOG calls: -common/living.c: Remove log messages about gen_sp values on armor -server/login.c, server/main.c: Add messages about player logins/logouts with -IP address. Useful for tracking potentially troublesome players and where -they are player from. MSW 8/7/2000 - -The following change basically does the following: When the server sends an -item name to the client, this item name is now two pieces - the first piece -of the name is its singular form, the second piece is the plural name. This -now makes items in the inventory appear more proper in terms of pluralization -and just normal English. I did notice that the server does not know how -to properly make 'torch' plural - it turns it into torchs. A matching -check in for the client has also been done. -include/newserver.h: Update VERSION_SC to 1024 -common/item.c: Change query_base_name to take a second option on whether - we should generate a plural version of the name or not. -socket/item.c: Modify functions to use second argument on the query_base_name - function. Update item commands to send two part names (singular & plural). - Modify esrv_send_look to use item1 protocol command instead of item command. -server/c_object.c: Update item_matched_string to use second option to - query_base_name. Modify function to check against both singular and - plural versions of name. -server/shop.c: Modify shop_listing command usage in query_basename to use - second option. It will also generate the singular name, but that is only - used on sorting, so I don't think it will generally cause any problems. -include/libproto.h: rebuilt because query_base_name has an addition opt. -Mark Wedel 8/6/2000 - -include/config.h, include/global.h, common/init.c, common/living.c, -server/init.c, server/player.c, server/skill_util.c: Add permanent -experience and balanced stat loss features (code by Garth Denley). -Permanent experience make some experience in the skills permanent. Balance -stat loss makes stat loss less likely/costly at low level and more costly -at higher levels. These features are by default off, but can be turned -on either in the config.h file or via command line options. Code checked -in by MSW 8/1/2000 - -server/time.c: Update the change_object function such that if the object -is in a players inventory, send a delete & send_item for the object that -has changed (the delete + send_item is necessary due to the ways objects -change, so we just can't sent a update_item). This fixes the 'torches -go dim & then out but client inventory not updated' bug, and likely fixes -some other problems - I am not sure how many other objects out there -change. MSW 7/28/2000 - -random_maps/treasure.c: potential crash bug fixed. Only applied -when a bad archetype was given as a wallstyle. I will also put -in a redundant archetypes fix. --PeterM 7/26/00 - -lib/adm/map_info, lib/adm/map_check: Update to use new layout of installed -files (share/crossfire), know about random exits (it doesn't do any checking -to make sure the values are sane, which it probably should, but at least it -won't complain about them), update to use /usr/bin/perl. MSW 7/25/2000 - -server/resurrection.c -include/spellist.h: PeterM: fixed a few unintended things about -resurrection: experience removal was wrong, spellpoints/levels -changed. --PetrM - -lib/archetypes: Update to keep in sync with arch tree. Changes to -about a dozen arch's to remove the 'a' in their name. MSW 6/27/2000 - -server/c_object.c: Fix command_drop which was doing incorrect check for -invisible object - it was supposed to skip over them and only do visible -objects, instead it was doing the reverse. Fixes the 'drop command. -MSW 6/27/2000 - -server/input.c: Make the inventory command more robust for very long -object names - specify a maximum number of characters we will take from -the name. Without this, you could get buffer overruns that cause crashes. -No normally generated items would ever likely have names long enough to -exploit this bug however. MSW 6/27/2000 - -INSTALL, README: Update mailing address to real-time address. MSW 6/27/2000 - -server/login.c: Load and save usekeys value in player save file. MSW 6/27/2000 - -Patch by Jeffry Hantin which fixes glow objects in map. -insert_ob_in_map_simple now will call the appropriate light updating code. -Applied by MSW 6/26/2000 - -server/player.c: check_pick(): Rewrite of this function to consistently -skip items that can't be picked up, and to only use a single loop over all -items on the map square. - Jan Echternach 6/23/2000 - ------------------------------------------------------------------------------- -Changes for 0.95.6: - -server/monster.c: Patch by Neil Muller so that corrupt/bad @match entries -will not cause the server to crash. Applied by MSW 6/21/2000 - -lib/archetypes: rebuilt for 0.95.6 -lib/collect.pl: Modify to search the archetypes directories in alphabetical -order - before I believe they were collected in basically inode order. -This should make it easier to multiple people to run the collect script -not have basically an entirely new archetyeps file. MSW 6/21/2000 - -server/commands.c; server/c_object.c: dump_object_from_tag(): Removed -broken command. Fixes server crashes very easily triggered by players. -- Jan Echternach 6/21/2000 - -server/attack.c: deathstrike_player(): Check for def_lev == 0 very early -(and print error message if we find such an invalid level). Should fix -server crash in case archetypes or maps get broken again in that an -alive object has level < 1. - Jan Echternach 6/21/2000 - -Makefile.in: Update version to 0.95.6 -include/patchlevel.h: Update to .6 for 0.95.6 release -common/porting.c, include/config.h, include/loader.h, include/skills.h, -include/spells.h, include/treasure.h, include/version.h, random_maps/style.c: - Update my mail address and copyright date. Mostly committed to sync - up my data with the CVS repository - MSW 6/20/2000 - -random_maps/treasure.c server/apply.c: made containers able to -have more than one treasure in them, made a fix to treasure.c, which would -change the options given to it in an unintended way. --PeterM 6/20/2000 - - -common/living.c: fix_player(): Bugfix: Don't reset FLAG_FLYING, -FLAG_REFL_SPELL, FLAG_REFL_MISSILE and FLAG_SEE_IN_DARK if the archetype -has these flags. - Jan Echternach 6/19/2000 - - -random_maps/* Numerous changes improving random maps, including -two crash-fixes, a new type of 'special', ability to copy inventory -of monsters when putting them into maps... --PeterM 6/19/2000 - -New naming scheme for random maps: they won't grow in size -indefinitely anymore. --PeterM 6/17/2000 - -server/input.c: command_cast_spell(): Bugfix: Call check_skill_to_fire() -even for wizards because this function has the important side effect -of setting the current skill and experience objects. -- Jan Echternach 6/19/2000 - -server/apply.c: apply_treasure(): Bugfix: We need to trigger runes as -they are found in the treasure chest, because move_rune() will no longer -trigger them for us. - Jan Echternach 6/18/2000 - -Updated the INSTALL directions. MSW 6/16/2000 - -Modified the editor to make certain objects (teleporters, creators, -markers) more easily editable. --PeterM 6/16/2000 - -Modifed how firewalls worked. They can now be triggered by -handles as well as turned. Ones which are turned by handles -cannot be triggered by handles. PeterM 6/15/2000 - -fixes to random_maps: -exit.c: won't crash if named final_map doesn't exist -room_gen_onion.c: reordered the options more sanely -special.c: fixed a crash-bug: nuke_map would nuke parts of monsters, but -not the whole monster. --PeterM - -server/skill_util.c: Fix type in change_skill - was doing an == operation -when it should just have been an =. MSW 6/13/2000 - -common/anim.c: animation_object() - return if object does not have a valid -animation after logging error. Before, we logged the error and would -promptly crash. MSW 6/13/2000 - -server/apply.c: apply_treasure(): Bugfix: Set FLAG_NO_APPLY before -moving object to the top. - Jan Echternach 6/13/2000 - -server/time.c: move_marker(): Bugfix: Call update_ob_speed() after -changing force->speed. - Jan Echternach 6/13/2000 - -server/spell_util.c: move_swarm_spell(): Improved distribution of -fired objects. Fixed starting position of fired objects to be able to -hit targets immediately in front the caster. - Patch by Jeffrey Hantin, -applied by Jan Echternach 6/13/2000 - -server/disease.c, sproto.h, rune.c Fixes from jhantin@derringer.net for diseases: - Reversed strstr calls, force argument added to infect_object, -diseases in immune carrier last forever, needles use infect object, -cast_cause_disease won't fail. --PeterM 6/9/2000 - -common/loader.l: Fix handling of objects with no animation. Fixes server -crash if object's archetype has an animation, but object doesn't. -- Jan Echternach 6/9/2000 - -common/loader.l: get_ob_diff(): Bugfix: Issue a "is_animated 0" line -if the object has an animation, but doesn't have FLAG_ANIMATE. -- Jan Echternach 6/9/2000 - -server/apply.c: manual_apply() and monster_apply_special(): Don't check -for FLAG_UNPAID if object is applied. This should make the code more -robust if an unpaid item get's applied accidently. -- Jan Echternach 6/9/2000 - -server/apply.c: apply_special(): New optional flags AP_NO_MERGE and -AP_IGNORE_CURSE. - Jan Echternach 6/9/2000 - -server/monster.c: find_mon_throw_ob(); server/skills.c: find_throw_ob(): -Bugfix: Use AP_NO_MERGE flag to prevent unapplied object be merged with -other objects. - Jan Echternach 6/9/2000 - -server/spell_effect.c: animate_weapon: Bugfixes: Correctly unapply -weapon. Don't set FLAG_APPLIED directly on weapon in golem, but use -apply_special(). Don't call esrv_send_item() when caster is not a player -(fixes server crash if monster casts this spell). -- Jan Echternach 6/9/2000 - -random_map/ Fixes in the map code for various things, including: -1) crash bug on -multi-square monsters. 2) no treasures in final_map, 3) new feature of doing -walls only, .... --PeterM 6/9/2000: - -common/button.c: do_mood_floor(): Bugfixes: Only players can have pets. -Call add_friendly_object() for friendly monsters. -- Jan Echternach 6/8/2000 - -server/spell_effect.c and server/spell_util.c: Several functions: Only -add a pet if there really is a pet's owner, and it's a player. -- Jan Echternach 6/8/2000 - -server/spell_effect.c: cast_charm() and cast_charm_undead(): Bugfixes: -Only players can cast these spells. This fixes server crash if -a monster casted a charm spell, and the charmed pet was killed. -Call add_friendly_object for friendly monsters. -- Jan Echternach 6/8/2000 - -common/friend.c: remove_friendly_object(): Use llevError for error -messages. - Jan Echternach 6/8/2000 - -common/living.c: fix_player(); server/gods.c: tailor_god_spell(); -server/spell_effect.c: summon_avatar() and animate_weapon(): Bugfix: Set -a string to NULL after calling free_string(). This fixes a nasty bug -that caused the string's reference count drop below 0, which resulted -in corruption of malloc()'s internal data structures (and possibly -server crashes). - Jan Echternach 6/8/2000 - -server/time.c: move_creator(): Bugfix: Call free_string() to free old -values of op->name and op->title before overwriting them with new values. -- Jan Echternach 6/8/2000 - -common/object.c: insert_ob_in_map_simple() and insert_ob_in_map(): -Check that we don't insert freed objects. - Jan Echternach 6/8/2000 - -server/attack.c: hit_player_attacktype() and hit_player(): Bugfix: Check -that find_god() really found a god, and that 'god->slaying' is not NULL. -Fixes crash if a monster casted turn undead and actually hit something. -- Jan Echternach 6/8/2000 - -server/attack.c: hit_player(): Check that a pet's owner is a player. -Prevents server crashes if a monster has a pet monster due to a bug -somewhere. Use llevError for error message. - Jan Echternach 6/8/2000 - -server/time.c: move_arrow(): Use llevDebug level for "Arrow had no -map" message. - Jan Echternach 6/8/2000 - -server/c_object.c, server/spell_effect.c, server/spell_util.c: Bugfixes: -Added some missing checks for destroyed objects. Use was_destroyed() -or return value of insert_ob_in_map() to check for destroyed objects, -not FLAG_FREED or FLAG_REMOVED. Don't use op->count of destroyed objects. -- Jan Echternach 6/8/2000 - -server/shop.c: get_payment2(): Type of tag is 'tag_t', not 'long'. -- Jan Echternach 6/8/2000 - -server/spell_effect.c: animate_bomb(): Fix environment checks. -- Jan Echternach 6/8/2000 - -server/spell_util.c: fire_bolt(): Bugfix: Set level of bolt. -- Jan Echternach 6/8/2000 - -server/spell_util.c: explosion(): Bugfix: Set FLAG_NO_APPLY before -moving the exploding object to the top. - Jan Echternach 6/8/2000 - -server/spell_util.c: put_a_monster(): First create the monster -completely, then just insert its head. - Jan Echternach 6/8/2000 - -server/time.c: generate_monster(): Bugfix: Don't free generators that -are used up in this function. process_object() already does this. -This fixes steambolt (which is a generator but must not used up here - -generate_monster() wasn't looking at FLAG_IS_USED_UP) and all generators -which should really be used up (because process_object() didn't expect -generate_monster() to destroy the object). - Jan Echternach 6/8/2000 - -server/rune.c: trap_disarm(): Bugfix: Use SK_level() to determine -disarmer's level. Fixes server crash if multisquare monster casts -"disarm". - Jan Echternach 6/8/2000 - -server/attack.c: hit_map(): Use was_destroyed() to properly check for -destroyed next object. Use llevError for error messages. Skip all -objects that are (no longer) at the specified map position. -- Jan Echternach 6/8/2000 - -server/map.h server/main.c Increased buffer sizes for map paths. -Needed for random map code. --PeterM 6/6/2000 - -6/4/2000: Fix done to disease.c which causes diseases to -put experience into the appropriate category. --PeterM - -6/4/2000: Added race fields to a lot of monsters. Modified -disease arcs so that they'll be specific to races. Changed -include/spellist.h to re-enable the disease spells. --PeterM - -6/4/2000 (disease.c) Added a self-limiting parameter to diseases so -that their power can be tuned to be reasonable. --PeterM - -lib/crossfire.png: Some floors modified to no longer have transperencies. -include/newserver.h: Add Send_Face_Png made, also update versions of - the protocol -include/newclient.h: Add CF_FACE_PNG constant. -socket/request.c: Add support for receiving PNG facemode request, - ad final logic to send png images to the client. -Changes by Mark Wedel, 6/2/2000 - -lib/checkarch.pl: Check for archetypes with type FIRECHEST but no level. -- Jan Echternach 5/29/2000 - -server/apply.c: move_apply(): Added handling of THROWN_OBJ, CANCELLATION -and BALL_LIGHTNING. -server/spell_effect.c: cancellation(): Traverse inventory of objects -with type THROWN_OBJ. -- Jan Echternach 5/29/2000 - -server/player.c: fire_bow() and server_skills.c: do_throw(): Bugfix: Don't -use op->count of freed objects. Use was_destroyed() to check for freed -objects instead of QUERY_FLAG (FLAG_FREED). - Jan Echternach 5/29/2000 - -server/spell_util.c: fire_a_ball(): Bugfixes: Use op->other_arch as -the archetype to fire, not FBULLET. (-> Firechests now cast fire balls -again, not snowballs.) Set level of fired archetype. Check if object -was destroyed after insert_ob_in_map(). - Jan Echternach 5/29/2000 - -server/time.c: move_firewall() and move_firechest(): Do nothing if -object has no map. Fixes server crashes if a dm creates such a thing -in the inventory. - Jan Echternach 5/29/2000 - -lib/collect.pl: Modify so that it does not complain about png files in the -arch directory MSW 5/28/2000 - -common/item.c: Fix query_short_name - wasn't generating all item names -properly because of changes made a few days ago - some areas manipulate -the string being worked on and was not updating the length properly. -MSW 5/26/2000 - -doc/mapguide: Fix some typos. MSW 5/26/2000 - -include/define.h: Add MIN_ACTIVE_SPEED value to determine what threshold -something will be put on the active list or not instead of using -varying values throughout the source code. -common/item.c, common/object.c, server/monster.c, server/pets.c, -server/spell_effect.c: Updated to use the MIN_ACTIVE_SPEED instead of -hardcoded values. MSW 5/26/2000 - -include/define.h,include/global.h, common/image.c: Remove following old -face information: INV_*_FACES, BLOCKED_FACE, STIPPLE[12]_FACE. This -is just a general cleanup - the server has not used these since the -X11 code was pulled from the server. MSW 5/26/2000 - -common/living.c: Add entries for the attack type AT_INTERNAL in description. -include/material.h: Update to include saves against INTERNAL attacktype. -include/living.h: Remove defunct objects_saves external referance. -The additions of internal to the tables should not really be needed, as -internal attacktypes should not be used publically, but these also act as -placeholders for future attacktypes. MSW 5/26/2000 - -* server/attack.c: hit_map(), hit_player(); server/spell_effect.c: -move_cone(); server/rune.c: spring_trap(); server/spell_util.c: -move_missile(): Bugfix: Added missing was_destroyed() calls. -* server/rune.c: spring_trap(): Bugfix: Call trap_show() before the rune -has a chance to be destroyed. -* server/attack.c: hit_map(), hit_player(): Check for freed objects -right at the beginning of the function. Removed check that hitter has -a name from hit_player(). -* server/spell_util.c: move_cone(): Bugfix: Remove cone objects in -inventories from active list, this fixes the cone without map problem when -a flower was hit with ice and put into an icecube. -* server/spell_util.c: move_missile(): Bugfix: Don't call hit_map() while -missile is removed from the map. -* server/apply.c: manual_apply(): Handle MMISSILE. -- Jan Echternach 5/26/2000 - -* server/spell_effect.c: animate_weapon() and server/spell_util.c: -summon_monster(): Bugfix: Set FLAG_FRIENDLY for friendly objects. -- Jan Echternach 5/26/2000 - -* server/attack.c: hit_player(): Bugfix: remove_friendly_object() -was called always after an object with type GOLEM had been killed, -but friendly objects are objects with FLAG_FRIENDLY, not objects with -type GOLEM. This fixes some "Remove_friendly_object(): Can't find -object" errors. - Jan Echternach 5/26/2000 - ------------------------------------ ---- BEGIN apply() cleanup patch --- Jan Echternach 26/5/2000 ------------------------------------ - -* player specific code moved from apply() to player_apply() and -player_apply_below(). - -* apply(): null pointer check removed - -* (bugfix?) print message if scroll is unusable because of invalid -spell number - -* bugfix: if the altar casted a spell, the message was sent to the -(destroyed!) sacrifice, not the player - -* split apply() -> move_apply() / manual_apply() - -* move_apply(), check_walk_on(), insert_ob_in_map() and other functions: -New parameter 'originator' that is the object that caused another object -to be inserted into the map. This removes the need to look through all -map objects above an altar to find the player who dropped the sacrifice. - -* always check FLAG_UNPAID in manual_apply() - -* don't check FLAG_UNPAID in apply_special(), new function -monster_apply_special() which checks FLAG_UNPAID and calls apply_special() - -* many new functions like apply_altar() and apply_spellbook() to make -the switch statements in move_apply() and manual_apply() shorter - -* changes to actual apply() code: - -ALTAR: - spell casting altars should work now if not operated by a player - common/button.c, operate_altar(): altar's message is sent to altar's - map, not player's map - bugfix: if sacrifice was accepted, apply() didn't tell the caller - that it has been destroyed -ARROW, CONE, FBULLET, BULLET: - now returns 'victim destroyed' if victim was killed by the attack -TRAPDOOR: - play sound only if something fell through the trapdoor - print trapdoor message _before_ falling into trapdoor -TRIGGER_ALTAR (in check_trigger()): - don't check for sacrifices if called from animate_trigger() - don't call check_trigger() from fix_auto_apply() anymore (this change - breaks maps with altars that have their sacrifice already stored on - them) -DEEP_SWAMP: - deep_swamp() -> walk_on_deep_swamp() / move_deep_swamp() - when deep_swamp() (now move_deep_swamp()) is called from - process_object(), assume that state (swamp->stats.food) is already 1 -EXIT: - removed support for multisquare players - don't print 'is closed' message when moving on an exit, only print this - message if exit is applied manually -SIGN: - only increment last_eat if it hadn't reached the limit yet -SPELLBOOK: - removed partial support for applying by monsters -BOW, WAND, ROD, HORN: - moved code to apply_special() -CLOCK: - bugfix: Monsters must not apply a clock, they would crash the server. -POWER_CRYSTAL: - Bugfix? Don't call esrv_update_item() if not applied by a player. -LIGHTER: - Bugfix? Just return 0 if not applied by a player. - -* changes to apply_special(): - -BOW: - remove double check_skill_to_apply() -ROD, HORN: - change message from "you apply ..." to "you ready ..." - -BOW: FLAG_READY_BOW is now set by apply_special(), but that seems -redundant because monster_check_apply() also sets this flag. Remove -setting of this flag from apply_special() because it could have a -more complex meaning in monster.c or remove setting of this flag from -monster_check_apply() because such stuff should be handled in apply.c? -FLAG_READY_BOW is also unset in apply_special() if a bow is unapplied. - -CONE: - don't multiply damage by 20 -SIGN: - you can hear magic mouths even if you are blind - however, now you can also read signs with FLAG_WALK_ON/FLAG_FLY_ON if you are - blind - (different object types or a new flag would be required) -RUNE: - detonation moved from move_rune() to move_apply() -> runes will now always - detonate if somebody steps on them - allow runes with FLAG_FLY_ON - -completely removed GRAVE and MONEY_CHANGER - -common/object.c: was_destroyed(): new function -include/object.h: new typedef tag_t -move_apply() returns void, check_walk_on() uses was_destroyed() - -lib/checkarch.pl: - check for archetypes with walk_on, walk_off, fly_on or fly_off and without - a type - check for archetypes with type FIREWALL (type 62) and without a level - -* server/apply.c: Bugfix: Don't skip calls to change_skill() if wizard - -calc_skill_exp() requires change_skill() to set the current experience object. - -* server/monster.c: find_mon_throw_ob(): Bugfix: Unapply applied object even -if heaviest object was choosen. -Bugfix: Use monster_apply_special() to unapply, clearing FLAG_APPLIED isn't -enough. -> Should fix the "HAS_READY_BOW without bow" errors. -* server/skills.c: find_throw_ob(): Bugfix: Use player_apply(), clearing -FLAG_APPLIED isn't enough. -Replace redundant check for FLAG_INV_LOCKED with error message at end of -function if the first check failed somehow and we have choosen an object with -FLAG_INV_LOCKED. -make_throw_ob(): error message if object is applied - -* lib/checkarch.pl: check that potions (type 5, POTION) have a level - -* server/apply.c: apply_special(): Handle all cases of applying and unapplying -skill objects. -* server/apply.c: manual_apply(SKILL): Just call apply_special(). -* server/skill_util.c: change_skill(): Rewrite to simply use apply_special() -for changing skills. - -* server/apply.c: apply_special(): Bugfix: Fixed return values. - -* server/skill_util.c: link_player_skills(): Bugfix: Don't set exp_obj for -(visible) skill tools. -* server/skill_util.c: link_player_skills(): Bugfix? Reset op->chosen_skill -and FLAG_READY_SKILL because we have unapplied all skills. -* server/input.c: legal_range(): Bugfix: range_skill is valid only if -op->chosen_skill != NULL, not when there is some (unapplied) skill somewhere -in the inventory. -* server/login.c: check_login(): Bugfix: call legal_range() after -init_player_skills() - we can't handle range_skill correctly if skills haven't -been initialized. -* server/login.c: check_login(): Bugfix: Check return value of legal_range(), -and reset op->contr->shoottype to range_none if range was invalid. -* server/login.c: check_login(): Bugfix: Don't call fix_weight() - fixing -the weight of _all_ players isn't necessary. Just initialize op->carrying -directly with sum_weight() instead. This also removes the problem of -updating the weight of an object that hasn't been sent to the client yet. -* server/login.c: check_login(): Bugfix: We need to call fix_player() -(init_player_skills() needs this, and it also makes the code more robust). - -* server/apply.c: apply_altar(): Bugfix: Print altar's message before -casting the spell. - -* server/spell_util.c: move_cone(): Use copy_owner() instead of set_owner() -and manually correcting the skill and experience object pointers. -* server/spell_util.c: cast_cone(): Don't set FLAG_FLYING - the archetype -needs to have this anyway for move_cone() to work properly. Instead, print -error messages if FLAG_FLYING, FLAG_WALK_ON or FLAG_FLY_ON are missing. - -* server/apply.c: move_apply(): TRAPDOOR: Bugfix: Multiply by op->nrof when -calculating the weight. - -* randommaps/standalone.c, server/apply.c: fix_auto_apply(): Bugfix: Don't -call check_trigger() for objects of type TRIGGER. For other trigger types, -call check_trigger() only if there is an object above the trigger. -This can be used to implement doors that are only open shortly after the map -has been loaded. -* common/button.c: check_trigger(): Many changes. The triggers should now -behave as described in crossfire.doc. -> This breaks maps that rely on old -buggy behaviour. - -* server/monster.c: monster_apply_below(): will_apply & 1 now also applies -TRIGGER objects, not only HANDLE objects. Allows an interesting solution for -/asyvan/gate9 if there is no second player who can open the middle grate. - -* common/button.c: check_trigger(TRIGGER_PEDESTAL) and update_button(PEDESTAL): -Bugfix: Handle objects with heads correctly. - -* server/c_object.c: drop_object() and socket/item.c: look_at(): Bugfix: If a -player is moved on top with remove_ob()/insert_ob_in_map(), FLAG_NO_APPLY must -be set temporarily. -* common/object.c: remove_ob(): Bugfix: Don't call move_apply_func() if -FLAG_NO_APPLY is set. - -* server/apply.c: manual_apply(): Don't call apply_special() for objects -that are not in the inventory. Return 2 in this case. -* server/apply.c: player_apply_below(): Skip objects for which manual_apply() -returned 2. - -* server/apply.c: apply_spellbook(): Bugfix: Don't give experience for items -with FLAG_STARTEQUIP. - ---------------------------------- ---- END apply() cleanup patch --- Jan Echternach 26/5/2000 ---------------------------------- - -server/input.c: modify examine_monster to use the maxhp field instead of -the arch hp field to determine healthiness of the monster. Also, give -this information for all creatures, not just monsters or players. -MSW 5/23/200 - -socket/item.c: Add MAXITEMLEN define at top of file and use that to determine - at what point item commands should be broken up. Prior hard coded value - was not always large enough. MSW 5/23/2000 - -include/define.h: add safe_strcat inline/static function. Add - DESCRIBE_ABILITY_SAFE and DESCRIBE_PATH_SAFE which use the safe_strcat - to prevent buffer overuns. -common/item.c: Have query_name use HUGE_BUF for its buffer - query_short_name - uses that buffer size, and we call the same thing. have quer_name and - query_short_name use the safe_strcat function. Increase buffer size - in ring_desc to be a VERY_BIG_BUF and also use safe_strcat along with the - DESCRIBE_*_SAFE macros. -server/input.c: Modify examine.c to not get buffer overruns for very long/ - complicated items. Modify long_desc to also handle long names/descriptions - without buffer overruns. -socket/item.c: Modify the functions that prepend the length to the name - of the object to handle very long (>255) object names properly - now we - just truncate it and only send the first 255 bytes. add function - add_stringlen_to_sockbuf to make this task easier. -With the above changes, very long named items/items with very long -descriptions works properly in both the server (no crashes) and the -client (no crashes/protocol errors) MSW 5/22/2000 - -common/item.c: Modify query_short_name to avoid buffer overflow on long -ring descriptions. Also, increased size of buffer in this function so -that longer ring descriptions will not get truncated. MSW 5/22/2000 - -server/c_chat.c: Add standard banner to top of file. Fix say command so -that it does not crash the server if something beyond 256 characters is -spoken - extra data is just truncated. MSW 5/22/2000 - -common/object.c: Splitted set_owner() into set_owner_simple() and -set_owner(). copy_owner(): New function. -server/spell_util.c: explode_object(): Use copy_owner() instead of setting -skill and experience objects manually. Bugfix: Don't use op->owner -directly (fixed by using the caster in call to SP_level_dam_adjust(), -not the owner, which was wrong anyway). -server/spell_util.c: fire_arch_from_position(): Use copy_owner() instead -of set_owner() if 'op' isn't the real owner but only a spell object -owned by somebody else. -server/spell_util.c: move_swarm_spell(): Use the swarm spell object as -the owner in call to fire_arch_from_position(), which now handles this -case correctly. -server/spell_util.c: fire_swarm(): Call tailor_god_spell(). -server/gods.c: determine_god(): op->type==SWARM_SPELL is a spell. -server/gods.c: tailor_god_spell(): op->type==SWARM_SPELL is a spell. -Always abort function if we couldn't find a god. Always add god's -attacktype if the spellop's attacktype has AT_GODPOWER. -- Jan Echternach 22/5/2000 - -common/init.c, common/loger.c, include/logger.h, server/init.c: New -log level llevInfo which is the new default log level. -Many other files: Use llevInfo instead of llevError where appropriate. -Use 'settings.debug >= llevDebug' instead of 'settings.debug'. -- Jan Echternach 21/5/2000 - -server/main.c: Use a marker object to track current position in the list -of active objects. Using a pointer didn't work because all objects on -that list can be removed from it by process_object(). One of the things -this fixes is bogus "Free object on list" errors. -- Jan Echternach 21/5/2000 - -crossedite/Makefile.in: Modify to use $(MAKE) instead of make when -descending into subdirectories - fixes compilation on FreeBSD - MSW 5/17/2000 - -socket/init.c: Fix incorrect check on return value from fread when -loading xpm images. MSW 5/17/2000 - -Fix server/spell_effect.c - was assigning altar->other_arch to an object -and not archetype MSW 5/16/2000 - -server/spell_effect.c: magic_wall(): Duration of darkness spell now -implemented with op->stats.food. This avoids problems with very low -speed values that were interpreted as infinite duration. -lib/spell_params: Changed duration parameters of darkness spell to -give a reasonable duration with the new formula. -- Jan Echternach 16/5/2000 - -common/living.c: drain_stat(): There are 7 stats now, not 6. -- Jan Echternach 15/5/2000 - -server/rune.c: rune_attack(): Check that victim still exists after -hit_player() was missing. This fixes server crashes if monster applied -a chest, found a diseased needle and was killed by it. -- Jan Echternach 15/5/2000 - -server/spell_effect.c: cast_charm(): out_of_map() check was missing. -This fixes server crashes when a player casted this spell near the -edge of a map. - Jan Echternach 15/5/2000 - - -Make image files and code more generic. This was largely done to make -adding support for png files easier, but in reality, it means adding support -for any new file format is now trivially easy. Format of the image -file is: -IMAGE \n -followed by the image data. -This allows support for binary image formats (png), but also means that -the server doesn't need to know anything about the image format - rather -it is all just data as far as the server is concerned. I think this -actuallyy loads the xpm data a little faster - it would make sense that -it should, since it just reads all the data in with one fread instead -of parsing it line by line waiting for the end image delimeter. -Note: While png images are loaded, they are currently not supported -in the client nor will the server send them - that is the next step -in the work, but that will require just a few minor changes to the -server - most of those change will be in the client. - -crossedit/xutil.c: Merge bitmap & pixmap load routine into one called - ReadImages, function modified to use above format. -crossedit/App.c: Call ReadImages to load images. -include/newserver.h: Change FaceInfo structure to have arrays of data - and datalength instead of explicity entries for pixmap vs bitmap data. -lib/adm/make_xpm_file.pl, lib/crossfire.cfb, lib/xbmtobdf.c: Removed - - either note needed or replaced by new naming scheme. -lib/adm/collect_images.pl: Replacement/improvement of make_xpm_file.pl - above - this handles all image formats (xbm, xpm, png). This is - also more intelligent in that it will not try to rebuild the image files - if there is not a valid arch directory. -lib/crossfire.png, lib/crossfire.xbm (new files): .png file is for png - images. xbm is to keep with the new standardized naming convention used - and is for the bitmaps. -lib/crossfire.xpm: New format used in file. -lib/Makefile.in: Modified to collect via new script as well as new - directives to collect (png files). -socket/init.c: Modified to load with the new format and data structures. -socket/request.c: Modified to send data with the new data structures - provided. - -End of image changes, MSW 5/13/2000 - -configure.in, configure: Add check for perl so that we can call scripts -properly - MSW 5/13/2000 - -common/re-cmp.c: Add some tolower calls in the comparisons so most -regular expressions should not be case insenstive (makes matches & says -work better). Note that I did not change the behaviour on range matches -(Z-f for example), as I thought there may be side effects in that case. -MSW 5/8/2000 - -socket/request.c: Add length checking to NewPlayerCmd so that if the client -sends us a really long command, we just truncate the end of it and not -overwrite our internal buffers causing crashes. MSW 5/8/2000 - -server/player.c: add out_of_map check to stand_near_hostile function. This -fixes a server crash if the player uses a hiding skill near the edge of a map. -MSW 5/8/2000 - -common/arch.c, common/loader.l (loader.c): Modify the load routines -to strip off trailing whitespace in object names and other_arch fields - -I believe this is why altars to Sorig did not generally work, and while -generally that white space should not exist, doing a little extra checking -for it is not a bad idea - MSW 4/26/2000 - -Add HOLY_ALTAR type, and use that for praying over for gods and the -like. -doc/crossfire.doc: Add description of HOLY_ALTAR type and meaning - of fields. -common/map.c: Disable consecration code for altars. -include/define.h: Add type for HOLY_ALTAR -include/sproto.h: Update for change of some functions below. -server/c_wiz.c: Modify setgod command to call become_follower with - proper second arg. -server/gods.c: Change become_follower to take object pointer to god instead - of name, since the holy_altar has the pointer in its other_arch. - Modify pray_at_altar to use the new fields, as well as fixed - what seemed to be numerous bugs in that function. -sever/skills.c: Change check from ALTAR to HOLY_ALTAR, also change - check to see if HOLY_ALTAR is consecrated by looking at the - other_arch field. -server/spell_effect.c: Update consecrate so that caster must be - higher effective level than the altar, also update for - differing fields. -maps/thomas/sisters/shrine0, map/thomas/sisters/tower0: Remove - title from altars on these maps - these were the only two maps - using old style altars consecrated to a god. Since it appears the - real purpose of the altars on these maps was to trigger something - else, they were kept as old style altars. -arch/gods/altars (relocated from arch/indoors, as I think the new - location makes more logical sense): Update for new fields/format. - This also affects lib/archetypes, lib/bmaps.paths, lib/crossfire.xpm, - lib/crossfire.cfb -lib/adm/archsearch.pl: Modified to hunt out old archetypes - some of the - changes could be useful in general cases. -MSW 4/26/2000 - -server/spell_util.c: Fix move_golem so that multi square avatars (golems) -don't hit themselves. Remove will_hit_self function (only used in -move_golem), since it did not work. Change structure & indenting of -move_golem function so it isn't quite so nested - functionality -remains the same. When we do find something to kill in move_golem, -call attack_ob against it instead of hit_map - hit_map is not save -for multi object hitters. MSW 4/24/2000 - -Key usage change: Add new command 'usekeys' that specify how keys -are searched for. The three options are inventory, keyrings, and containers. -These options apply to both standard keys and special keys. If the player -has a key for the door but it is in a container that will not be used, -print a friendly message of the key name and container name. Files -affected: -help/usekeys: Added describing options -lib/Makefile.in: Addition of help/usekeys above. -include/player.h: Add new enumeration and entry into player structure -include/sproto.h: New function prototype -server/apply.c: change of Find_Key to new function with slightly - different options -server/c_misc.c: add function to support 'usekeys command. -server/commands.c: addition of usekeys command -server/player.c: rewrite & rename of find_key command, as well as changes -to move_player_attack -Mark Wedel 4/21/2000 - -server/spell_effect.c: create_bomb(): New spell_type parameter, merely -for consistency with itself and with other spell casting functions. -- Jan Echternach 4/19/2000 - -server/spell_effect.c: create_bomb(): Set level of created bomb. -Fixes the problem that the splints were casted without a level. -- Jan Echternach 4/19/2000 - -lib/checkarch.pl: New perl script to check the archetypes file for -obvious bugs (like object that is alive but doesn't have a level). -- Jan Echternach 4/17/2000 - -include/spellist.h: "meteor swarm" is now a missile spell (PATH_MISSILE) -just like "comet". - Jan Echternach 4/17/2000 - -server/spell_util.c: path_level_mod(): Rewrote to fix countless bugs. -New interface with explicit base level parameter. -server/spell_effect.c: finger_of_death(): Call path_level_mod() with -correct base level. -server/spell_util.c: casting_level(): New function that combines -SK_level() with path_level_mod(). -- Jan Echternach 4/17/2000 - -server/spell_util.c: Several cosmetic changes (spell type parameter name -is spell_type, arch_to_object(get_archtetype(...)) is equivalent to -get_archetype(...), use casting_level() if applicable). -- Jan Echternach 4/17/2000 - -server/spell_util.c: fire_swarm(): New 'caster' parameter because -owner and caster can be different. Level of the swarm object is casting -level of the caster, not overall level of the owner. -server/spell_util.c: fire_arch_from_position(): Set level of fired -arch to casting level of caster. -server/spell_util.c: cast_cone(), cast_smite_spell(): Set level of spell -object to casting_level() and not SK_level() to honour path_attuned and -path_repelled of the caster. -server/spell_util.c: move_cone(): Just copy the level for new cone -objects. - -Missing level meant AT_DEATH didn't work, missing call to -path_level_mod()/casting_level() meant path_attuned/path_repelled was -ignored. - Jan Echternach 4/17/2000 - -server/player.c: fire_bow(): Set level of fired arrow. Arrows with -AT_DEATH are now working. - Jan Echternach 4/17/2000 - -server/player.c: fire(): Call check_skill_to_fire() even for wizards -because this function has the important side effect of setting the current -skill and experience objects. - Jan Echternach 4/17/2000 - -server/skills.c: do_throw(), server/time.c: stop_arrow(), server/player.c: -fire_bow(): Flying arrows and thrown objects have FLAG_NO_PICK set because -picking these objects is currently broken (and maybe it shouldn't be -possible anyway - picking up a _flying_ arrow?). - Jan Echternach 4/17/2000 - -server/c_wiz.c: set_god(): Didn't work at all because it was trying to -set the current player as his own god. - Jan Echternach 4/17/2000 - -server/map.c: check_path(): Return value was wrong if the name did not -refer to a regular file. A symptom of this bug was that the server crashed -if a wizard tried to enter a directory with the 'goto' command. -- Jan Echternach 4/17/2000 - -server/map.c: open_and_uncompress(): Check that the file we have opened -is (still) a regular file, fail if it's not. This is the right place -for such checks if we want to avoid race conditions (e.g. file replaced by -directory while trying to open it). - Jan Echternach 4/17/2000 - -c_party.c commands.c daemon.c disease.c gods.c spell_effect.c spell_util.c: -Cosmetic fixes - updates to rcsid string to include right file name as well as -updates to mail address and/or additions to top banner. Mark Wedel 4/13/2000 - -Various files: Updated my mailing address to be accurate - Mark Wedel -4/13/2000 - -doc/playbook/handbook.idx: Automatically generated file removed. This -is not something normally included in packed up distributions, so no reason -to have it in CVS - Mark Wedel 4/13/2000 - -doc/include_html.pl, doc/playbook/make_index.pl, doc/spoiler-html/makeps.pl, -lib/adm/make_xpm_file.pl: - -Change to use /usr/bin/perl instead of /usr/local/bin/perl - real change is to -find perl in configure.in and call the scripts with that. Mark Wedel -4/13/2000 - - -server/input.c: Don't try to calculate spellpoint costs for denied spells, -because these are undefined and are now causing lots of BUG messages. Also -improved formatting: spellpoint costs can be > 99, and don't fill everything -with zeros, use spaces instead. Patch by Jan Echternach, applied & checked in -by Mark Wedel, 4/12/2000 - -server/skill_util.c: Fixed some log messages that were lacking a newline at -the end. SK_level(): Rewrite of this function to simplify its structure. -Print error message if we find an invalid level. Add top copyright/contact -banner (msw) Patch by Jan Echternach, applied & checked in by Mark Wedel, -4/12/2000 - -server/apply.c, server/monster.c: Fix in apply.c for encounter maps -so that proper message is generated, and differentiate behaviour if it -is a floor vs not a floor. Also, change to both files in that apply_below -stops at the floor object. Patch by Jan Echternach, applied & checked in by -Mark Wedel, 4/12/2000 - -server/apply.c, doc/crossfire.doc: Fix to prevent server crashes when monster -applies poison object. doc file is updated to include accurate information on -values in poison object. Patch by Jan Echternach, applied & checked in by -Mark Wedel, 4/11/2000 - -CREDITS, server/main.c: Add Peter Gardner to list of credits. -Mark Wedel 4/4/2000 - -server/apply.c, improve_armour(): -Maximum armour value reduced to 90. Items can now always be improved up -to this value. For armour x you need level x, not level x + 1 as before. -esrv_send_item() and fix_player() also called if only magic value was -improved. Patch by Jan Echternach, applied & checked in by Mark Wedel, -4/4/2000 - -server/attack.c, attack_message(): -More messages. "grind to dust" is more damage than "shred to pieces". -Patch by Jan Echternach, applied & checked in by Mark Wedel, 4/4/2000 - -server/spell_effect.c, magic_wall(): -Fix calculation of duration of darkness spell. Before, you could get -huge negative speed values with high experience levels, which meant very -short duration. -Patch by Jan Echternach, applied & checked in by Mark Wedel, 4/4/2000 - -server/spell_util.c: -1) New argument of fire_swarm() to specify whether it's a magic attack. -All swarm spells except meteor swarm are now magic (just as the -underlying basic spell). -2) New function fire_arch_from_position() which doesn't use the owner's -position as the starting position of the fired arch. -3) move_swarm_spell(): Correctly set owner and magic in call to -fire_arch_from_position(). -4) Above changes fixes "cause many wounds" spell -Patch by Jan Echternach, applied & checked in by Mark Wedel, 4/4/2000 - - -common/map.c: Change calls in file to use insert_ob_in_map simple. -This fixes bugs with buttons not being applied correctly when the map -is loaded - the cause is that push_button is getting called for the -button before all the objects the button is linked to have been loaded. -Then when the map finishes loading, the call to update_button is called -and they are not in sync. This change should make loading slightly faster, -mostly because it does not call check_walk_on during the loading, so that -buttons don't get pushed/changed around. Mark Wedel 3/28/2000 - -server/player.c: If player is using pickup mode 6, only have them pick up -the item if they know it is magical. Prior to change, items would be -picked up if they are magical, but not if the player knew that, so the code -was giving extra knowledge to players. Bug reported by Kurt Fitzner, -checked in by Mark Wedel, 3/26/2000 - -common/map.c: Code fix by Kurt Fitzner so that unique maps will get -compressed if so needed. Fixes problem of unique maps not being -able to get reloaded as they are saved with the compress suffix but -not in compressed form. Code checked in by Mark Wedel, 3/26/2000 - -server/skills.c, server/spell_effect.c: Improve behaviour when identifying -items - the identify routine already updates the client if it is -in the players inventory, so only send update to client if the item is -on the map. Also, do full item update, as many fields may change, and -that is what the identify function does. Standard top of -file banner also added to skills.c file. Fixes problem of -objects in inventory being displayed with two numbers in from -(ie, two two bows +1). -Bug and initial fix of item updates by Kurt Fitzner, -implemented in a bit different way by Mark Wedel. 3/26/2000 - -Makefile.in, doc/Makefile.in: Modified so that making the docarchive -now works. The make must be done from the top level for it to work, since -some values are passed, but the doc/Makefile.in was missing some declarations -and had some other fixes that needed to be done. msw 3/22/2000 - ------------------------------------------------------------------------------- -Changes for 0.95.5: - -Makefile.in: comment out the EXTRA_FLAGS (which contains the -Wall -entry) - the presumption that everyone is going to use gcc to compile -crossfire is a poor one, and -Wall is only supported on gcc. I would -rather have it compile on the maximum number of systems without it -needing changes than to require the end user to make the customizations. -A better long term solution is to have configure.in check for gcc or -if -Wall is supported it and have it add it in. msw 3/21/2000 - -server/c_object.c: Fix pick_up_object function to deal with non players -picking up objects - prior to fix, program would crash when monsters -pick up objects. Also, add standard banner at top of file about -copyright, contact, version information. msw 3/21/2000 - -CREDITS, README: Updated to contain my new mailing address. In reality, -almost all the files have an out of date address for me, but these -are probably the ones people will look at most. README also updated -with new ftp location. msw 3/20/2000 - -include/Makefile.in: Update files to include material.h - need when -packing up new releases - msw 3/20/2000 - -doc/hanbook.ps, doc/spoiler.ps, doc/spoiler-html/spoiler.html: Rebuilt with -latest version of crossfire - not sure if there are any content changes, as -the tools to build the file have been updated on my system, causing many -changes to the prologue and outputted data. - msw 3/20/2000 - - -Change doc/spoiler-html/Makefile.in and doc/playbook-html/Makefile.in to use -$(datadir) instead of $(C_LIBDIR). Other add AWK and INCDIR lines so that it -properly builds with autoconf setup. msw 3/19/2000 - -Change spoiler.tex, handbook.tex to build properly with later versions -of tetex - added language specifier when using the babel package. -msw 3/19/2000 - -Add missing doc/playbook/fig directory to the CVS reposistory - -msw 3/18/2000 - -Change summon_cult_monster code so that it will no longer summon big monsters -on top of walls or the player. Also, if there is not space for a big -monster, try to find another pet monster that will fit in the space. -File affected: server/spell_effect.c - msw - -Change gorokh.arc to use anim devil instead of anim Lucifer - fixes crash -when using avatars of gorokh - msw - -Split off kill_player function from do some living, and check for player -death upon player login. This splits up an otherwise very large function, -but more importantly, the second point allows NOT_PERMADEATH to work as -expected when the player is dead when logged out. Previous, the if the -player was dead when they logged out, it would just kill off the character -permanently (without grave marker or anything), even in NOT_PERMADEATH -mode. Also, cleaned up player load code to remove code that supported -very old style save files. -Files changed: server/login.c server/player.c include/sproto.h - msw - -Change NO_STAT define in living.h,skillist.h,skill_util.c to NO_STAT_VAL -to remove conflict on AIX systems. - msw - -Fix error in configure.in - was referancing BZIP2, when it should have -used BZIP - msw 2/7/2000 - -server/skill_util.c: Fixed spelling of unwield -configure.in: Update -z checks to not use eval, double quote the variable. -This seems to be needed on solaris and probably other systems. -Both changes commited by Mark Wedel, 2/7/2000 - ----SMALL BUGFIX--- John Cater 5/11/1999 -server/attack.c: -- changed the logic in hit_player to attack enemy races with holy word -playtested - - ----BEGIN BATCH UPDATE--- DAMN 9/17/1999 -server/alchemy.c: -- minor cleanup - -server/apply.c: -- split multiple lighters - -server/attack.c: -- vulnerability gives -4 to saving throw against non-damage attack effects -- immunity to acid reduces the probability of corrosion -- immunity and protection and not vulnerability to acid prevents corrosion -- magic bonus improves item's saving throw against acid -- vulnerability to drain doubles rate of exp loss, protection halves rate -- holy word slaying is checked in hit_player, no need to double-check -in hit_player_attacktype -- prot:magic and vuln:magic affect all magical damage, not just raw magic -- Holy Word and Turn Undead affect undead at half strength if they're not -listed as an enemy race -- Holy Word and Turn Undead have no effect on undead if they're listed as -a friendly race -- minor bugfix/cleanup - -server/gods.c: -- minor bugfix/cleanup -- luck slightly improves chance of divine intervention - -server/input.c: -- fixed typo - -server/main.c: -- trivial bulletproofing, probably no effect - -server/player.c: -- sp regen penalty from armour calculated in fix_player instead of being -recalculated for each spell point gained. - -server/shop.c: -- payment will come from open pouches if you don't have enough in your -top-level inventory -- money for sold items will go into open pouches until they're full, -then overflow into top-level inventory - -server/skills.c: -- minor bugfix in throwing -- writing in one of a stack of books seperates one book out first - -server/spell_effect.c: -- generalized staff_to_snake to animate_weapon - -server/spell_util.c: -- Staff to Snake, Dancing Sword, and Animate Weapon spells now all use -animate_weapon function -- holy golems avoid damaging their owners -- raw mana spells - -common/living.c: -- minor bugfix -- fix_player now calculates sp regen penalty from armour - -common/readable.c: -- spelling fix: grimore -> grimoire - -doc/crossfire.doc: -- minor edits - -include/defines.h: -- moved object type numbers to object.h -- moved flag numbers to object.h -- moved NROFREALSPELLS to spells.h -- moved path numbers to spells.h -- moved DESCRIBE_PATH macro to spells.h -- moved ARMOUR_ and WEAPON_ macros to player.h -- moved player state numbers to player.h -- moved monster movement numbers to living.h -- moved NROFSKILLS to skills.h - -include/global.h: -- #defines from spells.h and material.h loaded early - -include/object.h: -- now has the #defines for object type numbers - -include/skills.h: -- moved NROFSKILLS here - -include/player.h: -- added gen_sp_armour variable - -include/spellist.h: -- added mana spells, Dancing Sword, and Animate Weapon - -include/spells.h: -- moved NROFREALSPELLS here and updated it -- now has the #defines for spell path nummbers -- added mana spells, Dancing Sword, and Animate Weapon - -include/sproto.h: -- added animate_weapon and pay_from_container prototypes - -include/material.h: -- new - -lib/spell_params: -- added entries for mana spells along with their fire equivalents - -lib/formulae: -- minor spelling fixes to match minor spelling fixes in artifacts - -lib/artifacts: - -Weapons -- Sanwe -> Gnarg (any weapon) - chance 5, value x10, magic 0, dam 120% - -- Lythander (any weapon) - chance 5, value x20, magic 0, luck +1, weight 90% - -- Gwormi -> Gaea (wooden weapons only) - chance 20, value x50, magic 2, regen +1, dam 110% - -- Slay Demon -> Valriel (any weapon) - chance 15, value x30, magic 2, weapon speed 120%, slaying demon - -- (new) Gorokh (any weapon) - chance 15, value x30, magic 2, weapon speed 120%, slaying angel - -- (new) the Devourers (any weapon) - chance 8, value x30, magic 1, attacktype: physical, cold, depletion - -- (new) Mostrai (axes and hammers only) - chance 10, value x12, magic 1, dam 140%, weight 115% - -- (new) Sorig (metal weapons only) - chance 5, value x15, magic 1, weight 95%, weapon speed 125% - attacktype physical, electricity - -- (new) Ruggilli (metal weapons only) - chance 5, value 15, magic 1, weight 85%, weapon speed 110% - attacktype physical, fire - -Helmets (moved to after weapons, with the rest of the armour) -- Lordliness -> Valriel (full helm only) - chance 20, value x50, magic 2, Wis +1, Cha +1 - -- Uriel -> Sorig - chance 10, value x20, magic 1, ac +1, armour 120%, prot electricity - -Shields -- Theodin -> Mostrai - chance 8, value x24, magic 1, prot fire - -- Gnarg - chance 8, value x12, magic 1, ac +1, armour 180%, Cha -1 - -Gauntlets -- (new) Sorig (gauntlets only) - chance 15, value x75, magic 2, armour 10, weight 125%, attack: electricity - -- (new) Sorig (gloves only) - chance 10, value x10, magic 1, armour 5, weight 125%, prot: electricity - -Armour -- (new) Valriel (plate and scale only) - chance 6, value x20, magic 1, armour 120%, weight 110% - -- (new) Gorokh (plate and scale only) - chance 6, value x15, magic 1, ac +2, armour 110%, weight 105% - -- (new) Ruggilli (plate, scale, or dragon armour) - chance 10, value x55, magic 3, ac +1, armour 120%, weight 90%, prot: fire - -- (new) Gaea - chance 10, value x25, magic 2, ac +1, armour 120% - -Cloaks -- (lesser version of cloak of the Underworld) the Devourers - chance 3, difficulty 3, value x50, magic 3, weight 50%, material 0, Cha -2, - prot: acid, drain, ghosthit, depletion - -Bows -- (new) Valriel - chance 10, value x15, magic 1, weight 110%, damage 200% - -- (new) Gorokh - chance 15, value x15, magic 2, damage 160%, attacktype: physical, acid - -- (new) Lythander (not crossbow) - chance 10, value x22, magic 1, weight 75%, wc +1, speed 150% - -- (new) Ruggilli (crossbow only) - chance 10, value x18, magic 2, weight 85%, wc +1, speed 110%, - attacktype: fire - -- (new) Sorig - chance 12, value x20, magic 2, weight 95%, wc +1, speed 125%, - attacktype: electricity - -- (new) Mostrai (crossbow only) - chance 5, value x50, magic 3, damage 140%, speed 75%, - attacktype: weaponmagic - -- (new) Thunder - chance 10, dificulty 5, value x10, magic 2, weight 90%, damage 150%, wc +2 - attacktype: physical, slow, paralyze - -...and a few minor spelling fixes - ----END OF BATCH UPDATE--- DAMN 9/17/1999 - -Add crossfire.oc.humbug.org.au server information to README file - msw - -Change compress method definitions from being determined by checks -on system type to having autoconf find the utilities for us. Also, add -bzip2 support. Files affected: Makefile.in configure.in common/map.c -server/init.c server/login.c include/config.h include/define.h -include/autoconf.h.in - msw - -Fix in server/rune.c - if the victim of a trap/rune is not on a map -and the object has a disease, it would crash the server. Temporary -fix put in to make sure there is a map, and if not, use a predefined -difficult of 1. I think the real issue is how can an object not on a map -be setting a trap (in this particular bug, reported by Klaus Elsbernd, -the victim was a thrown object) - msw - -Change by dragonm@absolut.tegris.org - improve crossedit so that if you -try to load a map you alreay have in memory, it will raise the window - -it will also give you the option to forget, save changes, or just raise -the window if the in memory version of that map has been modified. Checked -in by msw. (crossedit, App.c, Edit.c, Edit.h) - -Bugfix in server/apply.c - apply_container() - When checking for keys to locked containers, only searched player's - inventory, not keyrings. Changed to use FindKey function in player.c, - which does search keyrings. - --DAMN - -Bugfix in server/main.c - enter_exit() - Unique maps were using their actual location as a path for moving to - a new map. They need to use the location of the original map, not - the character's individual copy of it. This is re-constructed from - the individual map's filename, which is based on the original path. - --DAMN - -Remove xbmtobdf man page - since it is run automatically and it is likely -that people will not run it manually (and it appears to be innacruate - or -at least imcomplete), may as well remove it. - msw - -Change install location of man pages to section 6 instead of section 1 - msw - -New man page submitted by Egbert Hinzen that is actually correct and -accurate as the options now relate to crossfire. - msw - - This one is a suggested fix for the alchemy bug that grants obscene - amounts of experience for certain formulas. Those formulas are the ones - that create items with a high fixed level, because those items are - pretty worthless otherwise. Dust of Repelling Undead, for example, is - level 30. - The fix I implemented here is to base the chance of success largely - on the level of the product, so it's very difficult to produce - something like Dust of Repelling Undead, and therefore worth the - extra experience. The chance of success is now based on the - following factors: - 1) level of product - 2) number of ingredients in formula - 3) rarity of formula as listed in "formulae" data file - 4) number of batches being made - 5) Alchemy skill (if present) - 6) enchantment of cauldron - 7) luck - -patch from DAMN -This one makes a couple things level dependent that used to be fixed: -1) time it takes Word of Recall to take effect -2) amount of energy transferred by Transferrence spell -3) percentage of energy drained by Magic Drain spell - -Also, the following effects have been modified: -1) Followers of a cult that considers undead enemies have a penalty to -Command Undead. -2) Magic Drain gives back to the caster a small portion of the energy -drained from the victim. - -And a bug was fixed: -1) SP_level_dam_adjust used and SP_level_strength_adjust used the -player's level, where they should have used the caster's level. - --Patches from DAMN, applied by PeterM - -Marker object added, alchemy modified so that recipes -can require keycodes and MARKS to execute, detectors modified -to be able to detect MARKS, and all of this documented in -crossfire.doc --PeterM - -server/gods.c -- changing gods now costs players their special - prayers. --PeterM -server/alchemy.c -- levels less than ten no longer produce - cursed items, but only slag or nothing. --PeterM -server/shop.c -- unidentified stuff is worth at most 60gp or so. - ---PeterM - -random_maps/style.c - fix type in the scandir function which cause -compilation problems for those systems that actually need it. - msw - -Change command_cast_spell so that it preserves a return value from -find_spell. This re-enables partial spell matching (ie, cast prot -will show all spells that start with that.) - msw - ------------------------------------------------------------------------------- -Change for 0.95.4: - -Add better comment in config.h about the DM_MAIL option - msw. - -Fixed and doc/playbook/Makefile.in doc/spoiler/Makefile.in so it works with -autoconf setup. - -Updated to properly generated handbook.ps when needed - msw - -doc/crossfire.doc: Updated with disease code notes, detector notes. - -crossedit: Fix in edit.c to ensure map objects (mainly is_floor objects) -are actually removed visually as well as from a pure object standpoint. - -Change to save_throw_object: If object is in players inventory and -is destroyed, send update to client. This can happen when trying to -ignite something in the inventory with flint and steel - msw. - -In apply_lighter, do more accurate check when seeing if the attempted -object was actually destroyed. Also, cache the item name so that if -it is destroyed, we have a proper name to print out. - msw - -fireborns changed to have Pow stat bonus instead of Wis -stat bonus. --PeterM - -Some problems in the random map code fixed: specificially, - 1) fountains no longer attempted placement outside map - 2) Ignore files/dirs named CVS when looking for styles. - -I changed a few of the maps to have exits to random maps. -I made one random house in Scorn, one random exit in the Hall of Bones -to an undead maze, another exit to a random map in the hole SE of -Scorn, and one in the bottom of the Tower of the Stars. --PeterM - - -Update lib/Makefile.in to create empty bookarch and temp.maps files as -part of install process. - msw - -Change configure.in script so that by default, files will be put in -installdir/var/crossfire and installdir/share/crossfire instead of -just installdir/var and installdir/share. This allows crossfire to be -installed more cleaning without it having its own top level directory. -Old installation behaviour can be gained by using --enable-old-layout when -running the configure script. - msw - -Patch by Carsten Pluntke that fixes a problem with unique maps not being -properly reloaded after being swapped out (main.c) - msw - -Fix so that when picking up objects from a container, the client gets -an update to remove the object display from the container (ie, if -you pick up all the gold coins from a container, the total in the players -inventory always got corrected, but the client still displayed some in the -container even if there should not be.) The change is in c_object.c - msw - -Check that hitter has a valid name before it attacks - fixes some -crashes (attack.c) - msw - -Enhance lib/collect.pl to ignore CVS directories - msw. - - -Improve auto_apply functions so that it will create treasures (random_* -items) inside other objects. There is still a limit in that it will only -look for these objects inside other top level objects - a random potion -inside a chest inside a monster will not be processed. But that -should be a rare case, and nesting containers very deep has never been -well supported in the code. The code affects is in the apply.c file. -msw - -Add Xaw to start of libraries when linking crossedit - fixes focus problem. -File affected configure.in - msw - -Fixed a bug in the "depletion on death" code. The depletion -never had any stat removal specified. --PeterM - -Remove berzerk code/variable from player structure. The code had -no effect - whatever functionality it once had has been removed in the -past. - msw - - -Add flag save information for FLAG_CLIENT_SENT that was otherwise -missing (loader.l). This fixes the disappearing archetype bug - msw - - -Fixed buffering bug in lowlevel.c - --David - ------------------------------------------------------------------------------- -Changes from Crossfire 0.95.2 to 0.95.3: - -Fixed missing god animations in the archetypes. - -SIMPLE_EXP option added. From config.h: - * Define this if you want to use the new (0.95.3) experience system. - * The system has the following changes: - * - * 1) 2000 exp need for second level. All additional levels are shifted - * accordingly. - * 2) Your stats in your skill categories don't affect the amount of - * exp you get. - * 3) Your level difference doesn't affect the exp you get for killing - * monsters. - * - * If this commented out, you get the old system. - * - * This can also be set by using -simple-exp/+simple-exp as a run - * time option. - - -Change treasure lists so that stat improving potions won't show up in -shop. They should still show up on the ramdom_potion spaces on the -maps (may in fact be slightly more common there than before) - -Move socket related code out of server directory and into socket directory -and re-arrange cod so that what is in what file makes more sense. - -Code from Peter Mardahl to have death result in stat depletion and -not actual stat loss. Setable by via STAT_LOSS_ON_DEATH option in config.h -or -stat_loss_on_death/+stat_loss_on_death command line -options. - -Patch by Peter Mardahl to change immunity spells from PATH_PROT to PATH_NULL -- this will stop gods from giving out these spells. - -Patch by Peter Mardahl so that players will never fumble the reading -of scrolls. You only get half as much exp for reading the scrolls now -however. - -Update the README file - the list of public servers was grossly out of date -and mostly removed. The instructions for running/playing were out of date, -containing information for servers with the old X11 code. - -Change CAN_MERGE so that identified items with different been_applied -will merge (this is currently done by just setting the been_applied flags -for the object in CAN_MERGE if they have been identified) - -Temporary fix for disease code - I was seeing endless loops in weight -contributions because an disease object op->env points back at itself. -In do_symptoms, we check to see if the victim matches the disease we -are about to infect them with, and if so, don't proceed further. The -cause of this pointer recursion needs to be found instead of -this current fix. - -Change daemon.c so that hpux systems can also use ioctl (.., TIOCTTY, ..) -call in addition to SYSV systems. - -players and logs command added. players show all current player names -currently in use, logs show sockets that are currently listening for -kill log information. Add limited support for some commands from -the socket (hiscore, logs, maps, motd, players, version, who). -After socket has been authenticated to have valid server, shout and tell -also available. To switch socket into old style mode, first command -entered should be 'oldsocketmode'. Server code then knows not to -prepend packet length information, so most functions work on this new -socket without any changes. - -Add verify_player function to login.c (takes name and password and verifies -they are ok - used for old socket emulation). Also notify all -players when a player joins the game (this must have gotten removed -at some point). - -change prototype for cs_write_string to take a constant string. In -readpacket, have it read in 100 bytes even if length information looks -incorrect (allows easier initial switching to oldsocketmode). If -the length of the input buffer is for some reason negative, call abort. - -Clean up nconns in socket.c - it was being increased 2 times when -a socket was added, and decreased by 2 when a socket was removed. -Add newline to initial version command so people telneting in for -old socket compatibilty get something a little more presentable. -command char pointer added to newsocket structure - used for player -name or listener html address. Fix in memory overrun/corruption when -freeing the last allocated socket - it would write data beyond the allocated -data. - -if new_draw_info is called to notify everyone, also notify sockets -running in old mode if it isn't a kill log listener. - -Update commands.h file so that it won't declare various values if included -multiple times - only the first time it is included will it declare the -values. - -Add extern declaration for init_sockets to global.h since other functions -now need to access them. - -Who command extended to also show active socket connections without a player -attached. - -Kill log (watchable from socket) added. - -Add support to use old socket commands on the new port. - -Fix by Seikoh Nishita for weapons that slay multiple creatures - before -fix, they would not slay anything (args to strstr were reversed) - -Don't give out exp for orating to monsters owned by another player - fixes -abuse since 2 players could quickly orate back and forth and gets lots of -exp. The orate function was also cleaned up a bit to be more efficient -(presumption is made that there is only 1 monster on any one space, so once -we find one, there is no need to do further processing) - -If door is passable, print a message to the player if he tries to -pick the lock and don't let them pick it (examples here are the -doors which you can walk through) - -Fix by Seikoh Nishita that should prevent some crashes when exiting -shops - appears that there could be circumstances when i was trying -to referance a null pointer in an error message. - -Add popen_local for sgi systems - without this, sgi can only open one -compressed map before it fails to open further compressed maps. - -Fix by Timo Kokkonen so that resurrection works with the new player -save method. This should also fix the problem that dead players when -using PERMADEATH being able to log in after dying. - -Allow FORCE objects to increase digestion/hp/sp/grace regeneration. - -Remove style.h file, since we now have an automatically generated proto file -from random directory source. Also fix in makefine to use proper ar -when creating the archive. - -Add 'race *' to maps/styles/misc/fountains - this fixes a crash when -entering random maps. - -If use presses an incorrect key at the play again prompt, reprint the -play again question. - -Change find_free_spot to return -1 if no spot available, update calls so -check for this return value instead of 0 (value = means current spot -available) - -Change pet movement so that pets should no longer jump walls. - -Update configure, makefiles, and code to use proper locations of installed -files (no longer $prefix/lib, instead $prefix/share for read only, -and $prefix/var for read/write. - -When using a special key to open the door, print a message informing the -player what key was used to open the door. - -Minor map cleanups/changes. Some improper exits changed to point the -right place, extraneous style maps removed due to new gods, other maps -updated to replace now missing altars with their replacements. - -Change gate code logic so instead of using speed to determine if the object -can move itself, we instead check the ALIVE flag (this fixes problems for -animated objects, and is a more accurate method in any case.) - -Fix by S.Nishita so that containers on the ground get properly unapplied -when player moves off them. - -Fix by S.Yoshioka's so that damage for cone spells is calculated properly -as they propogate. - -Remove server side referances to INFOLINES and INFOCHARS, since that is now -controlled by the client. - -Code cleanup to random map generator to prevent compiler warnings. -Also, change comparision of val == 0x1 to val-1 = null, since the -later is more portable. - -added some missing newlines to log messages in the newsocket.c file. - -fix pickup modes some - mode 4 appeared to work ok (pickup all), but mode -5 wasn't working right (pickup all and stop). I have tested the modes -with the X11 client, and they all appear to work properly. - -House of Healing map (with link from starting city) added by Peter Mardahl. - -Change player move code so you will no longer swap spaces with a pet -monster/other friendly object is you are braced. - -Fix off by one error in the buffering socket buffering code - this would -cause buffer overflows if the data being added equaled exactly the buffer -size+1. Similar fix when reading in packets - -Increase NROFATTACKS to 24 in define.h so the AT_INTERNAL attacktype -work properly. - -Patch by S.Yoshioka so that godpower/holyword spells are not magical. - -Fix in attack.c by S.Yoshioka to call free_object instead of free for -splitting monsters. - -Fix by S.Yoshioka so that magic bullet or other pure magic spells do -damage to other parts of multisquare monsters. - -Fix by S.Yoshioka so that you can not get exp in other skills with cone -spells. - -Fix by Seikoh Nishita so that magic walsl can not be placed on top of -other walls/monsters. - -Fix by Seikoh Nishita so that we don't clear the NO_STEAL flag on -insert_ob_in_map - this makes singing/stealting from the same monster -multiple times impossible. - -Patch by Seikoh Nishita so that boulders will roll off gates. - -Have server send updated weight of container when dropping all items from -a container. - -New random map decore styles for new religions added. - -Patches from James Cameron to fix compile errors/warnings. - -Fix missing animations for some of the gods. - -Remove *.orig files from maps/picks directory. - -Maps updated wtih dtabb 2.60, navar_city 2.40 maps from John Cater. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.95.1 to 0.95.2: - -speed_left values should not be changed when loading/saving maps with the -editor. - -Map updates from Anthony Tyson and others (990128 version) - -Note: I was unable to reproduce the staff to snake killing the client bug. -If still in this client/server release, please let me know. - -Set player->count in esrv_move_item when picking up objects. This fixes -a bug introduced in 0.95.1 for the improved pickup code which only allowed -picking up of all the objects on the ground. - -lifesaving items should now disappear from client inventory after they -are used. - -Improve decrease_ob_nr so that items dropped on the ground will get removed -from the players inventory if they are used up (fixes bug where you drop -the last of some item on an altar but it would not disappear from your -inventory) - -Add check to add_exp so that we don't add experience to non living creatures. -This should fix the thrown objects getting lots of speed bug. - -Random map code by Peter Mardahl added. Various changes made so it will -compile on non gcc systems as well as non bsd systems. - -Another fix for pits (holes) so objects should drop through. The fix -in the last release made fixed a possible infinite loop, but also made -it that once an object on the pit could not drop through, no other objects -on the pit would drop through. The change made will attempt to drop all -objects through the pit, but also not run into a problem with infinite loops. - -Update pedestal and detector code to also match on the lockcode of the -special keys. - -Change detector function to call push_button instead of update_button. -The later would only change the state of buttons, which doesn't do much -good when you want to open a gate. push_button will cause gates and -other connected objects to open. - -Change move_gate so that it won't roll off things like grass or other -immovable objects. - -Update configure script to check for scandir function (needed by disease -code) - if not found, then check in -lucb. - -Disease code from Peter Mardahl added. - -add break value in while loop in generate artifact message (readable.c) so -we eventually break out if no match is found. - -reduce minimum supported map size in crossedit to 1x1 - -Don't let characters be easily saved on unholy ground. Player can't issue -'save' command when on unholy ground, and we don't autosave if on unholy -ground. - -Improve pickup code mode 6 (pickup magic item) - call is_magical to -determine if an item is magical instead of relying on known_magical flag. - -If the player has a marked item in need of identifying, identify that -specific item first when an apply altar is used. This allows a player -to selective choose what to identify. - -Fix in apply code between server and client. Containers on the ground -now work properly. Server side simplified a bit, and updated to be a bit -more bandwidth efficient (use update item to open/close containers.) Client -updated to handle updating its container status via the update commands. - -Fix in pay_for_item in that it will not mistake kobans or other coins for -gold coins when making change (or converting the older coins into new -coins with the same arch but with a different value) - -Have player swap places with pet monster even if player no longer has peacful -set. - -At confirmation when player quits, inform them that quitting will delete -the chararacter. - -When a weapon is improved by the god, if it had no prior attactkype set, -give it physical attacktype in addition to what the god gives it. - -By default, make new players peaceful. - -Fix up the fire cancellation function - it seems some of the code wasn't -quite right (inserting in map vs setting the owner.) The fix should -prevent some core dumps this could have caused. - -Fix for main loop in socket.c that should prevent infinite loops when -a socket dies in some improper way. It should now drop the connection -properly and continue with processing. - -Autoconf fixes - check for canonical system, specail check for -alpha-dec-osf to add -std1 to cflags, add check for latex, add check -for BOURNE_SHELL (this is used in hte makefiles, as some os's will use -the users shell, but some constructs we use require bourne type shell), -add check for number of args gettimeofday uses, change order when -we create the makefiles to be proper. - -Use autoconf check above to get correct number of args for gettimeofday. - -Fix from Anthony Thyssen for the editor - should hopefully fix problem with -delete not deleting the correct object. - -Remove font displaymode from editor - since we are not distributing any -fonts anymore, doesn't make a lot of sense to support it. - -When connection is lost from player, save off the character - prevents -items being dropped on the floor or the players duplicating the items. -However, some additional logic will need to be added to prevent players -from saving their characters in treasure rooms. - -Improvements in save_player which should better prevent saves from -happening at inopportune times (like after they have mostly exited). - -Add stat_loss_on_death option (yes/no if stat is subtracted when you die.) -Default can be set in config.h, and can also be changed with run -time flags. - -Add / behind -I@x_includes@ in crossedit/Makefile.in. This should prevent -the includes from being reset if there are no x_includes. - -Extend draw_look to send multiple item commands - this should only happen -if there are a lot of items on one square. Fix should prevent crashes/memory -corruption in that case. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.95.0 to 0.95.1: - -Fix server crash if player ran into friendly object. - -Strip extra spaces that may be between the command and option (ie, -"use_skill disarm" would result in " disarm" getting passed to the appropriate -command function. Some functions could deal with this, others did not, -and it makes sense to strip them out. - -Send update to client to remove item from players inventory when it -disintegrates (demon ichors for example). - -Change load code so that player handling on unique maps should work better -(I believe there were various strange cases if the player saved on a -per player unique map and that map was or was not in memory, it might not -load the per player unique map) - -Removed player file lockin during login. Extra lock files get left -laying around in aborted login attempts. And in retrospect, I don't -think it is ever really needed. - -Some excessive/annoying debugging messages removed. - -Some general cleanup in some functions that were previous setting -automatic variables. If the variables are none changing, we now declare -them static, otherwise we don't set the value as the initialization -area - this prevents warnings with some compilers. Some casts added for -some functions to also prevent warning messages. - -Remove HAVE_SAVE_UID in config.h - no longer any code using it. - -In free_player, only call remove_ob on pl->ob if it is not already removed. -This fixes crashes when a player kills there login session before -it is completed. - -Instead of calling draw_look (which causes all data on that space being -sent to the client) each time the space changes, instead mark that we -need to send that change, and have code higher up (top processing loop) -send the data each tick if it needs to be send. This should result in less -data being sent, and is easier to process. - -Add flag_client_sent for debugging purposes - makes it much easier to -trace down cases where server was sending updates without actually having -sent the object yet. Most all of those cases are fixed with the new draw_look -logic mentioned above. Add dump_object_from_tag to figure help figure out -the objects generating messages. dumptag command is available from within -the game if compiled with DEBUG to use this fucntion. - -Pup land maps updated to version 1.3. - -Fixes in configure script to autodetect X11 libraries better. Fixes -also in Makefiles so all rules should work and all needed variables should -now be expanded. Add checks for a few more header files. Makefile fixes -also include changes so that archive is packed in proper order that it should -not try to rebuild pregenerated files. Master makefile now set to -make bzip2 archives in addition to gzip archives. - -Added watchdog code from Christian Stieber - periodically sends out UDP -packets so other programs can watch for them and restart the server if it -doesn't see them (hung or down server). - -Added ISQRT macro to spell_effect.c - seemed that the code was changed -a while back but that function wasn't added. It was only needed of -SPELL_FAILURE_EFFECTS is compiled in as an option. - -Simplify checking of MAXNAMELEN in crossedite/include/Posix.h - -Updated list of options you get when you do -help - removed old options that -are no longer around and added new ones. - -Dropping an active container will now result in all the items in the -container being dropped, and not the container itself. It could be argued -this should be a client issue (client send a move for each item in the -container). However, dropping everything in the container should be faster -than individually dropping (ie, you turn the container upside down), and -client dropping them one by one would result in that many commands of the -player being used. - -Change esrv_move_object to use the pick_up function instead of pick_up_object. -The difference here is that pick_up will look for matching containers, so -players manually picking stuff up in the client will have items go into -active containers as appropriate. However, this can also cause problems -with smarter clients that really want the object to go into the players -inventory and not a container (I don't think any will have that problem -currently) - -Fix in apply for holes - return 0 if we can not move the monster through -the hole - this prevents an infinite loop in move_hole in time.c - -Added internal buffering for sockets if the OS's buffers fills up. This -greatly improves reliability in the client. Size of buffering is -setable in config.h - -Fixed makefile dependancies - make install should now depend on the -actual programs it plans to install. - -Fix some bugs in the animation code - most notable is animations with -just 2 facings like the quetcoutal. Changes to archetypes is to -change the half orc to have 4 facings the quetzalcatl to have 2 facings. - -Fixed animations to always use the direction value for determing object -animations. - -Change examine code so that if the first thing in an object message field -is @match, don't display the message. - -Fix map update code that wasn't calling update_los before sending the -map to the client. - -Fix from Timo Kokkonen for socket code - check to see if we got an -interrupted system call (EINTR) on a read/write - if so, loop until it -clears or we get a real error. Apparantly greatly improved reliability -of the server. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.94.3 to 0.95.0: - -Added diagnostic message if you try to use a skill and it can't find a match - -Fix in send item command to better handle objects with a huge number of -items in its inventory. - -Shop listing code simplified - send all data to the client at once instead of -havign to store it and wait for the player to hit a keypress. - -Fix bug in ghosthit which would cause server to crash (patch for 0.94.3 -was released for this bug) - -Some general code cleanup - fixing/removing unreachable statements, removing -unused variable. - -Build/configuration now done by autoconf (run ./configure). This cleans up -a lot of special checks throughout the program, and hopefully should be -more portable. - -Cleaned up/rearranaged the include/.h files. Prior, most all structures -where included in structs.h. Structures and support values now in unique -header files (ie, player structure and support enums and like in player.h, -object structure and support in object.h, etc.). This doesn't change the -working on the code, but is just easier to maintain. global.h takes care -of including these is the correct order. - -Many options now removed from config.h file. Options removed either relate -to X11 code/old server support or machine specific details which we can -now pick up via autoconf. - -Better speed checking in update_object_speed. - -When improving a weapon, client should now get updated (code was updating -the incorrect object) - -Improve apply below to be more bug free (that is to say, we preserve -the pointer to the next object - I think there were cases where the -last of an object was applied, and thus removed, but the apply function -did not return a code specifying something was applied, so the code would -then try to apply an object with an invalid pointer) - -Fix for collect.pl script to fix problem traversing directories. - -(note for 0.95.0, there were many large scale changes, so many of the -entries below are more of just an overview of what changed, and not a highly -detailed account of the changes.) - -Fix/improvement in player movers so that players trying to run in the -direction they move don't move incredibly fast. They will still seem to -move faster (I am guessing roughly player speed + mover speed now). I am -not sure of the original bug, but my guess is that the mover moves the -player to the next mover (which has a low speed). But now the player still -has his own action left, and moves to the next mover which has high speed, -so wisks the player to the next mover, which has low speed, so he -effectively moves 3 spaces in one tick when he should just move one. - -Changed save player method so that a directory is created for each -player. - -Added per player unique maps (new apartments). Maps from Christian -Stieber, however the implementation is a bit different - if an exit is -marked as unique, it will lead to a unique maps. The unique maps are -stored in the new player save file directories as above. - -Removed all X11 support from the server code. Change crossedit so that -it can read in the pixmaps as they are stored in for the client/server -support (so that only 1 copy needs to be kept). This method of reading them -in is slower than the montage method unfortunately. - -Changed socket handling. Port 13326 has been removed from active service. -Socket information is now part of player structure, which cleans up a lot -of the old code which had to do with find the player that correlates to -a socket and vice versa. - -Fix bug so that if invaliad variable is given to dm 'patch' command, program -no longer crashes. - -Fix bug so that containers that have a huge number of items don't crash -the server (a container needed to have more than 250 items for this to -happen). The real problem is containers that allow an infinite amount of -junk to be stored in them (Lepreds bag, but this item/map isn't part of the -standard distribution). Even with the fix, there still becomes some point -where problems will occur (around 2000 items, the amount of data that -needs to be sent would exceed the size of the output buffer). In any -case, with that many items in place, the player will see a noticable -performance hit when such containers are opened. - -Fix bug that caused the program to crash when attacking ghost or other -creatures with ONE_HIT flag set. - -Print out message to player if they have old keybindings. - -Some map fixes by Christian Stieber - eliminate ability to bypass -quest and typo fixed in other map. - -Fix so that perceive spell (off of rods/staves/scrolls) properly finds -the god of the player. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.94.2 to 0.94.3: - -Fixes to some recipes - before some had non existant ingredients. -As part of this, a treasurelist for ogres added. - -archsearch.pl function added to lib/adm. Useful little perl script that -can do object context searches (ie, immune to X and attacktype of Y) - -Old loader code removed - only lex loader supported now (no bugs reported, -so it seems to be OK) - -Debugging output improved in various areas to be easier to read/better -inform what is happening. - -Hopeful fix in place to prevent player movers causing players to have --infinite in speed_left. Fix right now is to just limit speed_left -to -50 - I believe the real problem is that some player moves have -speed=0.0, and it is diving by that value. - -Fix so that if a player dimension doors onto a player mover, he no longer -gets stuck in an endless loop - he will now move along the movers as -expected. - -When a player dies in NOT_PERMADEATH mode, clear the braced flag. - -In the case of spell failure, don't cast mana storm in no magic areas -(instead, just kill the player) - -Only write out an updated bookarchive if data has actually changed and needs -to be written out. - -Don't print out new client server usage logging if nothing has changed. - -Reduced power of 'loose mana' (it appears this only happens when a spell -is failed really badly). It seemed to me that the area of affect and -damage could be many times deadlier than anything else out there. - -Hopeful bug fix for thrown objects getting very fast speed (I am unable -to reliably reproduce this, so am not sure.) Basically, I believe the -problem was that set_owner was only being set for the wrapper in the -thrown object, but it is the actual internal object that gets used at -some point in the attack sequence. As such, I believe that the knife, -spear, whatever was getting the exp for the kill (exp = speed in -weapons). To hopefully fix this, I have also added a set_owner call -on the real object so when it goes to grant exp, it should find a -valid place for it and credit the player and not the weapon. - -Changed spell parsing so 'of' is not needed in some complex -spells (ie, create food or marking rune). From kfitzner@nexus.v-wave.com - -Fixed bug in which you could kill multispace monsters with paralyze or -slow attacktypes. - -Added ncom and comc commands to client and server. These commands allow -client command queing/dropping (note that server will only send a comc if it -gets a ncom first, so old clients should still work just fine). The -protocol numbers increased to 1021. - -Added more objects to the show invisible list - hopefully the pupland -maps should now be fully playable. - -RPLAY_SOUND definitions changed to RPLAY_SND - should make for cleaner -compilations for those using that. - -Fixed #ifdef for NetBSD in common/time.c to use proper symbol. - -Fix so that counterspell should no longer kill monsters with magic -attacktype (ie, jessys and probably others) - -Added debugging in deathstrike code to hopefully be able to better track -down face of death problems. My guess is that it is a problem with level -comparisons. - -Fixed/clarified many nexted if/else statements that were ambiguous. Now -braces are properly in place (From Klaus Elsbernd) - -Hopeful bug for disappear objects when emptying bags. I believe the -problem was that invisible objects ended up showing up in the containers -somehow - this by itself is not a problem. However, the empty bag -function calls drop with the object to drop and keeps the next value - -however, drop would forward past the invisible object so the calling functions -next value is no longer accurate. Drop function now does not skip over -invisible objects in containers (will skip over them in player inventory) - -it instead removes the invisible object since I believe it is garbage -anyways. I am not sure if this will fix the problem, but there was -certainly some problem in the code here. - -Fixed bug with multipart monsters & pits. Before, they got split into -a few parts like a magician trick. Now they stay in one piece. At -current time, the logic probably isn't great, as all that is currently checked -for is the head of monster being on a pit - in reality, probably all the -monster parts need to be on a pit. - --m9 and -mt options added (Code from Raphakl Quinet). Formulas have -been fixed such that all are now creatable (none missing archetypes). However, -the output still shows some formulas out of balance in terms of costs. - -Changed AT_GHOSTHIT meaning and added ONE_HIT flag. GHOSTHIT is now treated -like any other attacktype (monster will not be removed just for having -ghosthit). ONE_HIT flag now means the monster will disappear. This fixes -the acid sphere deadliness (before, they did have ghosthit as an -attacktype). All the objects with ghosthit have been updated. However, -there are probably some other undead which could now have ghosthit added -to their attacktypes since it won't cause them to disappear now. - -Updated the programming_guide doc. Hopefully, it is a bit easier to read -and a little more accurate. - -Improved polymorph. Invisible objects should no longer appear. Also improved -so that all objects of a type would be possible results (before, it would -be the first 80 weapons would be chosen from, or the first 80 monsters, etc.) -Now it is unlimited. Smarter initial selection should also result in -a few less meltdowns from it now being able to find an acceptable object. -Also, possible fix that could cause crashes on rare occasion (monster -polymorphed into something else, and when inserted into the map, something -on that space kills it) Also, we stop processing a space once we hit the -floor - I don't recall floor types ever changing anyways, but there could -be other problems processing subfloor items. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.94.1 to 0.94.2: - -Changed calls to send_query on server side to include the string on what -the query is for. This is to make clients be able to do smarter/nicer -things when it receives a query. - -Bug fix in check_walk_on which would cause crashes when objects are put on -spaces with multiple destructive forces (ie, earthwall cast on top of -a double pool of chaos). Once check_walk_on finds that the item has -been freed, it stops doing any further processing on it. - -Animation code cleaned up. Animations are now object properties, and not -archetype properties (and thus can be changed in maps). Also cleaned up so -that the is_turning flag is removed - more complex animations available via -the num_facings. Below is the section from the TODO file. Note that there -is still potential to improve animations (many 1 frame animations could take -advantage of the new code to have multi frame (ie, players can now have -images for all directions, and animations for each of those) New code is in -common/anim.c: - Clean up animation code and make it more general purpose (instead of - is_animated and is_turning flags, instead add a value that - states how many animations/direction there are. For example, right - now the big dragon has 8 animations and 2 facings (left & right), with - 4 animations/facing. Something like num_facings could be added so we - know there is 2 facings. For arrows, num_facings would be 8, so we - know that it shouldn't be animated (since there are only 8 images in its - animation.) This would make the code a little cleaner, and allow better/ - more complex animations (an object that faces 8 directions could have - animations for all directions, were as right now, that is not possible.) - -collect.pl changed to handle generation of animation file. - -Wipe below added to crossedit by Steven Unruh - -removed non NEW_HIT_PLAYER in attack.c (ie, old attack code removed) - -Added hitback code (looks like it was missing from the NEW_HIT_PLAYER -code) - -dm commands will now be accepted from the new client (provided they -have dm priveledges of course) - -Add AT_INTERNAL attacktype used only for internal calculations (ie, -does that amount of damage). Actual damage section of poison now -uses this. - -Fix spoiler generation - don't convert monster archetype names to -lowercase - images generated properly for them now. Also, fixed problem -with some images (dragon) being rotated when they shouldn't. - -Clear INV_LOCKED flag when stealing objects. - -Fixed couple of bugs in throw code. First, players remaining speed -calculation seemed incorrect. Second, you can now specify an object -name to throw (ie, throw ring, throw chair). Third, the client now -gets properly updated with the new/changed item. - -Make UNIQUE_ITEMS standard feature. Removed LOCK_ITEMS as a secondary -feature - running multiple servers against the same set of files is no -longer supported. Note for compatibility reasons of both methods, it will -look for unique files starting at v00 and will write new ones with the .v00 -extensions. If you have .v01 files, these will be read in the first time -through (provided you also don't have a .v00), but all new files will be -written with the .v00 extension. Referances to ITEMS_DIR changed to -be UNIQUE_DIR - I think that is more descriptive. This includes -the environmental variable. - -Change ok_to_put_more to do more complete checking and also not to stop -spells because of a monster with certain immunities being on a space. - -If hit_player is called with the 'tail' of a monster, it would previously -just exit if the attacktype included slow or paralyze functions (must -hit the head with those.) Changed hit_player so we just remove -the slow and paralyze, and still hit with any remaining attacktypes. - -change explode_object so it only hits the monster once with the bullet/ -meteor. Previously, it called hit_map, which then hit the player, and -then called hit_player again. This effectively doubled the amount of damage -caused by the bullet - it now does the correct amount of damage. As -best as I can tell, meteor/meteor swarm does properly damage the monster -even if the tail was hit. - -Bug fix in singing so exp should now be granted the first time singing -is used on a monster. - -Changed so that server can be compiled with new client/server support but -without old (port 13326) support. Various sections of code updated to -work/compile in such a setting. - -Fixed premature freeing of map->tmpanme. Now in delete_map instead. - -Added checking in free_object to see if we are called on a non removed -object. IF many cores is defined, will dump core here. I believe there -is some section of code calling free_object on a monster without calling -remove_object, which is causing a lot of error/warning messages when it -happens (very infrequently.) With this test in, it should become quite easy -to track down when it happens. - -Added free bsd & net bsd to those systems whose gettimeofday takes 2 -arguments (common/time.c) -lcompat added to libraries needed for -FreeBsd. Include unistd.h on freebsd. Don't include malloc.h in -xbmtobdf.c on freebsd. - -Sample ban_file added to lib. Read in of ban_file will now -ignore lines that start with #. Also, animations file (used for new -animation code) included. - -Config file rearranged to hopefully be in better sections and easier -to edit. NEW_IMPROVE_WEAPON and SIMPLE_PARTY_SYSTEMS removed from options - -now always selected. NO_LOG, ONE_PLAYER_PR_UID, CHRFONT removed from -sections - these can never be valid. NO_ADD added to prevent players -from adding others - -Server updated to send full lines of text with query commands to client -so for clients that pop up a dialog box, they can print meaningful data -on what the request is for. - -Bug fix so that you can no longer apply multiple objects of the same -type with apply -a - -Give better messages when attempting to light something. - -New client/server statistic gathering added - will periodically dump -usage stats to the log file. Server will now longer crash if -client/supposed client sends bad data - will now just close the connection -instead. - -Server will not longer crash when player runs into a door. - -Can now longer polymorph objects into items that are invisible. - -Removed client directory from main archive. Too many people thought that -was the new client creating confusion, and I don't see a big need to have -it around (it will go away when the X11 code is yanked from the -server anyways0. If you still like it, the old version of it will work just -fine (no changes have been made to it in a very long time0 - -Map changes: - color_ removed from map files. - library card cost decreased some. - oldcity maps updated to take full advantage of XPM mode.. - Lake_Country/DA map changed - exp reduced, sp increased. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.94.0 to 0.94.1: - -in artifacts file - moved some settings of difficulty before Object line. -(difficulty after the Object line have no effect) - -In low level socket code, retry read/write again if we get a EWOULDBLOCK -in addition to EAGAIN errors. Some systems return EAGAIN, others EWOULDBLOCK - -Fixed possible crash in move_monsters. I believe the problem was that -the monster got killed by a door, and the function was not expecting -it, and would use the invalid object. Not sure if the code I put in will -really fix the problem, or just migrate it to a higher level calling -function (have not seen the crash myself) - -If on linux, include crypt.h in main.c - -Various minor memory leaks fixed. - -Better error message for non wiz people trying to use shutdown command. -Shutdown command actually added to command structures and is now usuable. - -Internal animations changed from explicit defines to use SET_ANIMATION -macro. Much easier to read, and better supports client side animations. - -Include sounds.h/sound calls no matter what RPLAY is set to. Only -rplay special code is in sounds.h. This way, client can still get sound -information without rplay being defined. - -removed NPC_PROG code - not used at all - only thing there was a few -#ifdefs setting values. - -Moved typedefs for function pointer stuff from structs.h to funcpoint.h. -No outside affect on code, just makes more sense internally. - -Disable default selection of DEBUG_DMALLOC on crosssite.def - -Removed old/unused charisma bonus values from common/living.c - -Minor fix so that a space is properly added between item number and name. - -Added a lex loading routine. Performance seems to be roughly the same, -but ease of maintenace/readability seems better to me. Modifications to -loader.c should not be done - instead, they should be done to loader.l -Loader directive flags and loader return flags added to loader.l - those -are now used instead of arbitrary integer values. - -Fix c_wix.c dm goto command to set the destination object/map name. Otherwise, -if an invalid map was entered, the enter_exit would try to print a null -string - some systems handle this OK, others will crash. - -Changed common/time.c to use GETTIMEOFDAY macro defined once at top -of file instead of having #ifdefs throughout the file. - -Fix so that items of differing values will not be merged. Also, when -merging objects, do not clear startequip flag. - -Fix in doc/playbook-html so all include directives are handled properly -with the include_html.pl script. - -More details printed about improved weapons (how many improvements done, -max number of improvements.) Also, skills will show how many improvements -the character can handle. - -Bargaining skill will be auto applied when in shops. - -Change teleporter code so the teleporter does not have to be the first -or second item on the space - teleporter can be any object on the space. - --a, -u apply options added (always apply/unapply instead of toggling). -Internally, apply and apply_special have been changed to take one more option -which is this flag. - -Applied rings will not be merged - instead they will remain seperate. Fixes -problems with getting full bonuses, and also makes it easier to apply/unapply -one item. - -Increased frequency of generation for strange ring (nodrain ring). This -should make it appear probably roughly as often as the ring of life, -or maybe even more often. - -Put maximum carry limit in - beyond the limit, a character can carry no more. -This limit is fairly high right now, but should improve playbalance and -prevent characters from getting a negative weight or carrying so much -stuff it takes forever to move (session appears hung to them) - -Added CS_STAT_WEIGHT_LIM to newclient.h, so client can know how much -the player can handle (only used for GUI, so it can do a carry/limit -type of thing) - -Title information now used in hiscore displays. - -Show invisible spell will now make handles visible. - -New server code won't crash if player does nothing when it prompts for the -name. Also, include necessary dummy functions so server will compile -of ERIC_SERVER is not set. - -Will now search keyrings when running into special doors for matching -keys (players can protect keys by putting them in other containers.) - -Change jump skill so that any spaces with FLY_ON set will affect -the jumping player. This prevents the character from jumping over -player movers. - -In create_wall - if insertion if the initial wall fails (new all is destroyed), -don't extend the wall. Fixes the earthwall on top of pool of chaos which -creates strange map problems. - -Map fixes: - Lake_Country/ebony/masterlev altar should now accept fragment - of chaos. - Put no magic areas in apartment so it should no longer be able - to dimension door and get keys. - /city/houses/wizz.entry should now be entered at the correct position. - /city/misc/library - library cards are now identified, so it should - no longer be able to buy then sell at a profit. - /city/houses/wizz* maps: removed ./ from start of some map paths - - causes apparant problems. - Lake_Country/Butakis/blacksmith - can no longer get free dragon mails - or other items - have to pay for them now. - Remove pup_land/rainbow/Lv4/\nkey (\n was an embedded newline). Map - doesn't look to be needed. - -Archetype changes: - -Added blocksview to gwall so you can no longer see through them. - -Fixed up castle animation in bitmap mode (212/312 images needed to be swapped) - -Increased exp for skulls from 3500 to 5000, reduced exp of deathtrees from -1400 to 1000. - -fixed typo in gauntlets which meant title was set right. - -aggressive 1 values changed to unagressive 0 values in some archetypes -(no such value as agressive) - ------------------------------------------------------------------------------- -Changes from Crossfire 0.93.7 to 0.94.0: - -Added outline of future versions in the TODO file. - -a mana storm should now hit with godpower attacktype. - -The spell create_food will now create food with 0 monetary value, and -be marked as starting equipment, so can not be dropped. - -Player titles with spaces should now load properly. - -Updated command times for use skill, ready skill, and stay commands so -when client executes them, proper amount of time is subtracted. - -drop_object now preserves the freeze inv/look window, which prevents -slowdowns when picking up a lot of objects/dropped. - -Added yield to water of diamond, fixed typo for dust of frost recipe. -If a recipe doesn't have a yield, recipe should still be properly -generated. - -Hiscore savefile now stores maxgrace and seperates player title from -player name. - -Option added to only swap out maps when MAX_OBJECTS is exceeded -(MAX_OBJECTS_LWM) - -Changed internal definition from SOUND_EFFECTS to RPLAY_SOUND to properly -reflect what it actually enables (sounds for the client are always -enabled) - -No longer put a 'a' for single objects. - -Changed ring generation so rings of power can be generated. - -Change can_merge so that more objects are mergable, add nrof 1 to some -objects. - -Improved set_owner which can fix getting into endless loops. - -Change insert_ob_in_map_simple so it doesn't call check_walk_on. fixes -player being slowed way down when dropping objects on slow move space. - -Animations moved out of archetype and into seperate array. This is necessary -for the client as it makes a unique referance number for each animations. -Also, in future, this would make it easier to be able to change aminations -in objects/maps. - -Print out level gain messages in red so they are more noticable. - -Change can_pick so that invisible objects can not be picked up. - -Change singing so you can calm a monster multiple times - you only get -exp once however. - -Change show invisible so it only makes monsters and players visible, and not -things like magic mouths and ears. - -Patch so that if peaceful is set, you will not attack other players even -if they have attacked you. - -Auto apply woodsman/mountaineering benefit when in the appropriate terrain. - -Fix get command so it takes from a container if appropriate. - -shutdown and kick wizard commands added. - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Client/Server changes for 0.94.0 - -Updated protocol version to 1010 - -Server debugging statements in ericserver can be enabled/disabled by -define at top. - -Client can lock/unlock items on the server. - -Client can now look at spaces now. - -Send update of item to client when it is identified. - -Send update command to client from decrease_ob_nr to update players -overall weight. - -Now send animation information to the client. - -Now send sound information to the client, client can send setsound -to server to enable/disable sounds. - -Client side image caching fully supported. - -Added updates when picking up objects/dropping objects so that players -weight and container weight is updated if necessary. Also, if object merges, -make sure we then send a delete of the original object that is now gone -to the client. - -Update object changed to send floor animations to the client. - -Send update when power crystal changes speed. - -Send update of player object after player is loaded. - -Change server so that only send map update and player stats once a tick - -should be more efficient and equally sufficient. - -Added LOCKED flag to item transmission command so client can no which items -are locked. - -Added item1 command which superceded item command - sends more informatin. - -Added update command to protocol, and function in server - only sends -portions of an object that need to be updated. - -Server now properly handles repeat fire on. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.93.6 to 0.93.7: - -set_god wiz command added. - -Changed call to 'index' to 'strchr' in commands.c - keeps with what -the rest of the program does. - -Pupland archetypes and maps added (v1.2 of pupland distribution). - -Changed get_random_mon to be more random when a monster of a specific level -is requested. - -Casting transferrance spell on another playing and having their head explode -will no longet get the recipient of the spell exp - instead, the caster -of the spell will get the exp for any kills. - -change put_a_monster function so it properly handles multi-square monsters -(put_a_monster is called by summon_evil_monsters, at probably others) - -Changed alchemy so you no longer get exp for failed/random mixtures - -If a container on the ground that the player is using (ie opened) is -somehow removed, update the players view to now be the ground and not -the container. - -Player titles will now be loaded properly from save files. - -Can no longer sing and make the same monster unagressive multiple times. -The implementation is actually borrowing the NO_STEAL flag, which means -you can't steal after you sing, and after a failed steal, you can't sing -and calm it down. Also, make sure that only the 'head' of a monster is -sung to. - -Fixed up CSword_116 xpm file (too many chars on one line) - -Added note/option in config.h for systems lacking O_NDELAY. - -Fixed up some of the quests in Lake Country - can no longer just run and -get the dragonbane or buy the armor with a lot of scales. - -New Client/Server changes: - - changed esrv_send_face to take the client_num instead of client_id - (should be slightly more efficient). This does not affect the protocol - in any way - it just makes the handling on the serverside more efficient. - - Changed item command to calculate objects total weight before sending - it to the client (total weight = weight+carrying). This is needed because - there are many times that the client does not know what is in the container - and thus can not properly calculate the weight. - - Change server so it sends updates for the parent - items that the object is being moved from/to (ie, when removing something - from a sack, send an update for the sacks weight). For the client - to properly handle the player being re-updated, some special handling - had to be added so the inventory list would be updated and so that - we don't try and add another player object (client search routine for - tags didn't look at the player) - - Fixed server so it now properly updates the original item from which a - portion of it is being dropped. - - Fixed bug in server handling which kept the -1 return code from a - blocked socket and decreased amount to send by that - reset to zero - so amount to be sent remains the same. - - askface and mapredraw commands added to Protocol by Phil. - - Changed load player function so it calls fix_player before sending - initial data to client. - - Removed some printf/debug statements from pickup code for newcs in - player.c ------------------------------------------------------------------------------- - -Changes from Crossfire 0.93.5 to 0.93.6: - -If we fail to save a map, all objects on that map should now be properly -deleted from memory. - -Fix possible crash when score is being generated if player is on -swapped out map. - -Default output buffer for new clients is now 64k. - -Partial code in place for client side image caching. - -Alchemy changes from Peter & Brian. Main change is that multiple recipes -can be made at once. - -Bad grammer in messages printed out when readable object is beyond players -comprehension. - -ethreality recipe commented out in formulae file. - -Some playbalance issues on maps fixed by Samuli Tursas. - -Internal handling of shop menus changed - instead of a list of objects, -change it to an array of strings. - -Minor changes in porting.c to hopefully make that file compile properly on -more systems. - -doc/experience updated with some more notes from Brian. - -CAN_MERGE changed from a macro in define.h to an inline function in -object.c (only file it is used.). It makes it a bit clearer, and hopefully -a little safer. There is an option at the top of config.h for handling -of the INLINE function declaration. - -Possible fix so that altars should not be re-concecrated if god is -set in the editor. - -Undead monsters can now see in the dark. - -Fixed bug in parse_command which would cause crashes if a socket connection -entered a string with a ; in it. - -Increased string size in new_draw_info which prevents crashes/stack -corruption when really ling strings from a socket is entered. - -Changed spell level/costs between invisibility and improved invis such so that -the improved version is now a higher level and more sp. - -Now possible to steal from a creature more than once as long as character -remains unseen. Each steal attempt will become harder in any case. - -Remove some special player checking in get_nearest_player - I think it -caused some crashes, and wasn't necessary (in fact, clever players could use -it to get it such that monsters would not target them.) - -When characters stop levitating, call check_walk_on so they will fall -through pits or other applicable effects. - -Fixed up some archetypes which could be picked up when that should be -set (trapdoor, bullet, meteor). The last 2 cases can not be picked up, -but clever casting of alchemy could have nuetralized them. collect.pl will -now print warning if an object has walk_on set but does not have no_pick set. - -Added new map from Bjoern Helfesrieder to starting town (Yarin's House) - -Fix in item matching code that could cause core dumps. - -Fixed clearinfo command so that it still works even if player is using -scroll mode (only if player issues the clearinfo command - other uses -of clearinfo in function won't clear in scroll mode.) - -Improved shop listings so they are sorted by type, then sorted by name. - -Fixed bug in backspacing the to the front of the first line of an -extended command - it now works properly and puts you back in normal -command mode (this got broken in the addition of extended line input.) - -Player should still be able to save if they were the wizard. However, -wizard status will be stripped for save, but the fact they were a wizard -will not be stripped. - -Imp made even wimpier by Peter M. - -If you set of traps, open doors, push a player, or roll a boulder, -you now become visible. - -Change it so that when something/someone reads a scroll, only inform -the other people on the map (perhaps this is still overkill?) - ------------------------------------------------------------------------------- -Changes from Crossfire 0.93.4 to 0.93.5: - -Replaced handbook make_index script with perl version. Much faster, and -also fixes problem with echo command doing different things on different -systems. - -Minor change in crossedit such that if it is not compiled with XPM -support, it will give an error message if run with the -xpm option. - -Changed code so that experience objects no longer change stats (reverses -'fix' made in 0.92.9) Fixes problem of characters getting extra -stat points from the experience objcts. - -Fix bug that could cause infinite recursion loop in spellpath_msg. From -cameron@ripper.stl.dec.com (James Cameron) - -Fix bug in complex keybindings in which all the commands in the keybinding -were executed that tick. Thus, if you bound a key to north;north;north;north -and pressed that key, you would move 4 spaces north no matter what your speed -was. It now works properly, and you move at proper speed (keybinding is -copied into buffer in player structure, and removed as we go along.) Note: -This buffer could also be used to hold keypresses not yet processed, but -that hasn't been done yet. - -Added ability to enter lines longer than the info window is wide. This -allows for longer keybindings or say commands. It isn't the most -sophisitcated thing (the extra lines show up with a 1> and 2>, etc for the -extra lines, and we just redraw the previous line if you backspace that -far. After you complete the command, it does end up redrawing the entire -command, which can take a few lines, which gives some confirmation on what -you typed in. This feature was added to both the standard server code -and the new client. - -Change use of tempnam to tempnam_local which we supply. Standard tempnam -will look at the TMPDIR environmental variable, and use that to override any -other value for the directory - this causes problems if different people -runn the program and using the temporary maps accross runs. tempnam_local -will not look at the TMPDIR variable, and will instead always use the value -we pass it. This can be changed if we were not compiled in SECURE mode by -changing the CROSSFIRE_TMPDIR environmental variable. Code was also changed -so the CROSSFIRE_TMPDIR variable will not be used if compiled in SECURE mode. - -Fix so that you can no longer move really fast or fire really fast by using -the mouse buttons in the game window. Using the mouse buttons in the game -window should now result in the same speed as using the keyboard. - -Patches from Peter Mardahl: - - Dusts now cast as ability and not spells. This mean that they will not - have magic as part of the attacktype. - - Spells that are cast on oneself now ignore direction. Thus, healing and - protection potions can not be cast on something next to the player using - the object. - - Detector object added. Similar to inventory checkers, but only - periodically samples what is in the space, and doesn't look at the - inventory, only objects actually on the map. - - Creators can now cause objects they create to inherit names. They can - also periodically create items. - - Arch diffs: imps weakened, cold dragon spews forth cold, creator modified - to have default speed 0. - - New FireTemple set of maps. These have been onto the Volcano in the - southeast area of the continent. The maps that were there were moved to - world_e2, under the crater. - - Gradual light/darkness code put in place. I fixed a few of the bugs - that were in peters orignal version, so it works flawlessly for both - server and new client. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.93.3 to 0.93.4: - -Inventory checkers can now act as doors. If no_pass is set in an -inventory checker, player can not move onto that space unless they meet -the match requirements. - -Signs that are usuable only a fixed number of times added. - -Fix for pedestals & buttons so they are only activated once when a player -moves onto a space (previously, they were being activated twice.) - -Fix for connected objects so that they will not be sacrificed on altars. -This fixes a case where you might want to put a check_inv and altar with -the same sacrifice on the same space. Before, the inventory checker would -be sacrificed on the altar, causing the linked button list for -inventory checker to be corrupt. - -Many maps updated to look better in xpm mode or just better in general. - -Change in crossedit so that if you set the randomitems variable for an object, -it only sets the value at the head of the object, and not all parts of the -object (it would be nice to allow non head parts to have this set, but I am -not sure how to get what part was clicked on in the editor, since it seems the -head is passed to the function.). - -xpmtopix.pl script added. Eventually, I hope this will replace the -C version. For now, all it is good for is to verify that the XPM images -are using the proper colors. Numerous XPM images were not using the proper -colors (a lot were using brown, which is not an official color - see -the xpm template for what is.) - -Cleanup of proto directive to turn __signed into signed. Also, change -#if __STDC__ to #ifdef __STDC__ in proto files. - -Fix so it should now compile if SECURE is defined. - -Ability to more easily added needed libraries in crosssite.def - -Extra_Libraries option added. - -Assume Linux has a prototype for tempnam (at least my version does.) - -Many objects added, and many XPM images updated/improved. - -Change in new CS code - don't send the version string until after we fully -set up the structure. - -Change so crossfire will compile if SAVE_HOMEDIR is set. - -Reverse actions of -m8 and -m9 (Believe they were doing the wrong thing -relative to the scripts and what the docs say.) - -Change in hiding code and detection by monsters. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.93.2 to 0.93.3: - -Added a fill below function in crossedit. This make filling in backgrounds -for maps much easier. Basically, it just puts whatever object you select as -the bottom object of the bounding box. If the bottom object on the map -matches the object being inserted, the object is not inserted. As a side -effect of some code in GetMapObjectZ, if it matches the top object, it won't -be inserted either. This makes things much easier to update map backgrounds -for XPM mode. - -Hiding made easier for players. - -Stealing is made easier for players, but harder beyond the first item. - -Many image colored and perspective corrected David Sundqvist. Also, several -new objects added (specialized altars, some more indoor furniture/more -orientations, some sliding secret doors, and new wall types.) Barn image -naming conventioned changed to follow what is considered proper. - -A few maps added by David (two temples in starting village, along with -a mercenary recruitment building.) Also, some maps fixed to look better -in XPM made. - -Party kill option added by Rauli Ruohonen. IT lets you see who has killed -what recently in your party. - -Saving throw for objects cleaned up. Previously, an objects immunities/ -protections were not being used correctly to determine if it made its saving -throw (that is why icecubes could be destroyed by ice). It is now set up -properly. - -Gods will no longer improve weapons that have been enchanted by other gods -(Or I believe by yourself.) - -Fix memory overrun (1 entry) when initializing values for the images. - -Program will not recover properly when it attempts to load a temporary -map. This means that load_temporary_map returns the map object to use, -since it might change. - -When setting the owner of a monster, clear its ability to use skills - -Fix in decrease_ob_nr so it should now work on 64 bit systems. - -Mapguide updated with various suggestions made on the mailing list. - -Linux systems assumed to have at least random available (change in the config.h -file.) - -'t' is now bound by default to 'ready_skill throw' - -missing demon types (imp, big_demon, Greater_Demon) added to the list -of demon races. - -xpmtopix will print a warning if it detects and XPM file using a tab character -in the color name - makes it easier to track possible image corruption. - -Check for power of improved weapons now in its own function. Also, we -now properly check weapon power when improving one (before, you could -improve it one level more than you could actually use.) - -When a container is applied, make sure it is a player applying it before -checking for new client/server information - otherwise an invalid pointer -is dereference. - -Complex keybindings added - thus, you can bind several commands seperated -with semicolons to one key. - -Fix in encounter.c so if compiled with RANDOM_ENCOUNTERS, the new -settings structure is used for map location. - -Added check fot out_of_map in various places that needed them - prevents -some more core dumps. - -skill identifications will now look on objects on ground in addition to -those in the inventory. - -perceive self should now tell you what god you worship. - -map reset times on maps (temporary maps accross multiple runs) will not be -altered if there is no map reset time. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.93.1 to 0.93.2: - -New argument parsing routine - we now parse arguments in phases. With this, -I have moved many of the global settings into a settings structure, and -allowed highscores to be displayed by class/name. The man page and -h -option have also been updated. Also, all the files that could -previously be specified via environmental variables can now be specified -with command line options. - -The temporary directory can now be specified via -tmpdir command line option or -CROSSFIRE_TMPDIR environmental variable. - -If you cast word of recall and then save before it takes effect, it will -no longer corrupt the character (and will in fact take effect when you -restart). - -Don't let players throw starting equipment. At the same time, don't mark -throwable items as starting equipment - instead, just give it zero -value. - -Fixed inscription - now properly writes scroll when passed no string instead -of crashing. - -Artifact monsters now possible (monsters whose abilities are changed based -on the artifacts file.) Top of the artifacts file has more information on -this. For now, I have only set up the orc, ogre, and goblin to get -special leaders. - -Temp maps can be reused across multiple runs. See config.h for more -notes. - -Bug fix in inscription: If you inscribed a scroll and already had -one like it in your inventory, the game would crash after they -merged. Also, if you failed in inscribe a scroll, the game would -also crash (object it was using to calculate experience had never been -initialized). For now, I just changed it to return -10*spell level -as the exp award. - -Items will now be merged with other items even if one has been inventory -locked. This way, if you have some torches that are locked and you pick up -some more, they will merge in instead of showing up seperately. - -Bug fix for saving throw on objects hit by cold. There could be cases -where an object being processed is no longer on the map and would cause -a crash. - -Change find_first_free_space to return -1 if there are no free spaces. -Calling function should check this and then do the 'right thing'. This -fixes problems with runes creating monsters on top of monsters (or -below the player). - -Magic map cleanup. Now have magicmap field in NewFace structure. This -field holds the color to use for magic map in low 4 bits, and various -flags in high 4 (right now, only floor bit is used, since drawing may -differ on bw systems with that value.) magicmap filed is now supported -in .arc and faces file. collect.pl modified to automaticaly put -magicmap into the faces file, will also copy is_floor into faces file. -magicmap takes a color name. This seperation allows magic map colors -to be set independant of foreground and background colors, and simplifies -the code a good deal. Also, it makes new client magic map support easier. -Now all the archetypes need to be updated (I have already done the armour, -connect and construct directories.) - -Magic map for client now implemented. Definition of protocol added to -Protocol file. Only limitation implementation has over direct server is -it only flashes the position of the player who cast the spell. This -seems perfectly reasonable to me (use color or other attribute to know -where other players are.) - -Old client (telnet front end) changed so that it no longer requires -libcross.a. - -save object should do a better job if it gets an object without an -archetype. - -buffer size for LOG increased - there were cases where this buffer -was not large enough and was causing crashes (sending large amounts of -garbage data to the socket was one way.) - -Load map will now reload the original map if the temporary map is for some -reason no longer around. - -Fix bug where randomitems may not have been properly initialized for now -objects (was inside an #ifdef for CASTING_TIME) - -strerror_local added to porting.c. Lets up give up more reasonable -error descriptions for certain errors. - -If an object is cursed, set its vulnerable values to its protected and -immune fields, adn clear those fields. Fixes 'problems' with finding -cursed rings which are not really cursed (pro fire/vuln cold rings.) - -If trying to switch to private colormap in XPM mode, check to see if -we are successful. - -Fix crossedit so that if you have a map loaded and you then try to load -an invalid file, it no longer crashes (now reverts back to old file) - -Archetype changes: Golden unicorn horn now has its own set of images. -Editable field updated for the gods archetypes (they were showing up in all -the menus.) living_chaos object added (need for Brian Thomas's maps.) - -Update the editor/picks map so that all archetypes are included in at least -one of the maps. Modified the map_info script to print out unused -archetype. - -New server: Only increase buffer size of socket if it would increase -overall size. - -fix in skill experience calculation to use magic field properly. - -Alchemy spell changed. If there is a cauldron in area of effect, only -do cauldron alchemy. Otherwise, do item to gold nugget conversion. - -Added a few more notes/thoughts to the mapguide/ - ------------------------------------------------------------------------------- -Changes from Crossfire 0.93.0 to 0.93.1: - -change race initialization functions to to fix cases where race is specified -in race file but no race is specified in the arch it points to - before it -would not be added to the proper race list. - -include handbook.ps in the standard distribution. - -Client server rewritten to no longer use eutl package. Other bugfixes for -client server: server now properly sends delete item command to client, -client now properly adds up a containers (and hence players) weight, pixmaps -are now supported. - -Snowball spells added - these are the same idea as the fireball spells. (by -peterm) - -Magic wall will consume several squares now. - -spells array (in spellist.h) updated - was missing a spell (cure blindness). - -splitter.pl (by peterm) added to arch/dev directory - takes a larger xpm -file and splits it into 24x24 chunks. - -icestorm and small snowball added to possible list of starting spells. - -Only set minimum speed of 0.01 for players. This fixes the bug introduced -in 0.93.0 where multisquare monsters moved too slow. - -Only print out a creature lost a spell if it is in fact a player. Only -applies for casting time. - -fix_me command added - basically just calls the fixme function. Can be -useful if you that your characters weight is for some reason incorrect. - -Fixed sprintf that was copying over static character data if you tried to -form a party that already matched a name. Also, fixed a possible buffer -overrun situation. - -More memory leaks fixed by Rupert Goldie - also fix to prevent orated monsters -from attack themselves. - -New xpm images for woods and some buildings by David Sundqvist. The new -buildings have a bit more texture and 3-d look, the new woods look a little -bit more in scale and mesh together better. The old images are in the -xpm_pref directory if you prefer those. - -More code added to free memory when server shuts down (useful for -trying to track down some memory leaks). - ------------------------------------------------------------------------------- -Changes from Crossfire 0.92.9 to 0.93.0: - -Minor map changes: Some maps cleaned up to look better in XPM mode. -Removed no magic areas from around the demilichs in lord ramsdre mansion. - -map_expand perl script added (located in lib/adm) - -Cleaned up use of externs and declarations of many structures. Depending -on the linker, these would not be merged into one value, and thus not be -initialized/set properly (fixes 'mark pushed you bug'). This was a problem -at least on SGI systems, probably others. - -If on a sun and not using sun's acc, assuming Stupid Sun Headers, even -if on a Solaris system. - -Changed change_abil so it returns true if a value actually changed (useful -for printint out information when apply objects like potions.) A lot of -return checking of this function in apply.c is removed - that checking -now seems obsolete. - -Set visibility to zero at first stage initialization. - -Put a lower limit of 0.01 for player speed. This still gives an action -every 12 seconds if you pick up way too much junk. - -When praying at altars, have gods grant out spells only if it is a spell -they are attuned to. - -Cleaned up some memory leaks, courtesy of Rupert G. Goldie. - -Cleaned up the cast command code. Also, if you do something like 'cast p', it -will now show all spells you know that start with p, instead of casting the -first one it finds. - -Shift middle button in the inventory window should now mark an item. - -Fix button handling for look and message window so that only if it is clicked -with the right 30 pixels do we consider it a scrollbar event (before, anything -more than 270 from the left was considered scrollbar - works fine for -default sizes, but if you resize, it would cause problems. - -If on SGI systems, don't default to using rand - it should now pick up -lrand48 or random instead. - -Change spell casting such that if you aren't high enough level, it more -obviously states it (previously it said you 'lack the skill', which can lead -to confusion.) - -Fix so that the first recipe is now accessible when performing alchemies. - -Added many thoughts/ideas to the TODO list. - -Increase buffer size for examine command - some object could overflow the old -buffer. - -remove no_magic from all monsters - immunity values should be used instead. -am not sure - -Made changes for strcasecmp detect - was checking as defined(sun), now is -defined(__sun__) - this is proper and what the rest of the code uses. - -define MAXNAMLEN in crossedit/Posix.h - needed for ultrix systems. - -Made it so that boots are not always considered magical (since there are -now many plain boots out there.) Also, removed the always_magical function - -is_magical should now handle it all. - -Allow items of type BOOK to be identified, since you can now find non -identified readable items. - -Change loot_object so it doesn't remove experience objects - this way skills -don't get removed when a player dies. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.92.8 to 0.92.9: - -Make sure all skills are unapplied when changing the class. - -When generating a spell listing (cast with no options), display the -level of the spell (or den if it is denied.) Also, display mage spells -in one batch, priest spels in another group - I think this is more -relevant now since these are seperate exp objects and draw on different -power sources. Still no pause key (doing those is a real pain) - that -is really a client issue or we should just add a scrollbar to the text -window. - -Removed level 20 from artifact 'sword of Beserkgang' - was preventing -characters from using it. - -Put cause many wounds spell in PATH_WOUNDING. Book chance for holy word -increased. - -Let experience objects change stats. - -Many debugging messages added or updated to print out more useful/ -detailed information. - -Changed usage and set_protocol function names in client/client.c. This -prevents name collision with libcross. - -Web site locations added to the README file. - -Load and save window positions even if split windows is not set. This way, -window posititions are lost if you run the game in non split mode (and I -don't see any reason to discard these values.) Also, -split can -be used in addition to -w to get split mode. - -Changed check inventory objects to recursively search through containers, -and cleaned up the code. Also, added notes on crossfire.doc on using it, -and made basic archetype to use. When using inventory checkers in -crossedit, have the attributes by default come up with connected and -lockcode fields. - -Made change to unique items: If the object is a floor and has unique items -set, then all objects above and including the floor get saved as unique -objects. Also, when merging maps and freeing old unique items, make sure we -remove them from the button links. Made an apartment map which characters can -buy permanent apartments and also store equipment in. When exiting the -program, save off all maps so the unique items get written out. - -Xpm fixes: Moved floor setting from map loader to update_object. This -makes it so that crossedit will display the map properly in XPM mode as -you make updates. Also, made default visiblity 0 - this makes the double -floor work properly. There still seems to be some bug when pasting objects -in the editor with respect to updates. - -Change made to goths taverns and tavern in lake country. Change is so -that some of the wimpier informants don't have really good stuff to take. - -Periodically write out the book archive during play, and not just when the -program exits. - -Bug fix so 'drop x items' should no longer crash. Also, 'drop 1 item' -should now only drop 1 item of 'item', and not all of 'item'. - -Bug fix so 'unlock item' should now work OK. - -When throwing objects, clear the APPLIED flag before the throw. - -Prayer granting from praying at altars changed around - you will get more -unusual prayers, and a Wisdom of 25 is not a yes/no cutoff - value of -sucess depends on wisdom. - -Archetype changes: remove no_magic flag from demon lord - I don't think -this should be set in any monster - instead, immune should be set properly. -Added damned flag to gates that are no magic (probably not necessary, -but I think it makes sense.) Added check_inv object. Removed some -duplicate skill types (same skill, different arch names.) - -Have get_pointed_target return the head of the monster if it is a multi -part monster. - -Change smite and finger of death spell so they have no effect if creature -reflects spells. - -Fix to prevent bug crashes with magic rune spell. - -Fix in spring_trap to correctly target the victim. Also, -fix in find_traps which prevented the gaining of experience. - -If character has bonus grace, display it with percieve self. Also, load -and store the last_grace value properly. - -Changes from Brians hide/attack patch: Adjustments for attacking based -on varying factors, monsters wake up & call for help if it, can't remain -hidden if you attack, changes for monster detection of hidden/dark/invisible -players, players no longer remain invisible if attacking, adjustment in -exp for stealing, stealing and hiding chances changed based on terrain -and other modifiers, when generating flesh items, set no_steal, give -chinese dragons some treasure, giants a little more gold. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.92.7 to 0.92.8: - -races file changed, a bit more flexible. - -Additional dump flag (-m8) to dump god information. - -If attacktype is holyword, creature must be in slaying field of holyword. - -Better handling for items that remove/add protections,immunities, -vulnerabilities. Only print changes if there is an actual change. - -holy power, blinding attacktypes added. - -Add poison to list of items that might not be identified. - -Two when windows are killed: 1) data is freed properly without causing -crash now. 2) If player has saved but window is still active, will -no longer make a save of the player. This save would be a no-item save -that the character had been playing. - -Bug fix to prevent crashes if clicking a button in the message window -and show_Buttons not enabled. Also, moved button handling in message -window into its own function. - -Bug fix for pet monsters that should prevent cores if cycling through many -maps very quickly. - -appendix for god information added to handbook (both latex and html versions.) - -gods2 patch applied from Brian Thomas. The main thrust of the patch is -to make gods objects/archetype, and not array entries in the source code. A -lot of code needed to be changed to support this difference. - -God patches so that game doesn't crash if no gods are set. - -Hopeful change for FreeBSD so it automatically pulls in the crypt -library. - -Can no longer cast spells which are beyond your skill level. - -More powerful spell failures added. - -Can no longer read scrolls/other readable if blind. - -Fix bug that if a weapon had slaying, it slayed all monsters, not just -the ones it was supposed to. - -Don't add the bows attacktype in when figuring out the attacktype of this -player. This pretty much always gave the character a physical attacktype -in addition to everything else. - -Fix 'peaceful' when using buttons so it doesn't crash the game. - -path_to_player changed to work better on diagonals. - -Spell choosing by monsters a bit more intelligent. - -No longer get experience for disarming/finding your own traps or those -of other players. - -Add NO_STEAL flag, with obvious meaning. If a monster notices you stealing -stuff, all his items are set to this, so nothing more can be stolen. Flag -is automatically cleared when items are dropped. - -Add run and fire messages to message (stat bar) window. - -Make USE_BUTTONS playable setable item instead of compile time item. - -Don't insert heavy (>5 kg) missile objects into player when they hit - have -them drop to the ground instead. - --- -Made more general object matching routines. item_matched_string sees if -an object matches a string (which can be comma seperated list of many -things.) find_best_object_match finds the best match in the players -inventory. - -item_matched_string gets used for for matching multiple items. It is -used in drop, get, take, lock/unlock - -find_best_object_match is used for apply, examine, mark, search-items. - -Also changed code so that certain actions are in sync with what display -mode is set (mostly drop.) --- - -If levitating, you can now remove items from containers in your inventory -(after all, they are levitation with you.) - -Clear is_changing flag if object is being thrown. - -Changes made to inscription code to work better. - -Changes mode to experience awarding for player skills. - -Fixes made to Peter Mardahl's dragonquest maps. - -Big Wizard, Belzebub, and Demon lord xpm versions colored. - -Minor bug fix to container in Thomas map. - -Some new archetypes/images for peterm/dragonquest maps. - -Make food creation spell more dynamic - food names/values no longer hard -coded in. - -Additional demons added by Peter Mardahl - -Bug fix to prevent crashes with improve armor/weapon scrolls. - -Bug fix to prevent crossedit from crashing when exiting with edit windows -open. - -Fix to prevent monsters from throwing certain good objects. - -Make sure praying over an altar only gets cleric spells. - -Increase saving throw array to correspond with max level. - -Monster hp/sp regeneration method changed some - more accurately tunable -for low regeneration values. ------------------------------------------------------------------------------- -Changes from Crossfire 0.92.6 to 0.92.7: - -Monsters now tend to be more agressive about firing spells. Several -changes - now monsters will fire along diagonals. For multisquare monsters, -we check to see if any part of the monster has a good shot at the player, -not just the head. This changes tend to make it more likely that a monster -will cast a spell and hit other monsters (makes a pack of wyverns more -dangerous, as many will cast spells at you.) I am not sure if this is a bad -thing - all it means is that you can't mix fire using creatures with -monsters that will be damaged by fire. - -Let archetypes in the races file have spaces (for Arch Angel) - -Throwing code added - players and monsters can now throw objects. Some -new throwable archetypes added. You need to add throwing_skill to any -old players - you can run the utils/add_throw.perl to do this - -crossedit: If a object have editable of 0, make it so it doesn't appear in -any of the menus. - -Max yield added to recipes. - -Better checks for insert_ob_in_ob to make sure we really have a player -before calling some of the update functions. - -Weight limit for custom containers is now saved. - -If we load an object and find it has no archetype, just drop the object. -This shouldn't happen, but can prevent core dumps for maps with missing -objects or players from a different version. - -Add 5 static buffers to query_name - it is now safe to call it a few times -in a sprintf or the like without losing the old value. - -Added 'statistics' command. Shows useful information about the -character (none that can't be found in the docs.) Also changed -'skills' to show how much exp you need in each category for the next -level. - -change_abil changed so that it only prints out what values/attributes -have changed. Ie, if you remove a ring that gives protection from -fire, but have other fire resistance, it won't say you are more vulnerable -to file (since you are not.) - -Charisma bonus/mechanism changed (again.) Values in living.c are more -easily/directly translated into what it means for buy/sell cost. Curve -also balanced out some more. Query_cost changed so the value -mechanism is a bit different (unfortunately, we need to multiply the value -of objects by 4 to keep them roughly the same price as before.) - -Added 'mark' command. You use this to mark objects that are used for -other objects (ie, torches with flint & steel, weapon with improvement -scroll, etc.) This removes the necessity that the item you want to apply -be the first thing in your inventory (in fact, that is no longer supported.) -This should also make things easier for the client. - -Bug fix that prevents crashes on spaces which have a teleporter and sacrifice -altar on the same space (/Lake_Country/DA). - -Some minor changes to lighting code, some maps also updated to -use lighting code. - -Added halfling and half orc character to the game (From Brian Thomas) - -Changed valuation for FLESH items. Before it was value*level of creature. -Now it is value*sqrt(level*2). For low level, this keeps roughly the same -value, but for high levels, it keeps things more reasonable (drops the -value of zombie corpses to about half previous value) - -Bug fix for monsters that have attacktype of ghosthit along with -others (main fix ghasts, for Lake County, REtower/tower3, but -this could happen for any monster.) - -Fix for attacks doing no damage against monsters they should. - -Bug fixes to readable code - should no longer core dump (At times) when -books are created, should also be more robust and fix some other bugs. Also, -give more detailed messages on how many levels beyond your comprehension -a book is. - -randomitems now stored in object, not archetype. This means that treasure -types can be changed in the map - a new archetype doesn't need to be added. -However, the treasure to set must still be in the treasures file (or you -can use none so treasure is not generated.) - -Removed color_fg and color_bg variables from game - these have long been -obsoleted, but code to handle them has never been completely removed. - -Changed code so that best wc possible is +/-120 - should now prevent -overflows. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.92.5 to 0.92.6: - -If player deletes window and we can't save, delete player objects instead of -dumping them on the map. - -Make NEW_PROCESS_EVENTS standard - remove old proces code and ifdefs. - -Remove temporary object from cast_spell - pass along both spellcasting -and owner objects. Seems to fix some bugs and increase reliability (also -is a better way to deal with it.) - -Change made so that converters are also knowledge about 'money' psuedotype. - -change spellcasting altars so they also push the button. Fixes altars -on some old maps. - -Some minor tweaks made to the artifact file - mostly clarification of names -or setting values correctly. - -spellcasting skill renamed to wizardry. - -Fix made so that 'old' potions (strength, int, etc) use correct price. - -If you examine food/flesh items, you now get detailed information (food -value, protections, etc.) - -Code by brian thomas so that book titles will remain constant across -different program runs. - -Bug fix for crashes caused by multisquare monsters stepping on -deadly objects. Basically, fully insert the object, then start doing the -check_walkon's one at a time to see if the creature dies. - -Brian Thomas' valley of the sisters quest added. Additional archetypes -and treasures added to handle this. - -'sort_inventory' option added (player setable.) IF set, when items are -picked up, they will be inserted by type, then alphabetical. Very handy -for scrolls and rings. - -Some fixes made to the kundi maps. - -Flesh/alchemy fixes by Brian Thomas. Flesh type now inherit properties -from parent creature (weight, and possibly protections/vulnerabilities are -added). - -Change made for alchemy - you can't toss a bunch of junk in a cauldron and -get a good item out unless you sucessfully use alchemy. - -handbook added to the doc directory (tex/postscript.) And html version is -also there, along with an html version to the spoiler. Tex version of -spoiler also fixed so it is generated properly with new Latex. - - ------------------------------------------------------------------------------- -Changes from Crossfire 0.92.4 to 0.92.5: - -Som bug fixes made dealing with cursed improvement potions. - -Always let players learn spells if they are in their starting spellbook. - -New attack methodology put in palce. To put in simply, if there is -only 1 attacktype, things remain the same. If there are multiple attacktypes, -we cycle through them one by one, and take the one that does the best -damage and use it. Some attacktypes no longer do damage - they are effects -(ie, paralyzation, slow.) In the case of of these, the effect will always -be applied if appropriate. Code looks to behave pretty much the same, -but is easier to follow. IF new code is buggy, or you don't want it, -there is a define at the top of attack.c you can change. - -If god blesses you, lets actually remove the depletion object from the -player inventory. - -Other god related fixes put in place - look to also deal with blessed -weapons. - -Additional dump flag added. - -fix bugs with USE_BUTTONS and the peaceful button. - -Only allow write_rune to use objects of type RUNE - -Bugfix in get_pointed_target if it can't find a target - prevents endless -loop - -NRSPELLPATHS set to correct value. - -Remove null terminator from gods array - not needed anymore. - -Fix savethrow array size to match maxlevel properly (was 1 short) - -remove damnation and remove curse now cleric spells. - -Fix some header code to better work on solaris 2.5 - -Support for compilation with the dmalloc (debug malloc) package. - -Allow altars and related items to match objects based on type. Use hp -field of altar object as the type to match. - -Library patch by Brian Thomas. - -Various skill fixes by Brian Thomas. - -Alchemy patch by Brian Thomas. Here is a copy of his README: -+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - The amount of work I put into this was substantial; other than - new code -- I created new archetypes, revised archetypes, altered the - treasures file and created 2 new object types and a flag. - - It therefore may be enjoyable to install this patch (incl code) - and *not* define ALCHEMY in define.h. In particular, this patch - does the following things: - - 1) more varieties of potions are available in shops. - - 2) new gems and types of food. - - 3) monsters will now leave behind body parts when you kill them. - - 4) if ALCHEMY is defined players may make potions/artifacts. - - I have included instructions for installation in INSTALL.PATCH, - and a brief document for using the code (Alchemy.doc). - - Finally, as always, feedback is appreciated. - - b.t. - thomas@astro.psu.edu -+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - ------------------------------------------------------------------------------- -Changes from Crossfire 0.92.3 to 0.92.4: - -Various bug fixes to readable code. - -Let altars be able to cast spells. sp field determine what spell to cast. - -Fix obscure bug that an arrow can be 'killed' if a monster that has hitback -moves onto it while it is moving. Thus would then cause problems because -apply would try to remove the object after it had been killed. - -Give quetzalcoatl melee attack skill. - -Give experience for clawing attacks. - -Include literacy skill with fighter skill - this should now give all starting -classes literacy skill. I think it improves play balance. - -Don't mark a players starting money as being start equipment - otherwise -they can't drop it on identify altars and it can get merged with money -gained at a later date, yet still be marked as starting equipment. - -Bug fix in keybindings so that we check return of XKeysymToString to make -sure we don't use a null value. Some keyboards have keys with no names, -and on some systems, passing a null pointer as a string causes it to crash. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.92.2 to 0.92.3: - -Removed ability to use unpaid objects for sacrifices. - -Changed weapon improvement code to be based on skill levels (if skills -are used.) - -Code in place to generate hit points by average of fighter and overall -level - to enable this, change the #if 0 to #if 1 at around line 1040 -in common/living.c - -Books hack by Brian Thomas. This mainly means that when emptry books are -created (or are otherwise on the map), that they will be filled with some type -of information. Some (like monster/spells/gods/artifacts) are generated via -the program itself. Information from a messages file that is stored in lib -can also be found. Experience can be gained by reading this information. - -Read/write patch by Brian Thomas. This mainly encompasses the fact that -players can now write messages in books, that you must be literate enough (as -determined by literacy skill level) to read various books/scrolls. Scrolls -are now not identified, but literacy can be used to identify them. Players -can still read signs even if they are not literated (needed for game balance/ -information) - ------------------------------------------------------------------------------- -Changes from Crossfire 0.92.1 to 0.92.2: - -Give artifact Gram weapon attacktype physical|confusion. Before, it was only -confusion which would never actually damage anything. - -If a player dies in a shop, remove any unpaid items from his inventory and -put them back in the map. Only applies in NOT_PERMADEATH mode. - -Put in better DM security - now checks for name, password, and hostname (any -of those can be wildcarded out) - see the lib/dm_file for some demo. To -supply a password for dm mode, just use dm with the password (ie, "'dm -") - -Lighting code added (with various support objects, spells, etc). No maps -support this yet. - -Don't baptize altars if we are in the editor. Leave altars the way they -are so that they will be baptized the crossfire loads the map instead. - -Allow the title of and object to be set from within crossedit. - -Allow individual players to set the inventory icon, now longer a compile time -option. - -If we get a non critical error and do an emergency save just in case, -then don't remove any information/objects. This probably fixes the -disappearing inventory bug. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.92.0 to 0.92.1: - -Improved altar sacrifice code (actually, any object type that calls -check_altar) - treat a slaying field of 'money' as something special- don't -care what form the money is in (see docs for more details) - -Improve identify table (in conjunction with altar code above) - now takes -any type of money, won't take money if nothing needs to be identified, -will identify as many things as money is dropped for (ie, drop 200 gold, it -will do 10 items) - -In the map attributes in crossedit, you can select an option called -"ShowWeakWalls". If this is selected, weak walls will be shown in a partial -teardown state - makes working with some maps much easier. - -New client updated to support Power and Grace stats. - -Magic system broken into 2 forms of magic - clerical and mage (they are -now seperate). Power stat also added to the game - plays into mage -spellpoint (mana) total. Grace also added - used for cleric spell casting. - -Skill system greatly expanded - different experience types with skills -associated with them (only has meaning if you are using the skill code) - thus -you gain experience for certain categories as you use certain skills - see -doc/skills.doc for more info - -Multiple gods added (via config option in config.h) - basically, different -gods have different enemies, and the effects cleric spells have will depend -on this. Altars are created for different gods. See doc/Multigod.doc for -more information. Along with this, some new spells were added. - - Fix a problem of some objects falling out of sight when they shouldn't. - -Send delete item to client if decrease_ob reduces the items nrof to 0. - -Weight should now be fixed up when transferring stuff to/from containers. - -config option called NO_AUTO_SKILL_SWITCH added - it means range type -doesn't automatically get switched to skill type when using melee weapon. -Main effects is that it makes it easier to switch between melee and range -weapons (pretty much makes it like it was prior to the skill code.) - -Sack code cleaned up - we don't need to split an object to see if it will -actually fit in a container - we can just say how many we want to try to -put in. - -Actually put wimpy command back in (all code was there, just the link to -call the fucntion was missing.) - -Increase max count from 9999 to 99,999. Wasn't that uncommen for high level -characters to have more than 10000 platinum coins. - -When invoking spells, temporarily switch the range type to range_magic - -otherwise, a proper check for spellpoints is not done, and it then becomes -possible to go negative. - -Modified crossloop so that it renames and compresses any core files created -while it is running - very handy for debugging (note that you could easily -modify it to remove the core files instead.) - ------------------------------------------------------------------------------- -Changes from Crossfire 0.91.9 to 0.92.0: - -Make sure the weight a container is carrying can never go below 0. - -Fixed fall below code, so that objects with visibility will not fall below -objects that otherwise blocks view. - -Fixed colormap problems with xpm graphics on black and white displays. - -ALLOW_SKILLS is now the default in the config.h file. - -IS_SUMMON_SPELL macro fixed (= was supposed to be ==) - -Artifact foods added by Brian Thomas. These are foods that can give some -nice benefits (stat improvements, etc), or be much nastier poisons. - -Bug fix made to skill selection that would otherwise cause core dumps. - -Bug fix made to query_cost that would cause core dumps if the alchemy spell -was used. - -Fixed bug in dimension door that would cause core dumps if cast from a -wand. - -find_target_for_friendly_spell fixed to use the get_owner call instead of -referring to op->owner (get_owner should always be used.) Fixed core dumps -that were caused when the owner would be killed, but still have a pet -monster (vampires as an example.) get_owner makes checks to make sure -the owner still exists. - -Only set the windows colormap if on a color display. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.91.8 to 0.91.9: - -Changed some parameter names from spell to spellnum. Some compilers don't -like parameter names that match structure names. - -Alot of skill code added by Brian Thomas. - -Assume that Suns running solaris have strncasecmp. Also, if using -Xpm_Pix, assume the strcasecmp is available (the Xpm library should -provide it.) - -get_player_ob function now uses the CALLOC define, instead of just -calloc. - -When dropping items onto objects that blocks view, they now fall below the -object that blocks the view. - -XPM mode now works with private colormaps. It will also switch to a private -colormap if it runs out of color during the xpm creation (works for -crossedit also). - -Don't let players put starting equipment into containers. - -A bows weapon class (WC) is now used to determined hit probability for -arrows. - -When a player dies (in NOT_PERMADEATH mode), the character is immediately -saved. Thus, if you die there is no advantage to crashing the server, -hoping for a copy of your character from before you died. - -Set the value to 0 for arrows created with the create missile spell. - -When transferrance is cast excessively, don't hit the person receiving the -spell with 9999 points of physical damage (otherwise, spell can be used to -kill many powerful monsters.) - -Made some changes to make it compile properly under Solaris. - -Fixed bug in dropall that would cause an infinite loop if the player had -an open container. - -Exits can now inflict damage on players. - -Fixed middle mouse button missle attack. Now clears the fire_on flag. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.91.7 to 0.91.8: - -Messages about an objects speed no longer printed to the console. - -When players exit maps, no longer inform all the other players. - -install-same and install-font directives added to lib/Imakefile - used -if game is being installed to same font it was unpacked in. - -Client now supports receiving bitmaps - server does not support -sending them, however. - -Max experience achievable is based on max level, not a hard coded -value (although, at present time, max level is hardcoded to 100) - -insert_ob_in_ob now returns an object - needed for client/server code. - -check_inv function added to button.c. Trigger will be altered depending if -the character has a matching item (or lack of a matching item.) - -Option added to config.h to make it so that backup saves will save the player -back at home, instead of the present map. Code adapated from code sent -by John Steven Moerk (jsm@axon.ksc.nasa.gov) - -Minor bug in crossedit fixed that would cause it to exit if both --p and -xpm is specified. Both can now be specified - it will effectively -ignore the -pix portion. - -New skills added, with corresponding code to use these skills (from Brian -Thomas) Use of skill code is selectable in the config.h file. - -Two new spells: summon fog and steambolt (from Brian Thomas) - -Enchant armor code added (from Brian Thomas) - -Fixed bug in crossedit that would cause it to core dump whenever a non exit -was selected and then the enter command run. - -Fixed bug in attack.c that was using info_all if CASTING_TIME was -selected. - -Made it so that decrease_ob_nr will never decrease the object number below -0. This fixes a bug in that remove_ob would calculate a negative weight, -and then call sub_weight with that negative value. This ended up resulting -in weight being added to the player instead of subtracted. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.91.6 to 0.91.7: - -Item saving throw changed around - items are only invulernable to attack -types that they are protectected or immune to. For example, if an item is -protected from magic, and is is by AT_FIRE | AT_MAGIC, it still needs to save -against fire. Before, since it was protected from magic and the attack type -includes magic, it would not have been affected in any way. - -insert_ob_in_map_simple function added. This is used in functions that what -to examine all the objects on a space, yet insert new objects as it goes -(polymorph). This function will not merge objects, so traversing the stack -will work fine. Should fix removing removed object bugs that used to happen -for polymorph (function should be used in other functions that do a similar -thing) - -Damage field in objects is now 16 bits (signed). Needed because some -high level spells would do more damage than could be stored in signed -8 bits. - -The 'old' client program no longer compares versions - there is no reason -to, since the client doesn't do anything that requires an exact version -match. - -Better handling of the Eutl library added - selection is now done -in crosssite.def. - -Large lake faces expanded - now set up like walls, where auto join works. -walls pick file expanded to include this image series and some other walls -that were not previously set. - -Pacify spell added - code from Brian Thomas - -Show invisible and X-ray spell added (code by Peter Mardahl) - -Face data is static - that is to say the the color for any face can not be -changed. In order to do a face with a different color, a new face needs to -be created (or perhaps linked to the old). This change was made because for -client/server communication, having a known color for each image greatly -simplify things (also, on monochrome or XPM displays, color information -didn't have any effect). Related changes: - - 1) color information is no longer stored in the archetypes file, - but continues to be stored in the individual .arc files. collect.pl - has been modified to store this information in a faces file. - - 2) visibility variable added. This is a face value, and it is meant - to take the place of the DOUBLE_FLOOR_PATCH. System will work like - this if DOUBLE_FLOOR_PATCH is enabled: the floor and the object - with the highest visibility + the top object will be drawn. - - 3) color can not be changed in maps - in fact, since color is now - stored in a different file, the color handling for objects has been - removed. Note - when loading a map with crossedit, this information - is silently ignored. Thus, when then saving the map, the color - information will be lost. The maps should be updated with new faces - if this color information is imporant. The lib/adm/map_info perl - program now will print out warning messages for maps that are using - color changes. Also, the code in loader.c can easily be changed to - print out when it loads a color change (disabled because it is too - verbose for most uses) - -PLAYER_COLORS config option and code support removed - with new static face -information above, this can not be supported in any real way. - -Shop buildings no longer have is_floor set. This was a hack for the -DOUBLE_FLOOR_PATCH for XPM mode. However, enabling it can make it so -objects disappear beneath the shops (due to the way maps save.) Having -objects not disappear is much more important (IMHO) than having things look -just a little bit nicer for XPM mode. Archetypes exist for it, but are in -the dev/unused/0.91/7/mood_floor directory, since no maps presently use them - -Mood floors added (code by thomas@nomad.astro.psu.edu). When activated, -these floors can change the mode/flags of monsters (make them aggressive, -make them unagressive, make them fall asleep, or charm them) - -New output mode in place - this uses a much smarter buffering method - it -keeps track of several messages, and how often they are flushed is setable -with the output-sync and output-flush commands (a help file does exist). -All the various draw/write functions have been cleaned up, so that there now -exists only 1 front end function (new_draw_info), which takes flags, -priority, object, and the actual string. The flags are defined in -newclient.h, as NDI_* (in this file because client should use the color -flags sometime in the future, and it makes sense to keep all the flags in -one place). Priority corresponds to the listen level that the player has -set - the lower priority, the more likely it will be printed. - -Certain runes/traps now work properly (things like create bomb and magic -draining would not work if the player is not on the same square as the rune) - -When a player kills a window, the players objects will be destroyed -and not placed on the map. - -Scrolls, rods, wands, and staves will always be at least level 1. - -Beefed up demilich's. Previously, for the experience they were worth, -it was much to easy to kill them. Main difference is that now their -speed is 0.25 compared to 0.06 - -Fixed minor bugs with player movers - if the object to be moved had a -speed greater than 1, it was possible to avoid all affects of the mover. - -Objects that slay are fixed up. Previously, only if the race matched the -slaying type did it work. Now, in addition, f the race of archetype name -matches the slaying, the object will slay. This fixes stakes, and probably -a lot of other items that weren't slaying creatures properly. - -Changed some of the stat bonuses/penalties for all the classes. All the -'normal' races now have a net total of 0 (fireborn, wraith, and quetzalcoatl -are not considered normal races, so their totals are unchanged.) - -Some of the items in the artifacts file have been fixed up - fixed -spelling errors and errors in placement of the difficulty. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.91.5 to 0.91.6: - -When player stops attacking, make sure his speed_left is not larger than his -normal speed. Fixes a bug where you could attack a wall, then try to attack -in another direction, and move quite quickly for a short time, since weapon -speed would be used for that short burst of movement. - -Drain attacks become attack type physical when the character reaches the -mininum experience possible. - -Do not allow equipped weapons to be improved if they would make it too -powerful for the character to use. - -errmsg buffer sized increased to HUGE_BUF. Should fix some bugs that -were causes when this was overflowed in dump_object2. - -SOUND_EFFECTS (if selected) is now defined when compiling all files. -Previously, it was only set when compiling files in the server directory - -this had the effect that the player structure was different between the -server and common area. - -speed+2 items now increase speed properly. Values in the computation were -not being cast to floats, so a speed+2 ended up giving the same amount of -speed as a speed+1 item. - -Restoration changed around. The spell will no longer restore depleted stats -- this can only be done with the potion. The potion is now only generic -restoration - specific stat restoration potions removed. Also, perceive -self will now tell the player what stats are drained and by how much. - -Reduce the amount of experience you get from killing other players to -1/10'th what it used to be. This should also discourage players from -killing other players. - -SAVE_PLAYER removed from configurable options - it is always on. I can't -see why anyone wouldn't want to be able to use this, and if you really -don't want to use it, removing the save directory would pretty much -work. - -Fixed dropall command. It wasn't dropping all items (seemed to -stop at first locked item.) Also, 'dropall armour' now drops -helmets in addition to shields and armor. - -Fixed heroism potion. It was casting the incorrect spell (detect curse). -Now it casts heroism. - -Fixed bug that would cause remove object to try and remove object. When -loading maps, an object in a container in a container would not be inserted -(this mostly happened with an object in a chest in an icecube.) Changed -code in load_objects to a recursive call, which can handle inventories any -number of layers deep. - -Fixed bug in drop_all that would cause core dumps. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.91.4 to 0.91.5 - -Inventory icons are now updated properly. Also, the inv_name and look_name -arrays in the player structure have been redone - these are now arrays of -function pointers and use the shared string libraries to allocated and free -storage. This should take less space than the fixed size arrays that were -previously used. - -When buying equipment, weight is now subtracted properly from the player -for the coins that are used. - -Maps can now have a fixed reset time. This means that the map will reset -after a set amount of time, no matter whether it is accessed or not. Useful -for highly used maps that really need to be reset once in a while. - -Bug fixed in get_ob_diff. The difference array would get overflow, -corrupting other data. Many core dumps were probably caused by this. - -Fixed bug in legal_range routine where legal_range would only check to -first item of type BOW in a players inventory. This caused rotateshoottype -to not list the bow entry if it was not the first bow equipped. - -Cloaks are not always turned into artifacts - normal cloaks can be found now. - -Charisma bonus changed around some more. Penalties are not quite as harsh -for very ugly characters - with the change, a character will never pay -more than 10 times to buy something than to sell that same item. - -Various functions changed around and some new ones added so things will -work properly with the new client (still under developement.) Most notable -changes were to common/xutil.c, with the newclient.c and newsocket.c -files added. - -Unpaid items that are alchemied are now worth nothing. - -TWO_BYTES_FONT is now a standard. I can't see crossfire ever going back to -having less than 256 images. - -free map->tmpname when it is no longer needed (before setting it to NULL). -this pointer is assigned from a tempnam calls, which (on Sunos 4.1.x) uses -malloc to allocate space. Note - if this is not true for you system, let me -know, so I can put code in to handle this. - -destruction spell (from scrolls) fixed. This was actually a problem -in that cast_spell was not setting the owner properly. - -Magic mapping improved for bw systems. This actually makes it work like -it used to, with it doing stippling for object. - -Casting of director spells changed. Placement away from characters and -underneath characters now possible - -New potion type added - Improvement: This will raise level hit point or -spell point gain to the maximum value. It starts at the lowest level (ie, -first hit/spell points gained), and will raise one value to maximum. - -Some patches added (From Manfred Weichel, manfred.weichel@mch.sni.de) which -should make compiles on SVR4 work properly. - -New artifacts (in lib/artifacts file) added. - -Configurable option: cone attacks no longer propogate through monster - it -will only hit the first row. - -Remove curse/damnation changed so that it will not remove curses which -are a higher level than the spell caster. - -Polymorph code changed around. Greater chance of items being destroyed, -value can never be greater than twice the original value, no mininum value. -Also, now the item value and not clone value is used, so things like -scrolls, wands, rods, etc should have the max price work correctly. magic -is not maintained, rather, magic*4 is used as the difficulty for creating -the new item, with max_magic of the new item never being greater than the -magic of the old item. The number of objects remaining after a polymorph -will be less than the original (10 arrows might become 8 bolts, for example.) - -You will no longer attack players in the group you are in by running -into them. - -Titles now restored properly from save files (only makes a different if -SET_TITLE is defined - -When doing a save, check the return value of fclose when writing to tmp file -and the final file. If either of these writes file, use the backup file -instead (previous save file is renamed as a backup file.) Should prevent -problems when there are full filesystems of quotas in effect. The character -will not be saved, but at least an older save file exsists instead of the -character being totally gone (like before.) Patch from Laurent Wacrenier - - -Plural names for items that have a 'of' in them is fixed/added. This mostly -deal with potions (so instead of potion of dexterys, you get potions of -dexterity) Patch from Laurent Wacrenier - -query_cost changed around so that value for very low priced items are now -computed correctly. Before, the nrof of items was multiplied in very late, -and various divisions (for being unidentified) were done previously. For -low value items, this would result in a zero value. Zero values still -result for low priced items if you only have 1 or 2 of them, but if you -have 80 of them, a proper value is now generated. - -Code to control golems (and in fact many summoned creatures) now fixed. -Help file added about golems. This also fixes a core dump that was caused -when a summoned creature was around, and another scroll was used. - -Modified logger in common directory to no longer create a fatal error if you -get too many minor errors in and the editor is what is being used. Before, -occasional errors would be reported by the editor (mostly dealing with not -found archetypes in maps), which would eventually cause a fatal error. This -seemed erratic, because the editor never changes the tick, so loading one -map might result in the fatal error because of the error total from the -previous maps. Also, when using the editor, having missiong archetypes -probably should not be a fatal condition. - -food value can be changed in artifact file. Food is mostly used to have -various meanings in different objects. The artifact file has also been -updated about everything that is changable, and what the values mean (ie, -docs are built into the top of the file as comments) - -Weapons/armor no longer 'disappear' when a class that can not use such an -item tries to equip a group of them. That is, if a class that could not use -armor tried to equip 2 chain mails, one of the chain mails would disappear. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.91.3 to 0.91.4 - -FLAG_NO_FIX_PLAYER is set before saving the player, and cleared after the -player is loaded. Before, a character will full sp and hp could be save, and -when reload, not be at full strength. This is because fix_player was being -called during the load process, before all the characters items had been -loaded and equipped. This, the maxsp and maxhp values were that of the -character with no items. - -Artifacts can now pass the various spell paths to the newly created -artifact. The values are or'd with the previous spell path values of the -object. - -The artifact file now supports objects with name NONE. If this object is -rolled up when trying to generate an artifact, then no artifact is -generated. This allows for better tuning the chances of having certain -artifacts, by just reducing the chance of having an artifact at all. The -'type' field of the Object in the artifact field is still required, but any -other fields for the artifact object are not used. - -Crossedit fixed so that all the images do not appeared inversed when being -used on a monochrome display. - -Changed common/xutil.h so that XPM mode will work on monochrome systems. In -fact, XPM mode should now work on all systems, previously, the load process -tried to create a pixmap 8 bits deep. If the X server did not support it, -errors would result. So while playing in XPM mode on monochrome may be -pointless, this allows play on systems where it may have some use. - -libproto.h and sproto.h only check that __STDC__ is defined. Previously, -__STDC__ had to be nonzero, and not all compilers set this. Also, in -global.h, if __STDC__ is not defined, return an error. Many compilers do not -allow _STDC__ to be redefined. - -Updated changable variable in crossedit. Now the various spell paths can -be set in the editor. - -SPEED_GAME now standard compile option, and not selectable. Having it as -an option seemed to create more problems than bugs non speed game found. - -Crossfire man page updated. xledit.man changed to crossedit.man, to -reflect the name of the program it represents. - -crossfire.doc updated with more information - mostly about new objects -added to the game. - -More help files. - -Objects with type CREATOR were added. The objects, when applied, create -other objects. Documentation in crossfire.doc. - -Object that cast spells (rod, scrolls, wands, and horns) now have a level -associated with them. This level is used to determine at what level the -spell should be cast, instead of using the owners level, which was typically -used before (allows creation of super powerful wands/rods/horns, but having -them be a very high level.) - -Bow, crossbow, bolt, and arrow code redone by Tero Haatanen. This cleans up -the code, and allows for magical arrows and bolts. - -Race can now be changed in the artifacts file. - -A spell of Banishment has been added. - -Attacktype AT_DEATH is now more potent when if against a monster that -the item also has slayign capability against. - -Bug fixed to prevent players from getting infinite experience for finding -the same trap. Also, experience changed for disarming traps. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.91.2 to 0.91.3 - -Changed artifact structure so that items with a chance greater than -255 are now possible. - -Object now put into icecubes when hit by a cold spell, like before. This -probably got messed up in the saving throw re-write, where objects had to be -either immune or protected from cold to be put in icecubes. In fact, the -reverse was supposed (and now does) happen. IF an object is -protected/immune from cold, it is also immune from being put in an icecbub. - -Fixed up is_magical and need_identify routines to handle more items. Rods, -scrolls, and spellbooks are always considered magical in nature. Wands and -staves are magical if they still have charges. Also, fixed up so that some -of the Artifact items are now detected as being magical. - -If player lacks sufficient money to buy from shop, it now prints how much -short he is in standard english string, (ie, 2 platinum 3 gold,etc), instead -of gold.silver format (lacke 44.25 gold). - -Inventory drawing changed. Should be a little more efficient, and be more -efficient on drawing. With auto pickup modes (that pick up more than one -item), inventory will be drawn after all applicable items have been picked -up, instead of after each one. - -Item status is printed next to item image in players inventory if -SHOW_INV_ICON is selected in the config.h file. It would be nice if better -imagines were designed for the status (right now, just words are printed -out.) - -When connecting to the server, a one line welcome message is printed. -Crossclient was modified to ignore this line if it starts with 'Welcome', so -changing it may cause problems with crossclient. - -Potion of restorations are now handled by means of different archetypes and -treasure lists, instead of having special code in the program to handle -them. - -If a RUNE is found in an object inventory when free_object has been called, -remove the rune instead of dropping it to the ground. This is so that traps -(runes) disappear when the object they are placed on is destroyed. - -Doors are now trapped, and be detected & searched just like chest -traps. - -Map difficulty can now be set in the map, and not be calculated at map load -time. Crossedit has been modified so that 'Attributes' now contains a -difficulty field, and if set, this will be used when loading a map (it is -stored in the level field of the map). If this value is 0 (default), then -the old formula for calculating the difficulty will be done. The advantage -of this is that map creators can now set the difficulty of the map more to -their liking, and certainly do a better job than the program can do. - -Pickup by value density fixed. The number of items is now taken into -consideration (before it did not, so a lot of arrows would be picked up, -because the total value divided by the weight of 1 arrow was greater than -the pickup value.) - -Bug fixed in query_cost. Before, for F_TRUE value, unless the item was -worth more than 10,000 sp, F_SELL value would be calculated instead of the -true value. - -Merge several small files in common.c into one file called porting.c. -porting.c contains common functions that are called by crossfire. This -allows system dependent code by be in one file, instead of scattered -throughout the program. - --listen_port command line option added. num is the port to use for -connections, instead of the default (13326) - -Instances when a variable name is the same as a structure name have been -fixed (by changing the variable name). On some compilers, this is a -problem. I can not be sure that all such cases have been fixed, as I have -not found a way for gcc to create warnings in this situation. - -Random happenings when a spell fails due to encumbrance has been added. -This option is configurable in the config.h file. - -Trap code added. Chests and doors can now be trapped. 'search' and -'disarm' commands added. old 'search' command was changed to 'search items' - -Inventory locking added. Makes it so that items can be locked in a players -inventory, and will not be dropped when a 'dropall' command is issued. -'inv-lock' and 'inv-unlock' commands were also added. - -'gsay' command added for party mode. - -Spellbooks can now have their slaying field set to the name of the spell -that the spellbook is of. - -Debugging output disabled in crossedit. It produced copious amounts of data -that has little relevance except for the developers. It can easy be turned -back on by editing the crossedit/include/debug.h file. - -Artifact gems (worth lots of money) and amulets added. - -Invisible object now appear in crossedit. Fixes a problem, but now makes -use of the global 'editor' variable, making it likely it won't be obsolete -any time soon. - -Artifacts (in artifacts file) can now have nrof field that will be used to -generated the number of items instead of the treasure list. If the nrof in -the artifact is 0, then the standard treasure list nrof is used instead. - -Artifacts can now grant reflect missile and spell ability. Also, by setting -stand_still, the objects will not be animated. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.91.1 to 0.91.2 - -Some options now standard part of game (SHOP_LISTINGS, Line of Sight). The -config.h (for this release) contains these options, but they are commented -out with the note they no longer do anything. - -Changed value pickup to pick up things based on true value, and not sell -value. True value is how much the item is worth without applying charisma -bonuses. Before, if two different characters used the same pickup mode, -different stuff could be picked up because of charisma differences (or even -if a character gained charisma, the same pickup mode may not work as it did -before). By using true value, pickup mode operates the same between all -characters, - -Items of type TREASURE can now have their experience set, and this will be -used for the difficulty of the generated treasure instead of the map -difficulty (as was done with shops). If experience is not set, then the map -difficulty will instead be used (or 14 in the case of shop floors). - -Cure poison actually cures it, instead of reducing the duration. - -Don't use fseek when loading in map files. Some systems do not support -fseek on pipes (which are used for compressed files). Instead, just -set the variable with the data we read, instead of seeking back and -re-reading it. - -Transferrance spell changed so that supercharging will have bad effects -(first confuses the player, then a large fireball is created (with player -losing all spellpoints) - -Poisoning made more vicious - it does more damage based on the level of the -creature that uses it (level/2 in fact). This makes it so that very tough -creatures that poison someone will have the poison do serious damage. -Also, damage caused is no longer random. - - Chests can now contain multiple items. Code changed to handle this -properly. Treasure is also always dropped on the floor (Even if the chest -is in an objects inventory.) hp field used in chests (and in fact all -treasures) to determine how many objects to create (thus, a chest with 3 hp -will have 3 objects created). - -Crossedit now draws a rectangle around the selected area. Reversing the -color of the images did not work in XPM mode. - -Have client.c include "includes.h". includes.h sets up all the name defines -properly (ie, __sgi__, __sun__) - -SP_* functions changed (by Rupert Goldie) to take an object pointer instead -of a level value. This makes adjustments for spell costs (via stuff like -spell paths) easier to make, because now only the SP_* functions need to be -changed. With the object structure, checking for known paths (or perhaps -other things in the future) can easily be done. - -Bombs will now be dropped before exploding. - -New attack type (God Power) added. The cleric cause wound spells use this -attack type. - -Charm monster spell added. - -Party system re-written by Scott MacFiggen . -Characters will now only share experience if on the same map, and other -features were also added. - -Modified check_item function (used in creating weapons with the improve -scrolls). The objects being sacrificed do not need to be in one group (ie, -two groups of 4 potions of dex will now be counted as 8 potions). This only -applies to potions, since some can be identified and others not identified. -Also, cursed or damned items will not count towards sacrifice count -(although, they will be consumed). - -Changed way cancellation works on items. Before, if cancellation hit a -player and the player failed the saving throws, the items got no saving -throw versus cancellation (only if their absolute magic value was less than -RANDOM()%6 did they survive). Now each item gets a saving throw. Note that -if a container makes a saving throw, then the items inside do not need to -make saving throws and are unaffected. - -A separate function did_make_save_item was split off from -save_throw_object. did_make_save_item justs checks to see if the item made -its saving throw based on the tables (and any protections or immunities -grants it an automatic save, as before) save_throw_item calls this function, -and in addition, does the appropriate actions (burns up items, turns them -into icecubes, calls cancellation, etc.) - -Saving throw method changed. Before, each item got 5 chances to make a save -for each item it is composed of. Now, it gets one chance for material it is -composed of. Then, based on the number of saves it made, and the number -materials it is composed of, an overall made save/failed save is -determined. This change is to make it easier to figure out saving throw -values, and hopefully make adjustment easier. - -Saving throw tables updated. In general, each item is +5 compared to what -it was before. This should hopefully make it so that items have about the -same success rate they did before. - -Crossedit modified to preserve value of connected field when cut/copying and -pasting. Before, an object that was copied/cut would also have its -connected field reset to 0. - -More XPM images colored. Filenames for the river directory have been -re-done, to actually make it a bit clearer of what does what. The archetype -names were not renamed however, to keep compatibility. - -World expanded. Another row of maps was added to the southern edge. The -world maps were also renamed to a world_xy format, where x is a letter -and y is a number. This represents the x and y location of the map, making -it easier to figure out how maps related to each other. - -Map spaces can prevent magic user spells, cleric spells, or both. Before, -an anti magic square prevented all types of spell casting. - -Have monsters regenerate spell points even if they don't cast a spell. -Monsters have a 1:3 chance of casting spells, irregardless of any other -factors. Before, spellpoints would only be regenerated if it got past this -check. Also, some monsters (dragons, chinese dragons) have had their max -spellpoint and regeneration rates increased to correspond with the higher -cost of casting their breath weapons. - -Altars now will also match on the slaying field of the object being -sacrificed. This is similar to how keys and special doors work. With this -change, it is no longer required to make a unique item that then needs to be -sacrificed (ie, the dagger, the cup, and the crown for the old city -quests). Instead, a cup, and crown can be used, with the slaying field set -appropriately (unfortunately, will not work for weapons, as it will think -that is the monster to do extra damage against.) However, the altar code -always did match item name, so calling it something special like 'The -Dagger' and have the sacrifice look for that should also work. - -Spell encumbrance code added. More you are carrying the higher your -chance for failure. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.91.0 to 0.91.1: - -Fixed bug in the enchant weapon code. It was not allocing enough -space for the string, and thus would corrupt the heap. - -Minor fix to spells.c. IT was using strdup instead of strdup_local, -which caused the compile to fail on some machines. - -No longer gets errors when adding a player on a map that is not -loaded in a multi player game. Before, process_events would see that -the player has no object, and could get enough errors to cause the game -to quit. Now, it suppresses errors if it is only loading objects -for that map. - -Default map difficult for treasure that is created in shops was changed from -9 to 5. In this way, the likelihood is higher that good items will be found -in dungeons, not in the shops (there are very few items with difficulty -above 9) - -Archetypes cleaned up. All archetypes that were not being used in a map -were moved to dev/unused/0.91.1. Note: There are still a few archetypes -that are not used in any maps, but these are part of a collection (ie, one -section type of a wall). This was done really because there is no reason to -have archetypes that are not being used to be in the official distribution. -It could be misleading for people looking through the arch directory (ie, 'I -thought I looked at all the maps, but never saw this monster'). Also, I -have no problem moving these archetypes back in, once some maps actually use -them. - -'grass' and 'sea' are no longer animated. There are a few reasons for -this: 1) The animations never really were that interesting, 2) being -animated put them on the speed list, and being that over all, they are the -second and third most used objects, this is a performance hit, and 3) With -pixmap and xpm images, re-draws are only done on squared the have changed -(really improves performance). However, with them being animated, they -often changed, so that more re-draws were needed. The old archetype and -image files are in dev/old (in arch distribution) if you actually want to -use the animated versions. - -Put a limit of 70 on damage bonus for weapons. - -Treasure lists expanded. The old treasure lists (in treasure.c) have been -removed, and treasure lists added to the treasures file added to take their -place. The treasure file has been expanded have list transitions, and -treasure lists in which 1 object on that list will be generated. Archetypes -(shop, random, and chest) updated to use the randomitems field to determine -what treasure list to use to generate the items. Advantages of the new -method: Ability to better tune treasure probabilities, re-compiling not -necessary in order to update treasures. the create_treasure function was -modified to add an extra argument - this is used to keep track of how many -times it has been called on this attempt to create a treasure. In this way, -infinite loops (with list transitions) are avoided. Generate treasure -replaced with a simpler function that calls create_treasure, and returns the -object. create_treasure takes a treasurelist instead of a integer -treasurelist number, like it did before. The crossfire.doc file has -been updated about the new treasures file capabilities. - -Chests are now created with their treasure as their inventory (this mostly -happened because of the treasure changes above). Advantage is that when a -chest burns up, its treasure may remain (or may be burned up). Before, when -a chest was burned up, its treasure inside was not created. - -Rolling multi-part objects should now work better (not perfect, however). - -Carrying an open bag with a mode that picks everything up will no longer cause -an infinite loop. - -Crossedit changed to draw selected areas as a black box. Fixes some problems -with display in XPM mode. - -Fixed bug that would cause game to crash when pets were summoned. Problem -was an infinite recursive loop, that would then cause the system to run out -of stack space. Solution is to decrease the speed_left of the object before -one of the function calls. This makes it so that at some point, one of the -functions will not be called. - -When a rune is cast, use the s->archname for the archetype name, and -not hard coded strings. Cured a bug with rune of transference. Also, -allowed several case statements to be merged. Really, no archetype names -should be used in spells.c, when casting spells. The archetype name should -be gotten from the spell structure. - -If a button is being updated on a map that is being saved, just return -from the function. Prevents errors 'object has speed but is free' - -Fixed bug that caused objects that got a speed_left of exactly 0 to -be frozen. This was because speed_left >0 to have the object be processed, -and <0 to have speed added. Now, speed is added if speed_left <=0. - -Some minor changes made to hopefully make it compile on AIX systems without -any modifications. - -process_active_maps now called when a map is being loaded. It should -hopefully work properly, since enter_exit was modified to not use any -static variables. Also, process_events was modified to take a map as -an argument, and if non null, only update objects on that map. That makes -process_map obsolete. process_active_maps was also changed to still process -even if there is only one player. -Crossfire should let players still perform actions when a map is being -saved. Problem is, handling a map that is in the process of it being -saved, and having a character enter it. Crossfire needs to finish -saving that map, then re-load it and insert the character. Large changes -to how player interact with loading & saving of maps would probably -be needed, and probably should be done. - -You no longer lose luck if you kill yourself, and the player who kills another -player now loses the luck (before, the player killed would lose luck). - -Now inventory display modes - unpaid, cursed, magical, nonmagical. All pretty -self explanatory. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.90.5 to 0.91.0: - -Some new maps added to the standard distribution (Magara and some of -the esben maps). Magara was added as a place to depart to by ship, the -esben maps were merged in as new buildings or towers on existing maps, not -as a new continent. - -Keyboard buffering is now selectable via 'keyboard' command. Before, -an attempt to remove keystrokes from the X Events queue was made, but could -not always remove all of them. Now, it should remove all of them, or none -of them, depending on the keyboard buffer setting. The value will be -saved with the player. - -Pickup mode value now saved and restored from the characters save files. - -Inventory and look window should only be re-drawn once when selling -an item. - -Calls to draw_stats in common/living.c will only be made if the object -type is a player (should prevent some warning messages) - -Fixed create earth wall spell so that it uses bdur as the base hit -points of the wall (instead of bdam). This will prevent some core dumps, -because otherwise, the wall can have 0 hit points. - -Program should not core dump when person quits that game and the map he -is on has been swapped out. (ie, person saves or quits the character, -but the map gets swapped out before they type 'q' to the play again -question) - -Word activated teleporter code added (Peter Mardahl). - -Who can become DM, based on their user id, can now be set in the dm_file -(assumed to be in lib.) (Tyler Van Gorder) - -Tell should now work properly (Eric Mehlhaff) - -Cloak code added (Peter Mardahl) - -Objects can not grant invisibility, make_invisible variable added to -archetype files. - -Added information to the crossfire.doc file (was missing several -attack types and materials). Added better information on what some of -the flags do. Noticed that will_apply 4 applied for both scrolls -and earthwalls, now only applies to earthwalls. To have a monster -use scrolls, can_use_scroll should be used instead. - -Code added to deny users or sites from connecting. This is to prevent -users who intentionally crash the server to connect and start up a window, -which they then crash the server with. Patches from Tyler Van Gorder. - -Two floors will can now be drawn when using XPM mode and this options -has been selected in config.h This allows for towers to sit on top of -grass to look proper. From Gregor Schmid - -Patches that modified 'create food' spell. Better food (ie, waybread) -will be created at higher levels, and the caster can also specify what -type of food to be created. From Peter Mardahl. - -Spell paths added by Rupert G. Goldie . Simply put, -each 'spell path' contains a certain category of spells. Objects and -races can be attuned, repelled, or denied certain paths (objects would -apply the the person wearing them). Attuned allows casting of spells in -that path at lower cost and greater efficiency, repelled paths are cast at -a higher cost and lower efficiency, and denied paths can not be cast at all. -Thus, a wand of small fireball that is attuned to Fire would cast more -powerful fireballs. A character wearing a ring that is denied the path -of fire could not cast fire spells at all. Right now, no items will -be created using these features, and no characters have any of these, but -these might be added in the future. Look at the spell-paths file in the -doc directory for a little more information. - -Pickup mode 6 (pick up magical items) will not pick up known cursed items. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Object structure and process_events changed. Now, a separate list -us used to keep track of active objects (objects whose speed is nonzero). -All objects on the active list are still on the normal list, but -process_objects only needs to go through the active_list for objects -to process, saving a lot of time. The cost is adding two -pointers (active_next and active_prev) to each objects. But the speed -gains are well worth the minor memory cost. the 'malloc command -was changed to display the number of objects on the active list - -note that there is zero memory usage for these, since these objects -are also on the normal object list. - -Programming note: Any time an objects speed is changed (doesn't -happen too often), a call to update_ob_speed(object *) must be -made, so that the object can be added or removed from the active -list, as appropriate. - -In testing, I first ran crossfire, with process events using the -normal object list, and printing out error messages if it found -objects that had speed but were not in the active_list. I cleared out -a couple warehouses in Navar without any errors. - -Then, I switched to using the active_list, and printing out errors if -it found objects on that list with zero speed. I cleared out the -mages tower in Navar city without any errors. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Selling items now works properly (it only failed to work if -AUTO_SAVE was not set previously, and the value of the item was -beyond a certain amount.) - -Look window code changed so that it does not erase the unused area -unless necessary. Also, when a player moves, freeze_look is set. -This was changed because the functions that move_ob calls update the look -window, and the window was being updated 3 times each time the player moved. - -When poisoning ends, it no longer core dumps. - -Inventory window updated if reading an unidentified spell book and you -already know that spell. - -Casting rune spells now works properly. - -Spells now (once again) sorted upon loading of characters. - ------------------------------------------------------------------------------- -Changes from Crossfire 0.90.4 to 0.90.5: - -Bug fixed with window titles getting their names changed. (Tero Haatanen) - -Container code changed around. Containers can be locked, they can be used -from the ground. FLAG_CONTAINER removed, since there is already a type -container, and bonus removed from object structure (Tero Haatanen) - -insert_ob_in_ob sorts objects, so items with more magic are before those -with no magic bonuses even for unidentified. It also uses the absolute -value of the magic, so it should be a little more difficult to know if the -item is cursed or not. - -Added unique-flag and UNIQUE_ITEMS define. All items which have unique flag -are saved to directory .../lib/unique-items. A filename is mapname + ".v" + -number, where number is normally 01, but if two or more server is running -same time it can be also greater. This feature can be used to banks and -inns to save permanently items. The code is one limitation: if map contains -unique item which can be carried away from map (e.g. an unique excalibur) -there must be at least one unique item on map which can't be carried away. -This is because unique items are loaded from original map only if unique -items file doesn't exit. If all unique items are carried away from map then -they are loaded back next time when someone enters that map. This should -not a problem if map makers remembers this. (Tero Haatanen) - -Editor by Jarkko Sonninen. He added toggle button into attribute window and -made map's reset time and timeout so that they can be configured in maps. He -also fixed map archetype, so that map default stating coordinate is (2,2) -like before. This seems break a gatehouse map, where it use default value -on map (changed 0 to 2), but it's easy to fix. - -Change check_walk_on (common/object.c) so it no longer calls the draw_func. -This eliminates a problem of seeing flashes of areas that should be blocked. -This is because the draw function it called would re-draw the game window -before the variable to re-calculate line of set was set. As I see it, this -function call was not needed in any case, because this is called during the -players movement. After the player moves, the draw function is called from -the process_events (now process_players1) function. This should also -conserver a little cpu time, and bandwidth. - -Coin code in shop.c changed. Patch from Kjetil Torgrim Homme made it so -that coin value can be changed in archetypes and the shop code should still -work properly. I made changes so that the number of coin types is set with -a #define, making adding new coin types easier. - -AUTOSAVE, SAVE_INTERVAL, and NO_EMERGENCY_SAVE should now work properly. -See include/config.h for more information on these options. - -Changed it so that updates to other maps will not be performed while -loading a map. This caused a bug if two players entered exits -at the same time. One or both of the players may end up in incorrect -locations, all exits in that location may be closed, etc. - -Saving throw table expanded to handle all materials and attack -types (Peter Mardahl) - -Fixes so that Turn Undead does not do physical damage (Peter Mardahl) - -Patch to make it impossible to prepare multiple weapons at the -same time (Peter Mardahl) - -Added 'sea1' archetype. This is the same as the sea archetype, but allows -for walk on. Its purpose is to use for backgrounds behind boats and similar -objects. Because it will probably be needed in so many places, I decided to -make an archetype, instead of editing the variables inside crossedit for the -object. - -Removed xbm_values array. This was used to map a face number to that face -location in memory. Since the bmaps file is created automatically without -any holes, this is not longer necessary. - -Archetype for wonder spell now in place. This will prevent core -dumps when the spell is cast. - -Pixmaps will now be freed upon exiting Crossfire. They will also be freed -after emergency saves are performed. This fixes the problem that some -X-Terminals would not free the memory used the the pixmaps otherwise, and -run out of memory. This fix pertains to both -pix and -xpm mode. - -Patch to hopefully double death problem/core dumps with NOT_PERMADEATH -mode. - -Changed the size of the temporary string that is used when loading -messages. For a few very long messages, 1024 bytes was not enought. - -Patches put in Crossedit to allow for XPM mode. From Petri Heinil. - -Cleaned up the code for look window. Now, everything agrees (ie, -when you click on something in the look window, it is actually -that object.) Likewise, invisible objects are not displayed -anywhere. This should also fix a bug of not being able to enter -some building by clicking the middle mouse button on them. - -Added help file for pickup. Explains the 8 basic pickup modes -plus the value-density pickup mode. - -Detect magic will detect magic on all items in a stack, not just the -top object. - -Spells fixes (From Peter Mardahl): - 1) Identify modified to identify items on the ground if inventory is - identified. - 2) Detect magic spell finds magical runes and makes them more visible - 3) AT_CHAOS and AT_COUNTERSPELL reimplemented so that they are not - treated as special cases by the move_cone function - 4) Magical walls created by spells (firewall, frostwall, ....) are - fixed - -If a map is reset, that map is then removed from the list of map objects -(what you see when you type 'maps ). This way, the 'maps commands only -displays maps that are reasonably active. This change should also save a -little memory. - -make depend now descends into crossedit/Cnv to depend there. - -Changed some of the colors in the xutil.c file. This is so that it uses -the same colors as the official colors for XPM files. It would have been -better to make those colors part of the official XPM colors to start -with, but it is a bit late to do that now. The change of the xutil.c file -was made so that crossfire would not use quite as many entries in -the colormap. The change in colors should be quite minor. - -Two new pickup modes added - one picks up all money and gems, the other -all magical items. - -Removed a lot of dead code from the various header files. removed -hiscore.h from distribution (wasn't declaring anything that was not -being declared elsewhere.) - - ------------------------------------------------------------------------------- -Changes from Crossfire 0.90.3 to 0.90.4: - -Many more XPM images now properly colored. NOTE TO COLORERS: A few minor -changes have been to the xpm.template file (palegreen has been replaced with -green3, and a more medium orange has been added.) I replaced palegreen -because it was very close to the 'green' color already present. And a -medium green was lacking. A medium orange was also lacking, so I added one -in. - -New pickup modes, that can be based on value density (from -Peter Mardahl ) - -Spells now have a casting time. (From Matthew Zeher ) - -Added libproto1.h file. This will be used for function prototypes -are affected by certain settings (ie, SPEED_GAME). This way, people -should not need to run 'make proto' - -New XPM loading method. Creates montage of the xpm files, -so that not as many calls to XPM are needed. This has reduced loading -time to about 30% of what it was before. Note: This done mean it takes -some more memory at start up, as the montage has to be stored -temporarily. - -Changed charisma bonuses. At 30 charisma, it will no longer be possible to -buy an item, and then sell it for more than you bought it for. - -Graphic exposures turned off on the GC's that are used in the game window. -Should improve performance. - -When a raise stat spell ends, the proper message (ie, You look ugly, you -feel less intelligent, etc) will now be printed out. - -If player NOT_PERMADEATH mode, and you die, a stat will only be decreased -one. Before, that stat was decreased one, and the max stat was set to that -value. So if the player was poisoned, or a stat was lowered due to some -other reason, that loss would become permanent. Now, both the stat and -orig_stat only gets decreased by one. - -invoke.c removed, cast_spell modified to handle what invoke.c did. - -Keep old shoot type if reading a scroll, instead of it being set to none. - -Raise stats spells should be progressively more costly (From Peter Mardahl) - -Should now be able to handle broken pipes without problem (ie, telnet -session closing unexpectedly). Made it so that listen level 0 on a socket -means that draw_all_sockets will not write to that socket. Crossclient uses -this so that it does not get unexpected messages, and thinks that it failed. - -Added 'set font' option. This basically unsets color pixmaps or xpm mode. -If crossclient was run without -xpm or -pix mode, it will send this command -to use fonts. What this means is that set (font,pix,xpm) should set that -display mode. Before, the display selection it defaulted to for crossclient -seemed unreliable at best. - -Fixed memory allocation problem in commands.c (it was writing to more -bytes than it had allocated) - -Draw message window almost complete re-written. In an effort to cut -down on flashing of the the status bars. ( Niilo Neuvo ) - -More bug fixes for spells (from Peter Mardahl) - -Fixed some bugs for compiling on the Alpha running OSF/1 1.3 - ------------------------------------------------------------------------------- -Changes from Crossfire 0.90.2 to 0.90.3: - -Added -xpm command line option to crossclient. - -All spells should not be handled in the switch statement in spells.c - -Let players buy zero value items from shop. This really shouldn't be a -problem, the only zero value items of any use might be wands with very -few charges. If someone wants to buy poison or cursed items, they should -be able to. - -Fix spelling error of command line argument 'detatch'. It is now -spelled properly (detach). - -Change draw_color_pix in server/xio.c. It now draws the images to an -intermediate pixmap, and then draws that to the screen. May or may not be -quicker (XSetClipOrigin only needs to be set once), but it does prevent -flicker. Also add two more GC's to the player struct, to make these -operations faster. - -Unless XPM_PIX is defined, draw_color_pix will note be compiled in the -code. - -Fixes to make it compile on both Solaris and NeXT machines (hopefully) - -Removed PLAYER_COLOR #ifdefs and lines they control out of login.c. Those -were not needed any more. - -Added 'mapinfo' command to valid input commands. - -Only have crossfire display -m as a valid command if it was compiled -with DUMP_SWITCHES set. - -Changed install procedure to only copy those files necessary to playing -into lib. Also, don't install obsolete scripts into the bin directory -when installing. ------------------------------------------------------------------------------ -Changes from Crossfire 0.90.1 to 0.90.2: - -Cleaned up the display from 'maps. Now things line up nicely. It -doesn't print the name anymore, and truncates the path at 18 characters. -But this doesn't make a difference for most maps, and now you can actually -see what variables are set to what. - -Experience requirements changed. Initial values from Peter, but I changed -them to be more round numbers. - -Change targets in server and crossclient from ComplexProgramTarget -to AllTarget, DependTarget, and NormalProgramTarget. This is because -ComplexProgramTarget expects man pages in those directories, which do -not exist. - -Moved data initialization out of treasure.h and into common/treasure.h. -In theory, no data initialization should be done in the .h files, it should -all be done in the .c files, with the .h files declaring the appropriate -externs. Likewise, no .c files should have extern's for other data -functions, they should include the appropriate .h file to get those -externs declared. This would fix the problem of having to go through -the various .c files whenever one of the data structures change, to update -all the externs made to it. Since the compiler will check to make sure that -the extern in the .h file and the actual declaration in the .c file are -the same, it prevents errors of mismatched declarations (ie, having -something like char s[40][20], which at later point gets to -char *s[40], but some files still think it is supposed to be s[40][20].) - -Changed doc/Imakefile so that make install.man will actually install -the man pages. - -Characters that dies who were poisoned should have the poisoning -removed. - -Changes from the Berkeley Folks: -What we've done that's in this server code that I know of: - ---level dependency added to many spells. - ---level dependency tunable on the fly by editing the spell_params - in the 'lib' dir and using the dm command 'spellreset' spellpoints - and spell level are also changeable on the fly. - ---many new spells added ---protection spells can now superimpose, as can gain stat spells. - repeated applications of protective or stat spells yield diminishing - returns. - ---runes added--an implementation of magical traps. any spell may - go in a rune. Read the documentation. - ---new spell interface. invoke invokes that spell immediately. Some -spells can take parameters now. invoke magic rune -will store in a magic rune. invoke will not set the -range spell. cast and prepare are synonymous. - ---Certain spells cannot be set as range spells now--less than 10 of these. -These are spells which no one would want to use more than once in a while, -like magic map. - ---A hack to object.c in common dir which makes objects created by objects -with owners owned by the creating object's owner. (This allows players -to get credit for a kill with the meteor swarm spell, which creates a -'swarm' object, which in turn creates the meteor objects.) --- End of Berkeley additions. - -New maps and archetypes added. - -Crossedit can now load maps that are compressed. - -Add Solaris 2.x compile support. - -Now prints out what the scroll name was that turned to dust. - -Minor artifact changes (ring of ice is blue, ring of fire is red) - -Horn range weapon now works properly, via using the + and - keys. - -New input method (From Jari Vanhala ). Looks like -it should now be possible to define keys to do most every command. Made -a few minor changes to default key file to make the present set up -act like the previous one. - -Fixed triggers and magic mouth. These devices will now open gates -as would be expected. The problem was that the opening routine -expects to see the op->value of these to be one, in order to open the -gate or whatever. Changed routines to toggle value between 0 and 1. -Note: As I understand, trigger handles return to their original state, but -keep the same value. That is, you pull the trigger handle, the handle returns -to its original position, but gate opens. Pull handle again, handle returns -to same position, but gate now closes. Or at least that is how I implemented -the devices. - -Make some more changes to the is_magical routine. Hopefully, it will now -detect all rings and amulets that are magical. Also, it should not -detect monsters (or any living object) as magical. - -Fixed bug with Color Pixmaps (XPM). Would try to free the pl->pixmaps -area twice, causing core dump. Looks like the same thing should have -happened when using bitmaps also. In any case, only one free(pl->pixmaps) -is now performed. - -Bug fixed with XPM code, in which 'floors' would appear to be -carried around with the player. This is because the players pixmap did -not change, and hence, it did not update that square. Now fixed. - -Random encounter bug might now be fixed (patches from Frank) - -New FLAG method used. flags in the object structure is now an array, -and SET_FLAG, CLEAR_FLAG and QUERY_FLAG functions are now used. This reduced -a lot of code in common/loader.c - - Fixed bug in common/object.c in expand_objects function. Looks like -braces were missing from for statement, so the the prev and flag fields of -the new objects were not being set properly. - - Fixed bug that could cause core dump if trying to print map message when -no message existed. (From Tero Haatanen ) - - Starting character will have uncursed, undamned and identified items -at the start of the game. (From Tero Haatanen ) - ------------------------------------------------------------------------------ -Changes from Crossfire 0.90.0 to 0.90.1: - - Crossedit 0.7 was merged in with the 0.90.0 source. This once again creates -a common distribution. - - I tried to retain the best features of both programs. This means that -the artifact code, and cursed/uncursed items (from CF 0.90.0) remain. -But I also used the filepaths for fonts, elimination of omaps for -internals use, and creation of partially processed bitmap file for -bitmap reading. - - The general patch method was to keep the cf 0.90.0, and create a diff -file for crossedit 0.7 from crossfire 0.89.3. These patches were then -applied. Many had to be implemented by hand. - - There are some exceptions. The crossedit program is almost the exact -same thing as in the crossedit 0.7 distribution. I made a few minor changes -to clean up compiling, but otherwise, no serious changes were made. - - The archetypes (lib/arch) structure was also taken from crossedit 0.7, as -well as most of the archetypes themselves. I think the breakdown makes -things much easier to handle for changes or improvements. NOTE: it is -likely that directory (lib/arch) will not be in the standard distribution, -but will instead be a separate file (to keep the size down). The various -files (archetypes, bmaps, font, etc.) will be created for the distribution. -All new archetypes from cf 0.90.0 were merged into the structure, as well -as a few minor changes in the old archetypes I noticed. - - The maps are from the crossfire 0.90.0-a-maps distribution. A few -simple programs (in lib/adm) were used convert them to use fontpaths -and to change some monster names that conflicted with character classes. -Note: Because in the old format, a 'food' field was used to determine the -map to link to, it is possible some of these fields were changed when -they were not supposed to be. This is because some other archetypes -(altars for one) also use the food field. If you notice any converted -by mistake, please let me know. - - A few minor memory leaks and other patches have also been applied. - - Other specific changes to this version: -'set' now gives better help message (like what can be set.) -XPM code added. -Fixed bug in 'who', which would cause a core dump if done when - another playing was still creating their character. - 'who' also display the map path of the other players, and not - the map name. Map names seldom seem to be set. -The crossfire.cfb and crossfire.pix files (in lib) can be compressed. -Fixed bug that caused core dumps when pet monsters were summoned. -If restoring a saved game, and the map it was saved on does not exist, - start them on the standard starting level. -Added option in config.h, that allows full ring and amulet descriptions - to be printed in inventory and look window. -Hopefully fixed bug which caused game to dump core when player died, - if NOT_PERMADEATH was set on. -Add flag HAS_MAGIC, and use that for the detect magic spell. This way, - artifacts that have no magic, will still be shown as magical. - So will rings that change abilities, etc. Doesn't work - quite perfectly, but seems to work as well as the old method. -Fixed bug so that if it can not find a map, it just prints that - that exit is closed, instead of panicing. -Have it re-draw the look window when you middle click on something (ie - apply) in that window. This fixes a bug with bags/sacks, of it - not updating when an item is used directly from a sack. +Not used