--- crossfire/server ---


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

Filename: alchemy.c
Revision 1.30qal21 2006/09/16 01:18:50 +11 -8
Make shadow alchemy and random alchemy failures ignore the 'cauldron' type being used. Fixes bug #1551385.
Show difference between Revision 1.29 and 1.30
Revision 1.29ryo_saeba 2006/09/03 08:01:02 +59 -15
#1551386 (Alchemy with unpaid items)
Show difference between Revision 1.28 and 1.29
Revision 1.28ryo_saeba 2006/05/05 04:26:34 +19 -11
First part of patch #1453869 courtesy Stefan Huehner (shuehner)
Show difference between Revision 1.27 and 1.28
Revision 1.27tchize 2006/04/06 16:18:35 +8 -8

finished common/arch.c unit test, fixed a few bugs, moved function around and renamed other
Show difference between Revision 1.26 and 1.27
Revision 1.26akirschbaum 2006/02/10 17:59:27 +3 -3
Apply slightly modified patch #1428309 (code-cleanup: const, static) by
Stefan Huehner: add const/static to functions/variables. Remove some type
casts.
Show difference between Revision 1.25 and 1.26
Revision 1.25mwedel 2005/11/16 02:16:08 +2 -2
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.24 and 1.25
Revision 1.24akirschbaum 2005/10/31 15:23:00 +129 -35
Fix bug #1102975 (Bronze items not keeping their + in alchemy): the problem
was that a formula for full_helmet did exist but not for b_full_helmet. Since
both helmet's names are "full helmet", the recipe was selected even if using
the ingredient b_full_helmet. This fix adds new formulae for alternative
archetypes with the same name as the base object, and makes the server code
select the matching formula from multiple arch names in the "arch" field.
Show difference between Revision 1.23 and 1.24
Revision 1.23akirschbaum 2005/07/16 16:10:39 +2 -2
Fix spelling errors in string constants.
Show difference between Revision 1.22 and 1.23
Revision 1.22ryo_saeba 2005/03/09 15:20:35 +34 -20
Tweak comments for doxygen
Show difference between Revision 1.21 and 1.22
Revision 1.21akirschbaum 2004/08/24 14:43:59 +107 -2
include/define.h
server/shop.c
add new flags F_IDENTIFIED and F_NOT_CURSED to query_cost() to pretend
the item to be identified/not cursed or damned.
server/alchemy.c
fix possible abuse of shadow alchemy: do not allow the generated items
to be more valuable than the ingredients when using alternate recipes.
Show difference between Revision 1.20 and 1.21
Revision 1.20mwedel 2003/09/13 00:02:07 +172 -188
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.19 and 1.20
Revision 1.19garbled 2003/02/07 00:57:17 +2 -13
Mark clued me in that query_name existed.. and that brought to light that
the way I was handling materialnames before was stupid. Back the old
code out, and use query_name instead. Put something in the loader to
back the names out of the objects I mangled.
Show difference between Revision 1.18 and 1.19
Revision 1.18garbled 2003/02/06 02:08:50 +12 -6
Fix the following bugs:
When doing alchemy with a transmute formula, check if we should add one
of the materialtype's special modification properties into the newly
created object.
When performing alchemy, do better checks to remove the materialname form
the object's strtoint value. Don't remove the materialname on
non-weapon/armour, and don't remove it if the object has it manually
specified in the arch.
Fixes alot of formulae I broke.
Show difference between Revision 1.17 and 1.18
Revision 1.17garbled 2003/01/29 18:07:09 +16 -8
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.16 and 1.17
Revision 1.16garbled 2003/01/20 19:23:17 +5 -2
When players use nonexistent formulae, and they backfire, rp==NULL, so
corner case it.
Show difference between Revision 1.15 and 1.16
Revision 1.15garbled 2003/01/08 22:20:26 +94 -107
Rewrite alchemy slightly. Now in the formula, we include a difficulty
(percentage) and the experience value for the formula. We no longer
adjust the experience given by the difficulty of the map. We no longer
use the number of items to determine difficulty, rather we use the
difficulty rating in the formula. We no longer multiply the experience
given by the yield of the product, one "casting" one exp. When writing
formulae, calculate the difficulty in when setitng the exp, because it is
not multiplied in any way.

Fix a bug in Mark's new armour enchantment stuff. Send the item to the
player, otherwise they mysteriously dissapear, and only add the split
items back if they were spilt, avoiding a segv when enchanting a single
piece of armour.

Change alchemy skills to only utilize cauldrons directly beneath the
user.. the other behavior was getting annoying.

This should slow down the abusive nature of alchemy. The exp settings
and difficulty levels probably should be tuned better. Feel free.
Show difference between Revision 1.14 and 1.15
Revision 1.14garbled 2002/11/12 18:26:13 +6 -18
#ifdef SPELL_ENCUMBRANCE -> settings.spell_encumbrance
#ifdef SPELL_FAILURE_EFFECTS -> settings.spell_failure_effects
Show difference between Revision 1.13 and 1.14
Revision 1.13garbled 2002/11/11 02:59:09 +96 -59
New alchemy code, as discussed on the developer list. Now recipies include
two new tags: skill and cauldron. With skill, you can set which skill
activates this recipie, and the cauldron, corresponds to the arch name of
the facility you will use when creating the item. In this way, item
creation is now more generalized than just alchemy, and specific formulae
can be written to utilize different skills, or perhaps special formulae
would require a hard-to-find cauldron.

