… | |
… | |
422 | while (isdigit (*name)) |
422 | while (isdigit (*name)) |
423 | { |
423 | { |
424 | mult = 10 * mult + (*name - '0'); |
424 | mult = 10 * mult + (*name - '0'); |
425 | name++; |
425 | name++; |
426 | } |
426 | } |
|
|
427 | |
427 | if (mult > 0) |
428 | if (mult > 0) |
428 | name++; |
429 | name++; |
429 | else |
430 | else |
430 | mult = 1; |
431 | mult = 1; |
|
|
432 | |
431 | /* first, try to match the name of an archetype */ |
433 | /* first, try to match the name of an archetype */ |
432 | for (at = first_archetype; at != NULL; at = at->next) |
434 | for (at = first_archetype; at != NULL; at = at->next) |
433 | { |
435 | { |
434 | if (at->clone.title != NULL) |
436 | if (at->clone.title != NULL) |
435 | { |
437 | { |
… | |
… | |
439 | return mult * at->clone.value; |
441 | return mult * at->clone.value; |
440 | } |
442 | } |
441 | if (!strcasecmp (at->clone.name, name)) |
443 | if (!strcasecmp (at->clone.name, name)) |
442 | return mult * at->clone.value; |
444 | return mult * at->clone.value; |
443 | } |
445 | } |
|
|
446 | |
444 | /* second, try to match an artifact ("arch of something") */ |
447 | /* second, try to match an artifact ("arch of something") */ |
445 | cp = strstr (name, " of "); |
448 | cp = strstr (name, " of "); |
446 | if (cp != NULL) |
449 | if (cp != NULL) |
447 | { |
450 | { |
448 | strcpy (part1, name); |
451 | strcpy (part1, name); |
… | |
… | |
462 | if (!strcasecmp (art->item->name, part2)) |
465 | if (!strcasecmp (art->item->name, part2)) |
463 | return mult * at->clone.value * art->item->value; |
466 | return mult * at->clone.value * art->item->value; |
464 | } |
467 | } |
465 | } |
468 | } |
466 | } |
469 | } |
|
|
470 | |
467 | /* third, try to match a body part ("arch's something") */ |
471 | /* third, try to match a body part ("arch's something") */ |
468 | cp = strstr (name, "'s "); |
472 | cp = strstr (name, "'s "); |
469 | if (cp != NULL) |
473 | if (cp) |
470 | { |
474 | { |
471 | strcpy (part1, name); |
475 | strcpy (part1, name); |
472 | part1[cp - name] = '\0'; |
476 | part1[cp - name] = '\0'; |
473 | strcpy (part2, cp + 3); |
477 | strcpy (part2, cp + 3); |
474 | /* examine all archetypes matching the first part of the name */ |
478 | /* examine all archetypes matching the first part of the name */ |
… | |
… | |
481 | if (at2) |
485 | if (at2) |
482 | return mult * at2->clone.value * isqrt (at->clone.level * 2); |
486 | return mult * at2->clone.value * isqrt (at->clone.level * 2); |
483 | } |
487 | } |
484 | } |
488 | } |
485 | } |
489 | } |
|
|
490 | |
486 | /* failed to find any matching items -- formula should be checked */ |
491 | /* failed to find any matching items -- formula should be checked */ |
487 | return -1; |
492 | return -1; |
488 | } |
493 | } |
489 | |
494 | |
490 | /* code copied from dump_alchemy() and modified by Raphael Quinet */ |
495 | /* code copied from dump_alchemy() and modified by Raphael Quinet */ |