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.7 by root, Wed Sep 13 23:39:27 2006 UTC vs.
Revision 1.13 by root, Tue Dec 12 21:39:56 2006 UTC

16 16
17 You should have received a copy of the GNU General Public License 17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software 18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 20
21 The authors can be reached via e-mail at crossfire-devel@real-time.com 21 The authors can be reached via e-mail at <crossfire@schmorp.de>
22*/ 22*/
23 23
24 24
25/* This file contains code relevant to the BOOKS hack -- designed 25/* This file contains code relevant to the BOOKS hack -- designed
26 * to allow randomly occuring messages in non-magical texts. 26 * to allow randomly occuring messages in non-magical texts.
815 archetype *at; 815 archetype *at;
816 static int did_init_mon_info = 0; 816 static int did_init_mon_info = 0;
817 817
818 if (did_init_mon_info) 818 if (did_init_mon_info)
819 return; 819 return;
820
820 did_init_mon_info = 1; 821 did_init_mon_info = 1;
821 822
822 823
823 for (at = first_archetype; at != NULL; at = at->next) 824 for (at = first_archetype; at != NULL; at = at->next)
824 { 825 {
825 if (QUERY_FLAG (&at->clone, FLAG_MONSTER) && (!QUERY_FLAG (&at->clone, FLAG_CHANGING) || QUERY_FLAG (&at->clone, FLAG_UNAGGRESSIVE))) 826 if (QUERY_FLAG (&at->clone, FLAG_MONSTER) && (!QUERY_FLAG (&at->clone, FLAG_CHANGING) || QUERY_FLAG (&at->clone, FLAG_UNAGGRESSIVE)))
826 { 827 {
827 objectlink *mon = (objectlink *) malloc (sizeof (objectlink)); 828 objectlink *mon = new objectlink;
828 829
829 mon->ob = &at->clone; 830 mon->ob = &at->clone;
830 mon->id = nrofmon;
831 mon->next = first_mon_info; 831 mon->next = first_mon_info;
832 first_mon_info = mon; 832 first_mon_info = mon;
833 nrofmon++; 833 nrofmon++;
834 } 834 }
835 } 835 }
836
836 LOG (llevDebug, "init_mon_info() got %d monsters\n", nrofmon); 837 LOG (llevDebug, "init_mon_info() got %d monsters\n", nrofmon);
837} 838}
838 839
839 840
840/* init_readable() - initialize linked lists utilized by 841/* init_readable() - initialize linked lists utilized by
849{ 850{
850 static int did_this; 851 static int did_this;
851 852
852 if (did_this) 853 if (did_this)
853 return; 854 return;
855
854 did_this = 1; 856 did_this = 1;
855 857
856 LOG (llevDebug, "Initializing reading data..."); 858 LOG (llevDebug, "Initializing reading data...");
857 init_msgfile (); 859 init_msgfile ();
858 init_book_archive (); 860 init_book_archive ();
1097 1099
1098 /* alter book properties */ 1100 /* alter book properties */
1099 if ((tmpbook = get_archetype (t->archname)) != NULL) 1101 if ((tmpbook = get_archetype (t->archname)) != NULL)
1100 { 1102 {
1101 tmpbook->msg = book->msg; 1103 tmpbook->msg = book->msg;
1102 copy_object (tmpbook, book); 1104 tmpbook->copy_to (book);
1103 free_object (tmpbook); 1105 tmpbook->destroy ();
1104 } 1106 }
1105 1107
1106 book->title = t->authour; 1108 book->title = t->authour;
1107 book->name = t->name; 1109 book->name = t->name;
1108 book->level = t->level; 1110 book->level = t->level;
1465 * level is kinda high */ 1467 * level is kinda high */
1466 if (art->item->msg && (RANDOM () % 4 + 1) < level && !((strlen (art->item->msg) + strlen (buf)) > BOOK_BUF)) 1468 if (art->item->msg && (RANDOM () % 4 + 1) < level && !((strlen (art->item->msg) + strlen (buf)) > BOOK_BUF))
1467 strcat (buf, art->item->msg); 1469 strcat (buf, art->item->msg);
1468 1470
1469 /* properties of the artifact */ 1471 /* properties of the artifact */
1470 tmp = get_object (); 1472 tmp = object::create ();
1471 add_abilities (tmp, art->item); 1473 add_abilities (tmp, art->item);
1472 tmp->type = type; 1474 tmp->type = type;
1473 SET_FLAG (tmp, FLAG_IDENTIFIED); 1475 SET_FLAG (tmp, FLAG_IDENTIFIED);
1474 if ((ch = describe_item (tmp, NULL)) != NULL && strlen (ch) > 1) 1476 if ((ch = describe_item (tmp, NULL)) != NULL && strlen (ch) > 1)
1475 sprintf (buf, "%s Properties of this artifact include: \n %s \n", buf, ch); 1477 sprintf (buf, "%s Properties of this artifact include: \n %s \n", buf, ch);
1476 free_object (tmp); 1478 tmp->destroy ();
1477 /* add the buf if it will fit */ 1479 /* add the buf if it will fit */
1478 if (!book_overflow (retbuf, buf, booksize)) 1480 if (!book_overflow (retbuf, buf, booksize))
1479 strcat (retbuf, buf); 1481 strcat (retbuf, buf);
1480 else 1482 else
1481 break; 1483 break;
1611 archetype *at; 1613 archetype *at;
1612 1614
1613 /* preamble */ 1615 /* preamble */
1614 sprintf (retbuf, "Herein is described a project using %s: \n", formula->skill ? &formula->skill : "an unknown skill"); 1616 sprintf (retbuf, "Herein is described a project using %s: \n", formula->skill ? &formula->skill : "an unknown skill");
1615 1617
1616 if ((at = find_archetype (op_name)) != (archetype *) NULL) 1618 if ((at = archetype::find (op_name)) != (archetype *) NULL)
1617 op_name = at->clone.name; 1619 op_name = at->clone.name;
1618 else 1620 else
1619 LOG (llevError, "formula_msg() can't find arch %s for formula.\n", op_name); 1621 LOG (llevError, "formula_msg() can't find arch %s for formula.\n", op_name);
1620 1622
1621 /* item name */ 1623 /* item name */
1650 if (formula->ingred != NULL) 1652 if (formula->ingred != NULL)
1651 { 1653 {
1652 linked_char *next; 1654 linked_char *next;
1653 archetype *at; 1655 archetype *at;
1654 1656
1655 at = find_archetype (formula->cauldron); 1657 at = archetype::find (formula->cauldron);
1656 1658
1657 sprintf (retbuf + strlen (retbuf), 1659 sprintf (retbuf + strlen (retbuf),
1658 " may be made at %s using the following ingredients:\n", at ? query_name (&at->clone) : "an unknown place"); 1660 " may be made at %s using the following ingredients:\n", at ? query_name (&at->clone) : "an unknown place");
1659 1661
1660 for (next = formula->ingred; next != NULL; next = next->next) 1662 for (next = formula->ingred; next != NULL; next = next->next)
1978 strcpy (msgbuf, msgfile_msg (level, book_buf_size)); 1980 strcpy (msgbuf, msgfile_msg (level, book_buf_size));
1979 break; 1981 break;
1980 } 1982 }
1981 1983
1982 strcat (msgbuf, "\n"); /* safety -- we get ugly map saves/crashes w/o this */ 1984 strcat (msgbuf, "\n"); /* safety -- we get ugly map saves/crashes w/o this */
1985
1983 if (strlen (msgbuf) > 1) 1986 if (strlen (msgbuf) > 1)
1984 { 1987 {
1985 book->msg = msgbuf; 1988 book->msg = msgbuf;
1986 /* lets give the "book" a new name, which may be a compound word */ 1989 /* lets give the "book" a new name, which may be a compound word */
1987 change_book (book, msg_type); 1990 change_book (book, msg_type);
2016 delete title1; 2019 delete title1;
2017 } 2020 }
2018 2021
2019 delete tlist; 2022 delete tlist;
2020 } 2023 }
2024
2021 for (lmsg = first_msg; lmsg; lmsg = nextmsg) 2025 for (lmsg = first_msg; lmsg; lmsg = nextmsg)
2022 { 2026 {
2023 nextmsg = lmsg->next; 2027 nextmsg = lmsg->next;
2024 delete lmsg; 2028 delete lmsg;
2025 } 2029 }
2030
2026 for (monlink = first_mon_info; monlink; monlink = nextmon) 2031 for (monlink = first_mon_info; monlink; monlink = nextmon)
2027 { 2032 {
2028 nextmon = monlink->next; 2033 nextmon = monlink->next;
2029 free (monlink); 2034 delete monlink;
2030 } 2035 }
2031} 2036}
2032 2037
2033 2038
2034/***************************************************************************** 2039/*****************************************************************************

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines