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

Comparing deliantra/server/common/readable.C (file contents):
Revision 1.24 by root, Thu May 24 03:33:28 2007 UTC vs.
Revision 1.27 by root, Mon Jun 4 13:04:00 2007 UTC

1/* 1/*
2 * CrossFire, A Multiplayer game 2 * This file is part of Crossfire TRT, the Multiplayer Online Role Playing Game.
3 * 3 *
4 * Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team 4 * Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Crossfire TRT team
5 * Copyright (C) 2002 Mark Wedel & Crossfire Development Team 5 * Copyright (©) 2002,2007 Mark Wedel & Crossfire Development Team
6 * Copyright (C) 1992 Frank Tore Johansen 6 * Copyright (©) 1992,2007 Frank Tore Johansen
7 * 7 *
8 * This program is free software; you can redistribute it and/or modify 8 * Crossfire TRT is free software; you can redistribute it and/or modify it
9 * it under the terms of the GNU General Public License as published by 9 * under the terms of the GNU General Public License as published by the Free
10 * the Free Software Foundation; either version 2 of the License, or 10 * Software Foundation; either version 2 of the License, or (at your option)
11 * (at your option) any later version. 11 * any later version.
12 * 12 *
13 * This program is distributed in the hope that it will be useful, 13 * This program is distributed in the hope that it will be useful, but
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16 * GNU General Public License for more details. 16 * for more details.
17 * 17 *
18 * You should have received a copy of the GNU General Public License 18 * You should have received a copy of the GNU General Public License along
19 * along with this program; if not, write to the Free Software 19 * with Crossfire TRT; if not, write to the Free Software Foundation, Inc. 51
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 * 21 *
22 * The authors can be reached via e-mail at <crossfire@schmorp.de> 22 * The authors can be reached via e-mail to <crossfire@schmorp.de>
23 */ 23 */
24
25 24
26/* This file contains code relevant to the BOOKS hack -- designed 25/* This file contains code relevant to the BOOKS hack -- designed
27 * to allow randomly occuring messages in non-magical texts. 26 * to allow randomly occuring messages in non-magical texts.
28 */ 27 */
29 28
749 if (did_init_mon_info) 748 if (did_init_mon_info)
750 return; 749 return;
751 750
752 did_init_mon_info = 1; 751 did_init_mon_info = 1;
753 752
754 753 for_all_archetypes (at)
755 for (at = first_archetype; at != NULL; at = at->next)
756 { 754 {
757 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)))
758 { 756 {
759 objectlink *mon = new objectlink; 757 objectlink *mon = new objectlink;
760 758
761 mon->ob = &at->clone; 759 mon->ob = at;
762 mon->next = first_mon_info; 760 mon->next = first_mon_info;
763 first_mon_info = mon; 761 first_mon_info = mon;
764 nrofmon++; 762 nrofmon++;
765 } 763 }
766 } 764 }
970 t = get_empty_book (); 968 t = get_empty_book ();
971 t->name = book->name; 969 t->name = book->name;
972 t->authour = book->title; 970 t->authour = book->title;
973 t->size = strlen (book->msg); 971 t->size = strlen (book->msg);
974 t->msg_index = strtoint (book->msg); 972 t->msg_index = strtoint (book->msg);
975 t->archname = book->arch->name; 973 t->archname = book->arch->archname;
976 t->level = book->level; 974 t->level = book->level;
977 975
978 t->next = tl->first_book; 976 t->next = tl->first_book;
979 tl->first_book = t; 977 tl->first_book = t;
980 tl->number++; 978 tl->number++;
1443 if (path == -1) 1441 if (path == -1)
1444 strcat (retbuf, "having no known spell path.\n"); 1442 strcat (retbuf, "having no known spell path.\n");
1445 else 1443 else
1446 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]);
1447 1445
1448 for (at = first_archetype; at != NULL; at = at->next) 1446 for_all_archetypes (at)
1449 { 1447 {
1450 /* Determine if this is an appropriate spell. Must 1448 /* Determine if this is an appropriate spell. Must
1451 * be of matching path, must be of appropriate type (prayer 1449 * be of matching path, must be of appropriate type (prayer
1452 * or not), and must be within the valid level range. 1450 * or not), and must be within the valid level range.
1453 */ 1451 */
1454 if (at->clone.type == SPELL && at->clone.path_attuned & pnum && 1452 if (at->type == SPELL && at->path_attuned & pnum &&
1455 ((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)))
1456 { 1454 {
1457 assign (tmpbuf, at->clone.name); 1455 assign (tmpbuf, at->object::name);
1458 1456
1459 if (book_overflow (retbuf, tmpbuf, booksize)) 1457 if (book_overflow (retbuf, tmpbuf, booksize))
1460 break; 1458 break;
1461 else 1459 else
1462 { 1460 {
1536 1534
1537 /* preamble */ 1535 /* preamble */
1538 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");
1539 1537
1540 if ((at = archetype::find (op_name)) != (archetype *) NULL) 1538 if ((at = archetype::find (op_name)) != (archetype *) NULL)
1541 op_name = at->clone.name; 1539 op_name = at->object::name;
1542 else 1540 else
1543 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);
1544 1542
1545 /* item name */ 1543 /* item name */
1546 if (strcmp (formula->title, "NONE")) 1544 if (strcmp (formula->title, "NONE"))
1556 } 1554 }
1557 else 1555 else
1558 { 1556 {
1559 sprintf (retbuf, "%sThe %s", retbuf, op_name); 1557 sprintf (retbuf, "%sThe %s", retbuf, op_name);
1560 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);
1561 if (at->clone.title) 1559 if (at->title)
1562 { 1560 {
1563 strcat (retbuf, " "); 1561 strcat (retbuf, " ");
1564 strcat (retbuf, at->clone.title); 1562 strcat (retbuf, at->title);
1565 strcat (title, " "); 1563 strcat (title, " ");
1566 strcat (title, at->clone.title); 1564 strcat (title, at->title);
1567 } 1565 }
1568 } 1566 }
1569 /* Lets name the book something meaningful ! */ 1567 /* Lets name the book something meaningful ! */
1570 book->name = title; 1568 book->name = title;
1571 book->title = NULL; 1569 book->title = NULL;
1577 archetype *at; 1575 archetype *at;
1578 1576
1579 at = archetype::find (formula->cauldron); 1577 at = archetype::find (formula->cauldron);
1580 1578
1581 sprintf (retbuf + strlen (retbuf), 1579 sprintf (retbuf + strlen (retbuf),
1582 " 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");
1583 1581
1584 for (next = formula->ingred; next != NULL; next = next->next) 1582 for (next = formula->ingred; next != NULL; next = next->next)
1585 { 1583 {
1586 strcat (retbuf, next->name); 1584 strcat (retbuf, next->name);
1587 strcat (retbuf, "\n"); 1585 strcat (retbuf, "\n");

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines