Protocol: | pserver | User: | anonymous |
Machine: | crossfire.cvs.sourceforge.net | CVSROOT: | /cvsroot/crossfire |
Filename: alchemy.c | |||
Revision 1.30 | qal21 | 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.29 | ryo_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.28 | ryo_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.27 | tchize | 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.26 | akirschbaum | 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.25 | mwedel | 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.24 | akirschbaum | 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.23 | akirschbaum | 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.22 | ryo_saeba | 2005/03/09 15:20:35 | +34 -20 |
Tweak comments for doxygen | |||
Show difference between Revision 1.21 and 1.22 | |||
Revision 1.21 | akirschbaum | 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.20 | mwedel | 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.19 | garbled | 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.18 | garbled | 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.17 | garbled | 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.16 | garbled | 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.15 | garbled | 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.14 | garbled | 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.13 | garbled | 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.12 | mwedel | 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.11 | mwedel | 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.10 | garbled | 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.9 | garbled | 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.8 | mwedel | 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.7 | jec | 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.6 | damn | 1999/09/17 13:37:03 | +1 -5 |
- minor cleanup | |||
Show difference between Revision 1.5 and 1.6 | |||
Revision 1.5 | cvs | 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.4 | cvs | 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.3 | cvs | 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.2 | cvs | 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.1 | uid200 | 1999/04/02 13:10:03 | None |
Initial revision | |||
First version | |||
Revision 1.1.1.1 | uid200 | 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 |