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 adjustements 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 attacktype (God Power) added.  The cleric cause wound spells use this
attacktype.

Charm monster spell added.

Party system re-written by Scott MacFiggen <smurf@soda.berkeley.edu>.
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 regerneration 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 encumberance code added.  More you are carrying the higher your
chance for failure.

------------------------------------------------------------------------------
Changes from Crosfire 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 strdrup_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 transititions, 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 arguement - 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 transistions) 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 transferrence.  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 arguement, 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 Crosfire 0.90.5 to 0.91.0:

Some new maps added to the standard distributin (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 ther 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 <schmid@fb3-s7.math.tu-berlin.de>

Patches that modified 'create food' spell.  Better food (ie, waybread)
will be created at higher levels, and the caster can also specifiy what
type of food to be created.  From Peter Mardahl.

Spell paths added by Rupert G. Goldie <rgg@aaii.oz.au>.  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 Crosfire 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 un-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 craeted 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 varoius header files.  removed
hiscore.h from distribution (wasn't declaring anything that was not
being declared elsewhere.)


------------------------------------------------------------------------------
Changes from Crosfire 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 <peterm@soda.berkeley.edu>)

Spells now have a casting time. (From Matthew Zeher <matt@cs.odu.edu>)

Added libproto1.h file.  This will be used for function prototypes
are affected by certain settigns (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 <anipa@guru.magic.fi>)

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 <spell> invokes that spell immediately.  Some
spells can take parameters now.  invoke magic rune <spell>
will store <spell> in a magic rune.  invoke  <spell> 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 <jam@modeemi.cs.tut.fi>).  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 <Tero.Haatanen@lut.fi>)

 Starting character will have uncursed, undamned and identified items
at the start of the game. (From Tero Haatanen <Tero.Haatanen@lut.fi>)

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

 Mark Wedel (master@rahul.net)