Functionally, the alchemy, or alchemy-like-skills are now activated by
the use_skill command. The secondary use of the alchemy spell has been
withdrawn, so now it functions in the way it was originally intended again.
Show difference between Revision 1.12 and 1.13
Revision 1.12mwedel 2002/07/14 23:25:40 +4 -3
Update banner copyright with proper contact information.
MSW 2002-07-14
Show difference between Revision 1.11 and 1.12
Revision 1.11mwedel 2002/06/07 02:00:44 +3 -1
Mostly bugfixes. I'm not sure if this will fix the disappearing arch problem-
none of the changes made in the original multiple name would seem to
cause it, so hard to say if any of these changes may fix it.
--
common/arch.c: Change get_archetype_by_name to be more efficient and
not leak memory. Modify code that frees all archetype data to free
the name_pl information. Make sure the clone.name_pl is set to
NULL. When singularites are created, set the name_pl for them.
common/loader.l, common/loader.c: Modify code that fixes up name_pl
to be more correct when it fixes up name_pl for old objects.
common/map.c: Modify load_map_header so that tile_paths will be normalized -
need for editor to be able to load maps that have a multipart object
that spans the maps.
crossedit/Edit.c: Modify some calls of out_of_map to OUT_OF_REAL_MAP, since
tiling code really isn't fully in place for the editor. Modify
EditPerformFill so that it actually works and doesn't crash the editor.
include/global.h: Move FREE_AND_COPY macro from loader.l to here so that
all source code files can use it.
lib/adm/map_info: Modify to actually be able to examine just a sub
portion of the map directories, and not all of them. Don't always
show the unused objects - information isn't very interesting if only
a portion is being examined. Modify the exit examining code to properly
deal with random maps (if there is a finalmap component, make sure
that does exist.) Loade the bmaps file and not the faces file to
find valid faces.
plugin/plugin_python.c: Add missing %s that described what script
was actually loaded.
random_maps/special.c, server/alchemy.c, server/c_misc.c, server/gods.c,
server/login.c, server/player.c, server/spell_effect.c: Set up proper
name_pl value for code that changes the name of objects.
server/apply.c: Use FREE_AND_COPY to set up names. Set up proper
name_pl values for cases that change name. In apply_lighter, call fix_player
if player is lighting an object in his inventory - necessary for the
players glow_radius to get updated so the change actually takes effect.
socket/request.c: Modify esrv_map_scroll so that it properly clears cells
that are moving out of view - failure to do this was resulting in the
map1a updating these spaces with empty faces. This was causing
fog of war wackiness with the client.
MSW 2002-06-06
Show difference between Revision 1.10 and 1.11
Revision 1.10garbled 2001/10/15 16:12:08 +11 -11
Remove all instances of RANDOM()% and replace with rndm() from utils.c

garbled 2001-10-15
Show difference between Revision 1.9 and 1.10
Revision 1.9garbled 2001/09/26 16:34:08 +12 -15
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.8 and 1.9
Revision 1.8mwedel 2001/07/13 23:11:18 +27 -1
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.7 and 1.8
Revision 1.7jec 2000/05/26 04:50:48 +1 -1
* apply() cleanup patch 26/5/2000
Show difference between Revision 1.6 and 1.7
Revision 1.6damn 1999/09/17 13:37:03 +1 -5
- minor cleanup
Show difference between Revision 1.5 and 1.6
Revision 1.5cvs 1999/08/06 16:50:05 +37 -28
incorporated changes from DAMN:
This one is a suggested fix for the alchemy bug that grants obscene amounts
of experience for certain formulas. Those formulas are the ones that create
items with a high fixed level, because those items are pretty worthless
otherwise. Dust of Repelling Undead, for example, is level 30.
The fix I implemented here is to base the chance of success largely on the
level of the product, so it's very difficult to produce something like Dust
of Repelling Undead, and therefore worth the extra experience. The chance of
success is now based on the following factors:
1) level of product
2) number of ingredients in formula
3) rarity of formula as listed in "formulae" data file
4) number of batches being made
5) Alchemy skill (if present)
6) enchantment of cauldron
7) luck
Show difference between Revision 1.4 and 1.5
Revision 1.4cvs 1999/08/02 19:33:17 +12 -0
Changes allowing for a keycode in the alchemical recipes.
Now, if the formula has a field called 'keycode xxxx',
the person must possess a MARK with 'slaying xxxx'
in order to execute the formula successfully.
Show difference between Revision 1.3 and 1.4
Revision 1.3cvs 1999/07/30 00:05:28 +0 -3
Modified a comment so that it is accurate.
Show difference between Revision 1.2 and 1.3
Revision 1.2cvs 1999/07/30 00:02:07 +1 -1
little modification so that cursed items cannot
be made at low level: instead you get slag or nothing.
Show difference between Revision 1.1 and 1.2
Revision 1.1uid200 1999/04/02 13:10:03 None
Initial revision
First version
Revision 1.1.1.1uid200 1999/04/02 13:10:03 +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:21