--- crossfire/server ---


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

Filename: c_range.c
Revision 1.16mwedel 2006/06/05 01:28:56 +3 -3
Clean up some compiler warnings. Most of the changes are related to replaced
%lld with FMT64 defines so that the format will be correct, no matter if
the 64 bit type is a long, long long, or if this is windows. #if 0 out a
bunch of code that isn't used.
--
common/exp.c: Replaced lld with FMT64
common/holy.c: #if 0 out baptize_altar(). Add banner copyright at top of file.
common/info.c, common/item.c, common/loader.l, common/loader.c, common/map.c:
common/porting.c Replaced lld with FMT64
common/time.c: Replace a bunch of variables declared as longs to be uint32.
Update various sprintf appropriately.
include/global.h: Add FMT64 and FMT64U as appropriate for different systems.
Change max_time to be a uint32
include/sockproto.h, include/sproto.h: rebuilt
server/apply.c: #if 0 out monster_apply_special
server/c_range.c: Add != 0 in assignment if statement - same meaning, clearer
on intention and avoids compiler warning.
server/c_wiz.c: Update command_kick() to take const char. Update command_speed()
to operate properly based on max_time being a uint32. Update various lld
to FMT64. Clarify ambiguous if/if/else statement in command_insert_into()
server/commands.c: Add cast to command_kick for new function prototype. #if
0 out find_command(), parse_string(), parse_command()
server/disease.c: #if 0 out find_disease(), reduce_symptoms()
server/egoitem.c: #if 0 out create_artifact(). Add copyright at top of file.
server/gods.c: #if 0 out get_god()
server/hiscore.c: Replace lld with FMT64
server/login.c: #if 0 out create_savedir_if_needed()
server/resurrection.c: Replace lld with FMT64. #if 0 out dead_character() and
dead_player_exists()
server/server.c: Remove info_keys() - hasn't been used in a long time. #if 0
out process_active_maps()
server/skill_util.c: Replace lld with FMT64
server/spell_util.c: #if 0 out check_spell_effect()
server/weather.c: #if 0 out feather_map(). Fix what I suspect is an error
in worldmap_to_weathermap() to skip over starting slashes.
socket/image.c: Add a fair number of char * casts to suppress warnings.
socket/init.c: Change buflen in init_connection() to socklen_t to match
function prototype. Add some char * casts.
socket/loop.c: Add some char * casts.
--
MSW 2006-06-04
Show difference between Revision 1.15 and 1.16
Revision 1.15cavesomething 2006/01/10 10:32:44 +13 -5
allow spells cast by number to take options, also the changelog entry which I forgot from the last commit
Show difference between Revision 1.14 and 1.15
Revision 1.14cavesomething 2006/01/08 20:02:45 +6 -3
Allow cast and invoke commands to select spells by count as well as name
Show difference between Revision 1.13 and 1.14
Revision 1.13akirschbaum 2006/01/01 05:22:04 +3 -4
Update obsolete comment; remove useless expression.
Show difference between Revision 1.12 and 1.13
Revision 1.12ryo_saeba 2005/10/01 12:46:05 +7 -1
Patches #1307880 and #1306987 courtesy quisar
Show difference between Revision 1.11 and 1.12
Revision 1.11ryo_saeba 2005/08/12 08:46:34 +2 -2
Fields changed from char* to const char*, cleanup.
Show difference between Revision 1.10 and 1.11
Revision 1.10mwedel 2003/10/27 01:24:14 +2 -2
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.9 and 1.10
Revision 1.9mwedel 2003/09/13 00:02:09 +108 -225
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.8 and 1.9
Revision 1.8mwedel 2003/04/14 01:41:23 +6 -4
server/c_range.c: Add check to make sure we are actually removing a
golem and that the object hasn't been freed/recycled and the
player not updated. Fixes crashes.
MSW 2003-04-13
Show difference between Revision 1.7 and 1.8
Revision 1.7mwedel 2002/12/03 01:40:17 +2 -2
TODO: Move more items from my mailbox to the TODO list.
common/living.c: Init item_power in player to zero in fix_player() -
bogus results were getting generated as it just kept getting incremented.
common/porting.c: fix remove_directory so it works properly - checking
for . and .. entries too late, calling unlink instead of rmdir.
include/sproto.h: rebuilt
lib/animations, lib/archetypes, lib/bmaps, lib/bmaps.paths, lib/crossfire.0,
lib/crossfire.1, lib/faces: Rebuilt - new archs added, catch is_thrown
addition to thrown rock/boulder archs.
server/c_move.c, server/c_range.c: Add another parameter to do_skill() - part, which
is closest part of creature to target object - current only used
for the throw code. Update calls to this function to add additional
parameter.
server/c_object.c: Remove the NDI_UNIQUE from the 'item is too heavy
to pick up' so that it won't flood the client with them if players
goes onto space with lots of objects.
server/main.c: Minor cleanup to fix compiler warning about ambigous
if/else.
server/monster.c: Pass closest part of monster when having it use
a skill so that it doesn't throw rocks into itself. Update calls to
do_skill as described above.
server/player.c: Cal delete_player() when player quits - this properly
cleans up any per player unique maps they have. Also, check for
any such maps currently in memory, and delete those so that unique
maps don't get 'gifted' to the next character of the same name.
Update calls to do_skill as described above.
server/shop.c: Combine items of the same name together in the output
of the shop listings. Include the number of items, remove special
casing of some objects so that query_base_name is used for all item
types.
server/skill_util.c: Modify do_skill() to take additional param as
described above. Also, have do_skill return 1 on success,
0 on failur to use skill, and not return exp - otherwise,
monster code has no idea if skill was successfully used, as throw
doesn't grant exp, and this caused monsters to move into the
object they just threw. Update calls to do_skill as described
above.
server/skills.c: Clean up skill_throw function to return meaningfull
value. Also, pass along extra part of closest monster part
to target. Modify do_throw to return value, use closest
part of body as origin point for thwon object.
server/spell_effect.c: Use isqrt function instead of definining
ISQRT that used float version. Cleans up compile warning - most
likely not seen before as spell was #ifdef SPELL_ENCUMBERANCE out.
server/time.c: Put sanity checking for players speed_left in
move_player_mover() - got some reports of infinite negative speed
on metalforge, and this is the only place in the code where I could
see that happening given the description of the events.
utils/arch2xml.py, utils/cfarches.xsl: New script (and template) by
Todd Mitchell. Script can convert archs to xml, and the template
is usuable with mozilla to look at the output.
MSW 2002-12-02
Show difference between Revision 1.6 and 1.7
Revision 1.6mwedel 2002/07/14 23:57:13 +88 -114
-- 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.5 and 1.6
Revision 1.5michtoen 2001/10/29 20:30:20 +1 -1
Remove a bug, reset some modules
Show difference between Revision 1.4 and 1.5
Revision 1.4michtoen 2001/10/29 18:49:02 +2 -2
really SOME fixes - most casting
Show difference between Revision 1.3 and 1.4
Revision 1.3mwedel 2001/05/28 23:41:53 +2 -7
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.2 and 1.3
Revision 1.2mwedel 2001/03/15 01:10:58 +1 -2
Remove extra draw_info command that resulted in 'switched to spell ...'
being printed twice - printing is done at the end of the function.
MSW 2001/03/14
Show difference between Revision 1.1 and 1.2
Revision 1.1cvs 2000/12/18 01:41:06 None
Add new file. MSW
First version


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