ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/server/alchemy.C
(Generate patch)

Comparing deliantra/server/server/alchemy.C (file contents):
Revision 1.51 by root, Sun Apr 11 00:34:06 2010 UTC vs.
Revision 1.53 by root, Wed Apr 28 19:59:06 2010 UTC

76 * ok, but the possibility of duplicate hashes is certainly possible - msw 76 * ok, but the possibility of duplicate hashes is certainly possible - msw
77 */ 77 */
78static int 78static int
79content_recipe_value (object *op) 79content_recipe_value (object *op)
80{ 80{
81 char name[MAX_BUF];
82 object *tmp = op->inv; 81 object *tmp = op->inv;
83 int tval = 0, formula = 0; 82 int formula = 0;
84 83
85 while (tmp) 84 while (tmp)
86 { 85 {
87 tval = 0; 86 const char *name = tmp->title
88 assign (name, tmp->name);
89 if (tmp->title)
90 sprintf (name, "%s %s", &tmp->name, &tmp->title); 87 ? (const char *)format ("%s %s", &tmp->name, &tmp->title)
88 : tmp->name;
89
91 tval = (strtoint (name) * (tmp->nrof ? tmp->nrof : 1)); 90 int tval = strtoint (name) * tmp->number_of ();
92#ifdef ALCHEMY_DEBUG 91#ifdef ALCHEMY_DEBUG
93 LOG (llevDebug, "Got ingredient %d %s(%d)\n", tmp->nrof ? tmp->nrof : 1, name, tval); 92 LOG (llevDebug, "Got ingredient %d %s(%d)\n", tmp->nrof ? tmp->nrof : 1, name, tval);
94#endif 93#endif
95 formula += tval; 94 formula += tval;
96 tmp = tmp->below; 95 tmp = tmp->below;
97 } 96 }
98#ifdef ALCHEMY_DEBUG 97#ifdef ALCHEMY_DEBUG
99 LOG (llevDebug, " Formula value=%d\n", formula); 98 LOG (llevDebug, " Formula value=%d\n", formula);
100#endif 99#endif
100
101 return formula; 101 return formula;
102} 102}
103 103
104/** 104/**
105 * Returns total number of items in op 105 * Returns total number of items in op
885 object *tmp; 885 object *tmp;
886 int attempt_shadow_alchemy; 886 int attempt_shadow_alchemy;
887 887
888 ave_chance = fl->total_chance / (float)fl->number; 888 ave_chance = fl->total_chance / (float)fl->number;
889 889
890 ability += (int) (skill->level * ((4.0 + cauldron->magic) / 4.0)); 890 ability += skill->level * ((4.0 + cauldron->magic) / 4.0);
891 891
892 /* determine value of ingredients */ 892 /* determine value of ingredients */
893 value_ingredients = 0; 893 value_ingredients = 0;
894 for (tmp = cauldron->inv; tmp; tmp = tmp->below) 894 for (tmp = cauldron->inv; tmp; tmp = tmp->below)
895 value_ingredients += query_cost (tmp, NULL, F_TRUE); 895 value_ingredients += query_cost (tmp, NULL, F_TRUE);
916 "Forcing failure for shadow alchemy recipe because price of ingredients (%llu) is less than price of result (%llu).\n", 916 "Forcing failure for shadow alchemy recipe because price of ingredients (%llu) is less than price of result (%llu).\n",
917 value_ingredients, value_item); 917 value_ingredients, value_item);
918#endif 918#endif
919 } 919 }
920 /* roll the dice */ 920 /* roll the dice */
921 else if ((float) (random_roll (0, 101, caster, PREFER_LOW)) <= 100.0 * success_chance) 921 else if (random_roll (0, 101, caster, PREFER_LOW) <= 100.0 * success_chance)
922 { 922 {
923 change_exp (caster, rp->exp, rp->skill, SK_EXP_NONE); 923 change_exp (caster, rp->exp, rp->skill, SK_EXP_NONE);
924 924
925 // let alchemy consume some time, so that exploits are less easy 925 // let alchemy consume some time, so that exploits are less easy
926 caster->speed_left -= 1.0; 926 caster->speed_left -= 1.0;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines