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.54 by root, Fri Apr 30 20:43:18 2010 UTC vs.
Revision 1.55 by root, Thu May 6 22:08:07 2010 UTC

574 * danger. Note that we assume that we have had the caster ready the alchemy 574 * danger. Note that we assume that we have had the caster ready the alchemy
575 * skill *before* this routine is called. (no longer auto-readies that skill) 575 * skill *before* this routine is called. (no longer auto-readies that skill)
576 * -b.t. 576 * -b.t.
577 */ 577 */
578static int 578static int
579calc_alch_danger (object *caster, object *cauldron, recipe *rp) 579calc_alch_danger (object *caster, object *cauldron, object *skill, recipe *rp)
580{ 580{
581 object *item;
582 char name[MAX_BUF];
583 int danger = 0, nrofi = 0; 581 int danger = 0;
584 582
585 /* Knowing alchemy skill reduces yer risk */ 583 /* Knowing alchemy skill reduces yer risk */
586 danger -= caster->chosen_skill ? caster->chosen_skill->level : caster->level; 584 danger -= skill->level;
587
588 if (!caster->chosen_skill)
589 LOG (llevError | logBacktrace, "calc_alch_danger called without a chosen skill, caster %s, cauldron %s\n",
590 caster->debug_desc (), cauldron->debug_desc ());
591 585
592 /* better cauldrons reduce risk */ 586 /* better cauldrons reduce risk */
593 danger -= cauldron->magic; 587 danger -= cauldron->magic;
594 588
595 /* Higher Int, lower the risk */ 589 /* Higher Int, lower the risk */
597 591
598 /* Ingredients. Longer names usually mean rarer stuff. 592 /* Ingredients. Longer names usually mean rarer stuff.
599 * Thus the backfire is worse. Also, more ingredients 593 * Thus the backfire is worse. Also, more ingredients
600 * means we are attempting a more powerfull potion, 594 * means we are attempting a more powerfull potion,
601 * and thus the backfire will be worse. */ 595 * and thus the backfire will be worse. */
602 for (item = cauldron->inv; item; item = item->below) 596 for (object *item = cauldron->inv; item; item = item->below)
603 { 597 {
604 assign (name, item->name); 598 const char *name = item->title
605 if (item->title)
606 sprintf (name, "%s %s", &item->name, &item->title); 599 ? format ("%s %s", &item->name, &item->title)
600 : &item->name;
601
607 danger += (strtoint (name) / 1000) + 3; 602 danger += strtoint (name) / 1000 + 3;
608 nrofi++;
609 } 603 }
610 604
611 if (rp == NULL) 605 if (!rp)
612 danger += 110; 606 danger += 110;
613 else 607 else
614 danger += rp->diff * 3; 608 danger += rp->diff * 3;
615 609
616 /* Using a bad device is *majorly* stupid */ 610 /* Using a bad device is *majorly* stupid */
617 if (cauldron->flag [FLAG_CURSED]) 611 if (cauldron->flag [FLAG_CURSED]) danger += 80;
618 danger += 80;
619 if (cauldron->flag [FLAG_DAMNED]) 612 if (cauldron->flag [FLAG_DAMNED]) danger += 200;
620 danger += 200;
621 613
622#ifdef ALCHEMY_DEBUG 614#ifdef ALCHEMY_DEBUG
623 LOG (llevDebug, "calc_alch_danger() returned danger=%d\n", danger); 615 LOG (llevDebug, "calc_alch_danger() returned danger=%d\n", danger);
624#endif 616#endif
625 617
928 } 920 }
929 } 921 }
930 } 922 }
931 923
932 /* if we get here, we failed!! */ 924 /* if we get here, we failed!! */
933 alchemy_failure_effect (caster, cauldron, rp, calc_alch_danger (caster, cauldron, rp)); 925 alchemy_failure_effect (caster, cauldron, rp, calc_alch_danger (caster, cauldron, skill, rp));
934} 926}
935 927

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines