--- crossfire/server ---


Protocol:pserver User:anonymous
Machine:crossfire.cvs.sourceforge.net CVSROOT:/cvsroot/crossfire

Filename: attack.c
Revision 1.130mwedel 2006/09/02 22:17:59 +4 -2
server/attack.c: Store away victim_map in hit_with_arrow() - what could
otherwise happen is that victim is a player, and killed and ends up
on new map, so that victim->map points at the wrong map.
MSW 2006-09-02
Show difference between Revision 1.129 and 1.130
Revision 1.129mwedel 2006/08/31 02:41:27 +4 -4
server/attack.c: Move kill_player() after we set up the pl->killer string.
Needed just so right message is on grave stone - also prevents crashes,
as if the hitter is poison or disease, kill_player() will remove those.
MSW 2006-08-30
Show difference between Revision 1.128 and 1.129
Revision 1.128qal21 2006/08/21 15:47:23 +4 -1
Call kill_player() from the kill_object() code. Fixes bug #1539192.
Show difference between Revision 1.127 and 1.128
Revision 1.127ryo_saeba 2006/08/19 12:03:31 +5 -1
Fix for bug #1540158 (Broken spells - Face of Death). Death attack is now always killing
Show difference between Revision 1.126 and 1.127
Revision 1.126tchize 2006/07/02 10:32:35 +2 -2

more progress in unit testing, marked points of interrest in code
Show difference between Revision 1.125 and 1.126
Revision 1.125ryo_saeba 2006/05/05 04:26:34 +20 -13
First part of patch #1453869 courtesy Stefan Huehner (shuehner)
Show difference between Revision 1.124 and 1.125
Revision 1.124qal21 2006/05/02 19:51:52 +3 -3
removed redundant check and fixed an uninitialized variable in attack.c
Show difference between Revision 1.123 and 1.124
Revision 1.123tchize 2006/04/06 16:18:35 +5 -5

finished common/arch.c unit test, fixed a few bugs, moved function around and renamed other
Show difference between Revision 1.122 and 1.123
Revision 1.122ryo_saeba 2006/03/18 09:05:37 +31 -19
Massive cleaning of code. Shouldn't be any functional change.
Show difference between Revision 1.121 and 1.122
Revision 1.121mwedel 2006/02/07 01:54:46 +11 -1
Code that adds transports. Transports are described more in detail in
docs/Developers/objects.
---
loader.l: Add new move type ('boat'). Update move_name field to be aware of
this type.
common/object.c: Unrelated to transport, but more apparant with transports -
fix bug with insert_ob_in_map() and multipart objects - we now only
try to fix up map and coordinates if the provided coordinates are
out of the map. Before, function would always use the passed
map for multipart objects, which is incorrect if we have already
set valid coordinates.
doc/Developers/objects: Update notes for TRANSPORTS. Update move
information to include MOVE_BOAT.
include/define.h: Add type TRANSPORT. Add MOVE_BOAT.
include/player.h: Add transport field to player structure.
include/sproto.h: rebuilt.
server/apply.c: Add code to handle applying of transports. Update
apply_below to apply transport if player is on one.
server/attack.c: Update hit_map() to look for transports, and hit any
players with the damage.
server/c_object.c: Update put_object_in_sack() to also handle TRANSPORTS
so that code can be re-used.
server/move.c: Fix handling of multipart objects in move_object() -
old code didn't work right with multipart objects moving along seams
of tiled maps. Add code to move_ob() to update player map position
for all players in a moving transport.
server/player.c: Update move_player_attack() too check of player is
in tranport, and use that for map and location information. Update
move_player() to handle speed related issues with transports.
server/time.c: Add code to credit time back to TRANSPORT objects since
we remove time in move_player() for TRANSPORTS.
socket/item.c: Add add_object_to_socklist() so that same code isn't
reproduced in 3 different places in the file. Update draw_look()
to handle transports - send transport object itself, then objects
in transport. Update esrv_send_inventory() and esrv_send_item()
to use add_object_to_socklist(). Update esrv_get_ob_from_count() to look
for objects in transport if player is in transport.
socket/loop.c: Remove checking of pl->map status, since draw_client_map()
does that, and we need to handle if the player is in a transport.
socket/request.c: Handle map drawing if player is in a transport.
MSW 2006-02-06
Show difference between Revision 1.120 and 1.121
Revision 1.120akirschbaum 2006/02/03 19:32:37 +46 -21
Fix attack messages containing random characters.
Show difference between Revision 1.119 and 1.120
Revision 1.119ryo_saeba 2005/12/27 08:38:16 +4 -3
Apply patch #1383359 (Fix death message) courtesy Anton Oussik
Show difference between Revision 1.118 and 1.119
Revision 1.118akirschbaum 2005/12/15 15:50:44 +2 -2
server/attack.c: Make spells destroy objects again.
Show difference between Revision 1.117 and 1.118
Revision 1.117mwedel 2005/11/16 02:16:08 +23 -12
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
Show difference between Revision 1.116 and 1.117
Revision 1.116akirschbaum 2005/10/28 14:08:53 +6 -7
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).
Show difference between Revision 1.115 and 1.116
Revision 1.115gros 2005/10/18 11:54:31 +18 -115
Upgrade of the Crossfire server to version 2.0 of the plugin interface.
Upgrade of the Python plugin to version 2.0 of the plugin interface.
Gros - 18/10/05
Show difference between Revision 1.114 and 1.115
Revision 1.114akirschbaum 2005/10/07 14:38:49 +27 -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.
Show difference between Revision 1.113 and 1.114
Revision 1.113cavesomething 2005/09/24 21:15:45 +5 -5
make prior party obsoletion patch not completely broken
Show difference between Revision 1.112 and 1.113
Revision 1.112ryo_saeba 2005/09/24 04:28:05 +5 -5
Patch 1194964 (party obsoletion) by cavesomething
Show difference between Revision 1.111 and 1.112
Revision 1.111mwedel 2005/09/13 01:46:35 +2 -2
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
Show difference between Revision 1.110 and 1.111
Revision 1.110cavesomething 2005/08/16 15:31:40 +3 -3
Add flag to lamps to make them able to be lit without needing negative light radii
Show difference between Revision 1.109 and 1.110
Revision 1.109ryo_saeba 2005/08/12 08:46:34 +13 -12
Fields changed from char* to const char*, cleanup.
Show difference between Revision 1.108 and 1.109
Revision 1.108akirschbaum 2005/07/25 19:23:00 +6 -1
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.
Show difference between Revision 1.107 and 1.108
Revision 1.107ryo_saeba 2005/07/19 15:59:34 +2 -2
Don't hardcode values. Fix item transformer code.
Show difference between Revision 1.106 and 1.107
Revision 1.106cavesomething 2005/04/14 19:41:34 +3 -2
patch 1123766 to make PK luck penalty configurable
Show difference between Revision 1.105 and 1.106
Revision 1.105akirschbaum 2005/03/20 10:20:07 +3 -3
server/attack.c: Do not decrease luck if a player kills himself with a spell
or pet.
Show difference between Revision 1.104 and 1.105
Revision 1.104akirschbaum 2005/03/06 14:38:54 +2 -2
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.
Show difference between Revision 1.103 and 1.104
Revision 1.103akirschbaum 2005/02/20 14:43:14 +14 -9
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.
Show difference between Revision 1.102 and 1.103
Revision 1.102mwedel 2004/12/29 02:45:08 +9 -5
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
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
Show difference between Revision 1.101 and 1.102
Revision 1.101mwedel 2004/09/10 02:03:45 +2 -2
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
Show difference between Revision 1.100 and 1.101
Revision 1.100mwedel 2004/06/16 02:09:44 +6 -5
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
Show difference between Revision 1.99 and 1.100
Revision 1.99akirschbaum 2004/06/13 12:30:22 +1 -2
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.
Show difference between Revision 1.98 and 1.99
Revision 1.98mwedel 2004/05/04 02:14:53 +2 -2
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
Show difference between Revision 1.97 and 1.98
Revision 1.97mwedel 2004/03/24 02:15:17 +61 -42
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
Show difference between Revision 1.96 and 1.97
Revision 1.96mwedel 2004/03/23 01:52:31 +2 -1
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
Show difference between Revision 1.95 and 1.96
Revision 1.95mwedel 2003/12/20 20:13:46 +105 -84
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
Show difference between Revision 1.94 and 1.95
Revision 1.94mwedel 2003/10/27 01:24:14 +49 -43
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
Show difference between Revision 1.93 and 1.94
Revision 1.93mwedel 2003/10/14 01:54:48 +2 -2
server/apply.c: fix bug so that we don't re-do treasures for objects
that have already had them made.
server/attack.c: Fix bug with monsters with drain causing cores.
server/player.c: Fix spell gaining for dragon players. Use actual
spell object.
MSW 2003-10-13
Show difference between Revision 1.92 and 1.93
Revision 1.92mwedel 2003/09/13 00:02:07 +153 -123
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
Show difference between Revision 1.91 and 1.92
Revision 1.91temitchell 2003/09/04 01:25:32 +2 -2
- add new type TRAP, make initial seperations from RUNE in code
add in traps triggering stuff if they are detonated
Show difference between Revision 1.90 and 1.91
Revision 1.90temitchell 2003/08/26 19:00:46 +49 -4
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 (in settings)when
players attack other players in peaceful mode. Changed who, statistics
commands to show this setting better and added a help file for peaceful.

It would be nice to have a indicator (even a toggle button?)in the
client for this as well.
Show difference between Revision 1.89 and 1.90
Revision 1.89gros 2003/06/26 06:27:43 +25 -22
Re-implemented the event hooks in objects as a dynamically linked list,
instead of a static table.
Show difference between Revision 1.88 and 1.89
Revision 1.88mwedel 2003/06/16 00:15:35 +5 -1
Add fix for crashes if owner of object is in process of exiting.
MSW 2003-06-15
Show difference between Revision 1.87 and 1.88
Revision 1.87mwedel 2003/03/20 01:21:05 +13 -4
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
Show difference between Revision 1.86 and 1.87
Revision 1.86mwedel 2003/03/07 23:35:32 +3 -4
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
Show difference between Revision 1.85 and 1.86
Revision 1.85mwedel 2003/02/25 01:18:07 +3 -2
*/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
Show difference between Revision 1.84 and 1.85
Revision 1.84garbled 2003/01/29 20:50:48 +2 -2
Fix a little stupidity.
Show difference between Revision 1.83 and 1.84
Revision 1.83garbled 2003/01/29 18:07:09 +46 -37
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.
Show difference between Revision 1.82 and 1.83
Revision 1.82mwedel 2003/01/08 02:39:18 +4 -4
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
Show difference between Revision 1.81 and 1.82
Revision 1.81garbled 2003/01/08 02:28:59 +3 -4
Prevent infinate drain. If the player attacks with drain, he can drain
ad infinitum, and then kill the monster at his leisure for full exp, on
top of the millions he got from draining.
Show difference between Revision 1.80 and 1.81
Revision 1.80mwedel 2003/01/03 18:28:52 +7 -3
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
Show difference between Revision 1.79 and 1.80
Revision 1.79garbled 2002/12/25 00:45:46 +7 -2
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.
Show difference between Revision 1.78 and 1.79
Revision 1.78garbled 2002/11/26 02:48:20 +2 -11
Get rid of #ifdef PLUGINS (it is on by default, I didn't take out gros's
code)
Show difference between Revision 1.77 and 1.78
Revision 1.77garbled 2002/11/26 01:48:31 +1 -9
get rid of NO_CONE_PROPOGATE
Show difference between Revision 1.76 and 1.77
Revision 1.76garbled 2002/11/12 18:49:47 +18 -15
#ifdef CASTING_TIME -> settings.casting_time
Show difference between Revision 1.75 and 1.76
Revision 1.75mwedel 2002/09/28 02:19:40 +25 -24
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
Show difference between Revision 1.74 and 1.75
Revision 1.74mwedel 2002/09/07 00:55:18 +21 -21
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
Show difference between Revision 1.73 and 1.74
Revision 1.73mwedel 2002/09/05 01:11:40 +3 -2
server/attack.c: Add missing check to make sure the plugin exists before
we try to access the plugin function.
MSW 2002-09-11
Show difference between Revision 1.72 and 1.73
Revision 1.72mwedel 2002/09/01 01:32:30 +5 -2
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
Show difference between Revision 1.71 and 1.72
Revision 1.71mwedel 2002/08/31 02:28:07 +49 -13
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
Show difference between Revision 1.70 and 1.71
Revision 1.70mwedel 2002/07/25 01:57:14 +207 -176
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
Show difference between Revision 1.69 and 1.70
Revision 1.69mwedel 2002/07/14 23:57:13 +2 -4
-- 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 --
Show difference between Revision 1.68 and 1.69
Revision 1.68mwedel 2002/05/14 01:47:44 +12 -4
server/attack.c: Don't generate PLAYER_KILL_PLAYER messages if kill
happened on battleground. Also, datestamp the messages.
MSW 2002-05-13
Show difference between Revision 1.67 and 1.68
Revision 1.67mwedel 2002/05/07 00:27:36 +10 -1
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
Show difference between Revision 1.66 and 1.67
Revision 1.66avogl 2002/03/11 16:02:37 +7 -3
common/object.c:
I saw from mids' cores that the server crashed inside
the update_object() function. Can't verify the crash,
but I put in some extra security-checks which might
help.

server/attack.c
Out-commented the errormessage "hit_map(): next object destroyed".
This routine is by no means a bug/error, happens very frequently,
and thus doesn't deserve to spam the logs.
Show difference between Revision 1.65 and 1.66
Revision 1.65darth_bob 2001/12/18 21:46:49 +3 -3
Turn down the damage abit
Show difference between Revision 1.64 and 1.65
Revision 1.64darth_bob 2001/12/18 03:45:07 +37 -13
New attack type, life stealing. Mostly untested, I am commiting this to allow people to test it out, currently it is only availible on a devourers blessed weapon. It currently drain and life stealing both are used as resistances to this attack type, this is to allow fairly seemless merging.
Show difference between Revision 1.63 and 1.64
Revision 1.63mwedel 2001/12/16 22:15:56 +11 -11
Fix bug by DB which moved a } to a different place in the hit_player_attacktype
function, resulting in greatly changed results. MSW 2001-12-16
Show difference between Revision 1.62 and 1.63
Revision 1.62darth_bob 2001/12/16 03:06:15 +33 -73
Fixed some stylistic problems.
Show difference between Revision 1.61 and 1.62
Revision 1.61darth_bob 2001/12/16 01:13:16 +16 -15
Fixes a few bugs and removes non-ansi comments.
Show difference between Revision 1.60 and 1.61
Revision 1.60darth_bob 2001/12/14 04:31:34 +223 -156
! Big changes made by njh !!
Basic code clean, using switch instead of repeated else if's
Hashed some code which was nop (didn't seem to do anything)
changed over to using ATNR_SLOW etc, instead of AT_SLOW.

Has been tested, all those interested in attack.c please read through this code again and make sure everything is in order. Mail problems to njh@hawthorn.csse.monash.edu.au!
Show difference between Revision 1.59 and 1.60
Revision 1.59michtoen 2001/11/27 22:44:42 +1 -2
Anim25 Patch

This patch do this things mainly:

- include same animation sheme for players and monster again
- introduce guard/walk/fight animation in 8 direction
- direct action: monster change from guard/walk animation
when they get attacked and fall back to walk or guard when
the enemy is gone
- Monster do "intelligent" animation
-> facing enemy
-> turn and run when scared
- fixed some animation flaws which invokes late anim
update (monster moves first and hold one frame old facing)
- Include real time player animation!
-> player starts moving animation when player moves
-> fall back to guard anim when player do nothing
-> plays fight anim when hit some

Hope i got all. This patch is much not so hard as it sounds.
Most of these features was easy to include because the old
anim engine was able to do about 80% of this. I had just to
boost up the logic.
Show difference between Revision 1.58 and 1.59
Revision 1.58michtoen 2001/11/26 22:33:46 +0 -0
Arch type & subtype patch

Added type & subtype system with 2 subtypes.
Type & subtype will be send to client.

Adding new types:

FLOOR 71
WALL 77
LIGHT_SOURCE 78
MISC_OBJECT 79
MONSTER 80
SPAWN_GENERATOR 81

Added subtypes for armor & weapons.

new commands are:
sub_type <uint8>
sub_typ2 <uint16>

sub_type2 is for internal server use.

Added new command:
casting_speed <delay>

This will be included later.

I will use the sdl client as tester for this patch,
older clients will not be effected even when the
arches are updated.
Show difference between Revision 1.57 and 1.58
Revision 1.57michtoen 2001/11/26 11:52:26 +7 -2
Attack Patch 25.11.01

Detailed information in the dev list.
The changes are to many to explain here.
Show difference between Revision 1.56 and 1.57
Revision 1.56michtoen 2001/11/04 14:22:55 +0 -0
One Arch/one pic patch.

I use a modified map1cmd, called map2cmd
for it.

This is a first tryout implementation.
The code can more then only submit offset data
of multi arch, its also possible to include animation
tags for the faces - we have now more free flags.

The code is NOT optimized. Iam still unsure , what
the best way is to send all this data. Sort & parsing
cost time. At this stage, ill quick parse is by server,
use slightly more bandwitch and let do the client more
work. But thats perhaps not the best way.

But this code will allow to install the arches for this
one arch/one pic.

MT
Show difference between Revision 1.55 and 1.56
Revision 1.55michtoen 2001/11/02 10:22:03 +15 -10
add FLAG_PARALYZE
Now, all player & monster have this flag set, when
they are effected by paralyzes spell.
I have not checked pets & summoned stuff yet,
it will follow.
Show difference between Revision 1.54 and 1.55
Revision 1.54garbled 2001/11/01 13:53:14 +8 -1
Generate messages when player poisons something, and touch up the attack
message code for poison/disease a bit.

garbled 2001-11-01
Show difference between Revision 1.53 and 1.54
Revision 1.53garbled 2001/11/01 00:34:32 +3 -3
Hey, I know. Let's commit code that actualy compiles!

garbled 2001-10-31
Show difference between Revision 1.52 and 1.53
Revision 1.52garbled 2001/11/01 00:29:29 +14 -4
Implement suffering and poison messages from Darth Bob. Fix a few typos
and turn the gore up a notch.

garbled 2001-10-31
Show difference between Revision 1.51 and 1.52
Revision 1.51garbled 2001/10/31 04:21:09 +11 -1
Add a new message type for doors. This makes door bashing a bit more
realistic. Idea by Darth Bob.

garbled 2001-10-31
Show difference between Revision 1.50 and 1.51
Revision 1.50garbled 2001/10/31 01:00:24 +30 -3
Big commit time. This does the following:

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
Show difference between Revision 1.49 and 1.50
Revision 1.49michtoen 2001/10/29 20:30:20 +0 -0
Remove a bug, reset some modules
Show difference between Revision 1.48 and 1.49
Revision 1.48michtoen 2001/10/29 18:49:02 +1 -3
really SOME fixes - most casting
Show difference between Revision 1.47 and 1.48
Revision 1.47garbled 2001/10/19 01:57:32 +25 -2
Add code that makes it exponentially less likely to spit out a message when
spells are stacked on top of one another. This mostly cures the case where
a player casts 10 fireballs into a group of trolls and gets blasted by
messages, without removing messages from area spells completely.

BTW AV, umm.. I guess it helps if I check hitter->type instead of
op->type. ;) nevermind.

garbled 2001-10-18
Show difference between Revision 1.46 and 1.47
Revision 1.46garbled 2001/10/15 16:12:08 +12 -12
Remove all instances of RANDOM()% and replace with rndm() from utils.c

garbled 2001-10-15
Show difference between Revision 1.45 and 1.46
Revision 1.45garbled 2001/10/15 02:38:03 +19 -5
This should fix the over-zealous messages from attacking that I bungled in
my last commit. Basically, this code throttles the different messages
with random numbers to keep them from flooding the client. The client
load should be much better now. If not, we simply tune the numbers.

garbled 2001-10-15
Show difference between Revision 1.44 and 1.45
Revision 1.44gros 2001/10/14 02:57:14 +110 -45
Major changes: Added dynamic plugin support, removed old Guile support.
- Gros 10/14/01
Show difference between Revision 1.43 and 1.44
Revision 1.43garbled 2001/10/07 02:17:46 +157 -90
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
Show difference between Revision 1.42 and 1.43
Revision 1.42garbled 2001/09/26 16:34:08 +14 -26
Apply the big luck patch to all these files. This removes the special
cases for alchemy and prayer as well.

Discussed at length with dhb, av and gros. Has been tested on both the
mids crossfire server, and on my private server.

This code removes all current use of the luck stat for players, and replaces
it with a general luck modifier for all random rolls. The intent of this
code is to give a general positive (or negative) effect on a player due
to luck. This effect should be generally intangible to the player, yet
help him out over the course of a game.

garbled 2001-09-26
Show difference between Revision 1.41 and 1.42
Revision 1.41mwedel 2001/08/21 00:39:30 +7 -6
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
Show difference between Revision 1.40 and 1.41
Revision 1.40mwedel 2001/07/13 23:11:18 +14 -15
Map tiling checkin
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.
MSW 2001-07-13
Show difference between Revision 1.39 and 1.40
Revision 1.39mwedel 2001/06/29 00:59:46 +150 -176
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
Show difference between Revision 1.38 and 1.39
Revision 1.38michtoen 2001/06/13 07:51:58 +1 -1
Modified Files:
player.c loader.l loader.c init.c request.c newserver.h
Log Message:
Removed 2 compiler warning from Scriptfire patch in loader.l/loader.c
and script.c.

added a new setup cmd: "newanim"
a client giving the newanim cmd, will enable the new animation system.

The interface is open and not server controlled at this moment.
First using is to enable the player moving in 8 direction. Giving this option to a
server without changed arch will invoke broken player animations.
This will be changed in the future.

MT 2001-06-13
Show difference between Revision 1.37 and 1.38
Revision 1.37michtoen 2001/06/13 05:51:26 +297 -187
Modified Files:
aclocal.m4 configure. configure.in Makefile.in
crossfire32.dsw crossfire32.dsp INSTALL_WIN32.txt
common: arch.c loader.c treasure.c loader.l
crossedit: Attr.c
doc: README_EXTENSIONS README_SCRIPT
include: autoconf.h define.h global.h includes.h loader.h
object.h script.h spellist.h spells.h sproto.h
version.h
server: Makefile.in apply.c attack.c c_object.c gods.c init.c
main.c monster.c player.c script.c script_spells.c
script_types.c skills.c spell_effect.c spell_util.c
time.c
Log Message:
Adding Scriptfire 0b11 to Crossfire.
Massive changes. The facts are in the doc files.

MT 2001-06-13
Show difference between Revision 1.36 and 1.37
Revision 1.36mwedel 2001/05/28 23:41:53 +1 -10
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
Show difference between Revision 1.35 and 1.36
Revision 1.35mardahl 2001/04/20 20:16:29 +3 -4
Performance optimization: do not place spare burnouts in maps.
Show difference between Revision 1.34 and 1.35
Revision 1.34mwedel 2001/04/17 00:26:25 +4 -2
server/attack.c: Remove error message about golem without owners,
also add better checking before clering the op->contr->golem field.
MSW 2001-04-16
Show difference between Revision 1.33 and 1.34
Revision 1.33avogl 2001/03/12 17:10:15 +8 -6
server/attack.c:

The calculation of magic resistance is seperated
from other attacktypes, thus missed the "floating
point simulation" on low damage values.
Fixed this now so it is accurate for magic as well.
This is very helpful for wizard characters:
so many monsters appeared "immune" to magic because
of the sloppy calculation before.
It will not help monster vs. player since most
monsters use abilities (= spell without magic).

lib/treasures:

Set an appropriate treasure list for chaos wyverns.

--AV
Show difference between Revision 1.32 and 1.33
Revision 1.32avogl 2001/02/23 15:05:11 +10 -7
My first commit to sourceforge.. :-))

Fixing a real nasty bug: When a player dies on
battleground (combat arena), he used to loose 1 luck.
Fixed, but: This luck-penalty still applies for
killing another player with melee outside of an arena.
That is not a bug, it is intended.. However, it is not
really a good way to deal with potential "PKers" IMHO.
Show difference between Revision 1.31 and 1.32
Revision 1.31cvs 2001/02/05 23:56:28 +6 -6
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.
Show difference between Revision 1.30 and 1.31
Revision 1.30cvs 2001/01/18 23:43:31 +2 -2
Fix to prevent crashes when players die. Don't assume all friendly objects
are golems - check for player type. MSW 2001-01-18
Show difference between Revision 1.29 and 1.30
Revision 1.29cvs 2001/01/15 17:49:21 +35 -14
MSW 2000/01/15:
Change blindness and paralyze so that duration is reduced based on protection
the player has. file server/attack.c
Show difference between Revision 1.28 and 1.29
Revision 1.28avogl 2001/01/08 14:39:59 +11 -4
Resistance to confusion used to have NO effect
unless one had 100%. To improve this, I made
the duration of the confusion-effect dependant
on resistance.
For confusion resist. 0% the old duration is
in effect. Vulnerbility lenghtens duration.
Show difference between Revision 1.27 and 1.28
Revision 1.27cvs 2000/12/23 19:12:44 +5 -2
MSW 2000/12/23:
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.
Show difference between Revision 1.26 and 1.27
Revision 1.26peterm 2000/12/19 00:54:52 +2 -2
Re-inserted the Spell of Conflict
fixed a bug in attack.c
Show difference between Revision 1.25 and 1.26
Revision 1.25avogl 2000/12/15 09:42:36 +8 -7
server/attack.c:

