… | |
… | |
748 | if (did_init_mon_info) |
748 | if (did_init_mon_info) |
749 | return; |
749 | return; |
750 | |
750 | |
751 | did_init_mon_info = 1; |
751 | did_init_mon_info = 1; |
752 | |
752 | |
753 | |
753 | for_all_archetypes (at) |
754 | for (at = first_archetype; at != NULL; at = at->next) |
|
|
755 | { |
754 | { |
756 | if (QUERY_FLAG (&at->clone, FLAG_MONSTER) && (!QUERY_FLAG (&at->clone, FLAG_CHANGING) || QUERY_FLAG (&at->clone, FLAG_UNAGGRESSIVE))) |
755 | if (QUERY_FLAG (at, FLAG_MONSTER) && (!QUERY_FLAG (at, FLAG_CHANGING) || QUERY_FLAG (at, FLAG_UNAGGRESSIVE))) |
757 | { |
756 | { |
758 | objectlink *mon = new objectlink; |
757 | objectlink *mon = new objectlink; |
759 | |
758 | |
760 | mon->ob = &at->clone; |
759 | mon->ob = at; |
761 | mon->next = first_mon_info; |
760 | mon->next = first_mon_info; |
762 | first_mon_info = mon; |
761 | first_mon_info = mon; |
763 | nrofmon++; |
762 | nrofmon++; |
764 | } |
763 | } |
765 | } |
764 | } |
… | |
… | |
1442 | if (path == -1) |
1441 | if (path == -1) |
1443 | strcat (retbuf, "having no known spell path.\n"); |
1442 | strcat (retbuf, "having no known spell path.\n"); |
1444 | else |
1443 | else |
1445 | sprintf (retbuf, "%sbelonging to the path of %s:\n", retbuf, spellpathnames[path]); |
1444 | sprintf (retbuf, "%sbelonging to the path of %s:\n", retbuf, spellpathnames[path]); |
1446 | |
1445 | |
1447 | for (at = first_archetype; at != NULL; at = at->next) |
1446 | for_all_archetypes (at) |
1448 | { |
1447 | { |
1449 | /* Determine if this is an appropriate spell. Must |
1448 | /* Determine if this is an appropriate spell. Must |
1450 | * be of matching path, must be of appropriate type (prayer |
1449 | * be of matching path, must be of appropriate type (prayer |
1451 | * or not), and must be within the valid level range. |
1450 | * or not), and must be within the valid level range. |
1452 | */ |
1451 | */ |
1453 | if (at->clone.type == SPELL && at->clone.path_attuned & pnum && |
1452 | if (at->type == SPELL && at->path_attuned & pnum && |
1454 | ((at->clone.stats.grace && prayers) || (at->clone.stats.sp && !prayers)) && (at->clone.level < (level * 8))) |
1453 | ((at->stats.grace && prayers) || (at->stats.sp && !prayers)) && (at->level < (level * 8))) |
1455 | { |
1454 | { |
1456 | assign (tmpbuf, at->clone.name); |
1455 | assign (tmpbuf, at->object::name); |
1457 | |
1456 | |
1458 | if (book_overflow (retbuf, tmpbuf, booksize)) |
1457 | if (book_overflow (retbuf, tmpbuf, booksize)) |
1459 | break; |
1458 | break; |
1460 | else |
1459 | else |
1461 | { |
1460 | { |
… | |
… | |
1535 | |
1534 | |
1536 | /* preamble */ |
1535 | /* preamble */ |
1537 | sprintf (retbuf, "Herein is described a project using %s: \n", formula->skill ? &formula->skill : "an unknown skill"); |
1536 | sprintf (retbuf, "Herein is described a project using %s: \n", formula->skill ? &formula->skill : "an unknown skill"); |
1538 | |
1537 | |
1539 | if ((at = archetype::find (op_name)) != (archetype *) NULL) |
1538 | if ((at = archetype::find (op_name)) != (archetype *) NULL) |
1540 | op_name = at->clone.name; |
1539 | op_name = at->object::name; |
1541 | else |
1540 | else |
1542 | LOG (llevError, "formula_msg() can't find arch %s for formula.\n", op_name); |
1541 | LOG (llevError, "formula_msg() can't find arch %s for formula.\n", op_name); |
1543 | |
1542 | |
1544 | /* item name */ |
1543 | /* item name */ |
1545 | if (strcmp (formula->title, "NONE")) |
1544 | if (strcmp (formula->title, "NONE")) |
… | |
… | |
1555 | } |
1554 | } |
1556 | else |
1555 | else |
1557 | { |
1556 | { |
1558 | sprintf (retbuf, "%sThe %s", retbuf, op_name); |
1557 | sprintf (retbuf, "%sThe %s", retbuf, op_name); |
1559 | sprintf (title, "%s: %s", formula_book_name[RANDOM () % (sizeof (formula_book_name) / sizeof (char *))], op_name); |
1558 | sprintf (title, "%s: %s", formula_book_name[RANDOM () % (sizeof (formula_book_name) / sizeof (char *))], op_name); |
1560 | if (at->clone.title) |
1559 | if (at->title) |
1561 | { |
1560 | { |
1562 | strcat (retbuf, " "); |
1561 | strcat (retbuf, " "); |
1563 | strcat (retbuf, at->clone.title); |
1562 | strcat (retbuf, at->title); |
1564 | strcat (title, " "); |
1563 | strcat (title, " "); |
1565 | strcat (title, at->clone.title); |
1564 | strcat (title, at->title); |
1566 | } |
1565 | } |
1567 | } |
1566 | } |
1568 | /* Lets name the book something meaningful ! */ |
1567 | /* Lets name the book something meaningful ! */ |
1569 | book->name = title; |
1568 | book->name = title; |
1570 | book->title = NULL; |
1569 | book->title = NULL; |
… | |
… | |
1576 | archetype *at; |
1575 | archetype *at; |
1577 | |
1576 | |
1578 | at = archetype::find (formula->cauldron); |
1577 | at = archetype::find (formula->cauldron); |
1579 | |
1578 | |
1580 | sprintf (retbuf + strlen (retbuf), |
1579 | sprintf (retbuf + strlen (retbuf), |
1581 | " may be made at %s using the following ingredients:\n", at ? query_name (&at->clone) : "an unknown place"); |
1580 | " may be made at %s using the following ingredients:\n", at ? query_name (at) : "an unknown place"); |
1582 | |
1581 | |
1583 | for (next = formula->ingred; next != NULL; next = next->next) |
1582 | for (next = formula->ingred; next != NULL; next = next->next) |
1584 | { |
1583 | { |
1585 | strcat (retbuf, next->name); |
1584 | strcat (retbuf, next->name); |
1586 | strcat (retbuf, "\n"); |
1585 | strcat (retbuf, "\n"); |