Acid will only corrode equipment while the player has
less than 50% acid resist.
Note that acid corrosion makes players feel *very* unappy
since there is no way to reverse the process yet.

Outcommented the deathstrike-debug message. It used to
spam the log like crazy.

server/spell_util.c:
server/time.c:

Patch for spell/missile reflecting:
The "reflect spell/missile" flag does no longer provide
living creatures with perfect immunity to projectiles.
There is a missing chance of: 10% + level of projectile / 10
This does apply for all kinds of magic bullets/missiles,
arrows, bolts and thrown objects.
Smite spells and bolt spells are not affected, they will
always bounce off.

server/spell_effect.c:

Done some more cleaning and adjusting for the protection
spells. E.g. it is no longer possible to have both a god's
blessing and a holy possession in effect.
Also removed is the ability to add holy bless/poss. effects
of more than one god to a char.
Show difference between Revision 1.24 and 1.25
Revision 1.24avogl 2000/12/13 21:52:33 +16 -10
PR-patch by AndreasV:

Main features of this patch:

o Negative resistances are calculated in a "logical" way.
For example: +30 and -30 makes a total of zero.

o Vulnerabilities work as "caps" for protection. E.g.:
While wearing one item with fire -20, you cannot get more
than fire +80 overall from equipment.
If one is forced to live with high vulnerability
(like wraith: fire -30), you can still use a potion to go
beyond the cap.

o Potions work completely different than before. The so-called
"immunity-potions" grant an absolute value of 90% protection
(independant from the players's equipment and properties),
there are also very rare ones with 95% and cheap ones with 50%.
If the player has already got more protection than the potion
provides, drinking it won't have any effect.

o Cursed potions are working now (have been broken before).
They give a temporare vulnerability, but can be overriden
by uncursed potions of the same res.-type.

o Protection spells work different than potions. Their effect
does add to the player's equipment. The amount of protection
granted depends on the caster's skill level and path
attunes (if a related spellpath exists). The maximum a player
can get is currently 60% (at wisdom lvl 107 & path_attuned).

o When the player's state of resistance changes, a new kind
of message shows up: The percentage of the new resistance
is displayed: e.g. "You resistance to fire rises to 67%".

o When a player got hit by dam<1 it used to be zero. To make
the calculations more accurate, for 0<dam<1 I "simulate"
a floating point value-effect now. Example: If the correct
damage value would be 0.4, there is 40% chance for dam=1, else
dam=0. For 0.7, ther'd be 70% chance for dam=1... etc.
Without that feature, there would most of the times be no
difference between resistance 95 and 100.
Show difference between Revision 1.23 and 1.24
Revision 1.23cvs 2000/12/03 18:40:05 +151 -131
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.
Show difference between Revision 1.22 and 1.23
Revision 1.22peterm 2000/11/21 15:52:51 +2 -2
Fix so that poisoning kills go into the right place.

PM
Show difference between Revision 1.21 and 1.22
Revision 1.21peterm 2000/11/17 21:32:34 +2 -2
10 new spells skeleton added to spellist.h and spells.h:
SP_SANCTUARY, SP_PEACE, SP_SPIDERWEB SP_CONFLICT, SP_RAGE,
SP_FORKED_LIGHTING SP_POISON_FOG, SP_FLAME_AURA,
SP_VITRIOL

Of these, SP_SANCTUARY and SP_FLAME_AURA are partially
implemented. These two require archetypes yet.
Show difference between Revision 1.20 and 1.21
Revision 1.20peterm 2000/11/17 05:16:45 +6 -4
New spell added, Windstorm.
It pushes objects, mostly, and does a little damage.
define.h: NROFREALSPELLS++
spellist.h spells.h: "windstorm"
archetypes: new arch added for windstorm
disease.c: comment on new title parameter.
spell_effect.c, sproto.h spell*.c: implmenetation of windstorm.
Show difference between Revision 1.19 and 1.20
Revision 1.19avogl 2000/11/08 14:17:41 +34 -17
The new battleground-feature:
I have created a place where friendly players can battle
each other without having to fear death. The defeated player
will be teleported to a special location (the first-aide station).
No exp nor stats loss. Moreover, exp-draining doesn't work inside
the arena, acid won't harm the equipment.
To make things easier, peaceful mode is ignored in the arena.
--AndreasV
Show difference between Revision 1.18 and 1.19
Revision 1.18jec 2000/11/06 17:06:47 +324 -131
* stop_item() / attack fix patch 2000-11-06
Show difference between Revision 1.17 and 1.18
Revision 1.17peterm 2000/10/31 06:04:58 +4 -1
Limit the number of log messages about "object x not having a name when
it attacks" to one per object which tries to attack.

Makes logs..... smaller!
Show difference between Revision 1.16 and 1.17
Revision 1.16peterm 2000/10/19 03:20:29 +9 -4
Very broken code having to do with luck and attacking/being hit.
Disabled it for now by setting luck to 0 in this code.
--PeterM
Show difference between Revision 1.15 and 1.16
Revision 1.15peterm 2000/10/12 13:10:35 +13 -8
Patch from AV which makes poison attack savethrows depend
on the level difference between the attacker and victim.
--PeterM
Show difference between Revision 1.14 and 1.15
Revision 1.14jec 2000/06/21 04:34:56 +8 -4
server/commands.c; server/c_object.c: dump_object_from_tag(): Removed
broken command. Fixes server crashes very easily triggered by players.

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.
Show difference between Revision 1.13 and 1.14
Revision 1.13jec 2000/06/08 11:08:41 +18 -9
common/button.c: do_mood_floor(): Bugfixes: Only players can have pets.
Call add_friendly_object() for friendly monsters.

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.

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.

common/friend.c: remove_friendly_object(): Use llevError for error
messages.

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

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.

common/object.c: insert_ob_in_map_simple() and insert_ob_in_map():
Check that we don't insert freed objects.

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.

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.

server/time.c: move_arrow(): Use llevDebug level for "Arrow had no
map" message.

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.

server/shop.c: get_payment2(): Type of tag is 'tag_t', not 'long'.

server/spell_effect.c: animate_bomb(): Fix environment checks.

server/spell_util.c: fire_bolt(): Bugfix: Set level of bolt.

server/spell_util.c: explosion(): Bugfix: Set FLAG_NO_APPLY before
moving the exploding object to the top.

server/spell_util.c: put_a_monster(): First create the monster
completely, then just insert its head.

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).
Show difference between Revision 1.12 and 1.13
Revision 1.12jec 2000/06/07 18:46:18 +42 -23
server/rune.c: trap_disarm(): Bugfix: Use SK_level() to determine
disarmer's level. Fixes server crash if multisquare monster casts
"disarm".

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.
Show difference between Revision 1.11 and 1.12
Revision 1.11jec 2000/05/26 07:36:49 +22 -8
* 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.
Show difference between Revision 1.10 and 1.11
Revision 1.10jec 2000/05/26 05:14:55 +2 -2
* 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.
Show difference between Revision 1.9 and 1.10
Revision 1.9jec 2000/05/26 04:50:48 +7 -7
* apply() cleanup patch 26/5/2000
Show difference between Revision 1.8 and 1.9
Revision 1.8jec 2000/05/21 16:41:45 +4 -5
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'.

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.
Show difference between Revision 1.7 and 1.8
Revision 1.7cvs 2000/04/04 23:40:52 +16 -6
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
Show difference between Revision 1.6 and 1.7
Revision 1.6cater 1999/11/04 21:25:28 +3 -3

Show difference between Revision [Error_in_revnumber] and 1.6
Revision [Error_in_revnumber][Error_in_author] [Error_in_revdate]None
Modified Files:
server/attack.c CHANGES
Revision [Error_in_revnumber][Error_in_author] [Error_in_revdate]None
date: 1999/09/17 18:43:04; author: damn; state: Exp; lines: +71 -35
- 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
Revision 1.4cvs 1999/07/13 01:03:04 +1 -1

Global commit for 0.95.4 - most files have no changes but just have
differing headers between my local RCS and the CVS versions and need to
get synced up.
Show difference between Revision 1.3 and 1.4
Revision 1.3cvs 1999/07/10 18:36:00 +11 -3
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.
Show difference between Revision 1.2 and 1.3
Revision 1.2cvs 1999/06/13 00:01:06 +17 -1
Check that hitter has a valid name before it attacks - fixes some
crashes (attack.c) - msw
Show difference between Revision 1.1 and 1.2
Revision 1.1uid200 1999/04/02 13:10:04 None
Initial revision
First version
Revision 1.1.1.1uid200 1999/04/02 13:10:04 +0 -0
First CVS revsion: crossfire-0.95.3
Show difference between Revision 1.1 and 1.1.1.1


File made using version 1.98 of cvs2html by leaf at 2011-07-21 17:25