--- deliantra/server/common/readable.C 2007/06/04 12:19:08 1.26
+++ deliantra/server/common/readable.C 2007/07/10 06:05:55 1.31
@@ -1,23 +1,22 @@
/*
- * This file is part of Crossfire TRT, the Multiplayer Online Role Playing Game.
+ * This file is part of Crossfire TRT, the Roguelike Realtime MORPG.
*
* Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Crossfire TRT team
* Copyright (©) 2002,2007 Mark Wedel & Crossfire Development Team
* Copyright (©) 1992,2007 Frank Tore Johansen
*
- * Crossfire TRT is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
+ * Crossfire TRT is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
*
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * for more details.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License along
- * with Crossfire TRT; if not, write to the Free Software Foundation, Inc. 51
- * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
*
* The authors can be reached via e-mail to
*/
@@ -437,68 +436,68 @@
* subtype paramater in arch files!
*/
static readable_message_type readable_message_types[] = {
- /*subtype 0 */ {0, 0},
+ /*subtype 0 */ {0, 0, "info"},
/* book messages subtypes */
- /*subtype 1 */ {MSG_TYPE_BOOK, MSG_TYPE_BOOK_CLASP_1},
- {MSG_TYPE_BOOK, MSG_TYPE_BOOK_CLASP_2},
- {MSG_TYPE_BOOK, MSG_TYPE_BOOK_ELEGANT_1},
- {MSG_TYPE_BOOK, MSG_TYPE_BOOK_ELEGANT_2},
- {MSG_TYPE_BOOK, MSG_TYPE_BOOK_QUARTO_1},
- {MSG_TYPE_BOOK, MSG_TYPE_BOOK_QUARTO_2},
- {MSG_TYPE_BOOK, MSG_TYPE_BOOK_SPELL_EVOKER},
- {MSG_TYPE_BOOK, MSG_TYPE_BOOK_SPELL_PRAYER},
- {MSG_TYPE_BOOK, MSG_TYPE_BOOK_SPELL_PYRO},
- /*subtype 10 */ {MSG_TYPE_BOOK, MSG_TYPE_BOOK_SPELL_SORCERER},
- {MSG_TYPE_BOOK, MSG_TYPE_BOOK_SPELL_SUMMONER},
+ /*subtype 1 */ {MSG_TYPE_BOOK, MSG_TYPE_BOOK_CLASP_1, "readable-book-clasp-1"},
+ {MSG_TYPE_BOOK, MSG_TYPE_BOOK_CLASP_2, "readable-book-clasp-2"},
+ {MSG_TYPE_BOOK, MSG_TYPE_BOOK_ELEGANT_1, "readable-book-elegant-1"},
+ {MSG_TYPE_BOOK, MSG_TYPE_BOOK_ELEGANT_2, "readable-book-elegant-2"},
+ {MSG_TYPE_BOOK, MSG_TYPE_BOOK_QUARTO_1, "readable-book-quarto-1"},
+ {MSG_TYPE_BOOK, MSG_TYPE_BOOK_QUARTO_2, "readable-book-quarto-2"},
+ {MSG_TYPE_BOOK, MSG_TYPE_BOOK_SPELL_EVOKER, "readable-book-spell-evocation"},
+ {MSG_TYPE_BOOK, MSG_TYPE_BOOK_SPELL_PRAYER, "readable-book-spell-praying"},
+ {MSG_TYPE_BOOK, MSG_TYPE_BOOK_SPELL_PYRO, "readable-book-spell-pyromancy"},
+ /*subtype 10 */ {MSG_TYPE_BOOK, MSG_TYPE_BOOK_SPELL_SORCERER, "readable-book-spell-sorcery"},
+ {MSG_TYPE_BOOK, MSG_TYPE_BOOK_SPELL_SUMMONER, "readable-book-spell-summoning"},
/* card messages subtypes */
- {MSG_TYPE_CARD, MSG_TYPE_CARD_SIMPLE_1},
- {MSG_TYPE_CARD, MSG_TYPE_CARD_SIMPLE_2},
- {MSG_TYPE_CARD, MSG_TYPE_CARD_SIMPLE_3},
- {MSG_TYPE_CARD, MSG_TYPE_CARD_ELEGANT_1},
- {MSG_TYPE_CARD, MSG_TYPE_CARD_ELEGANT_2},
- {MSG_TYPE_CARD, MSG_TYPE_CARD_ELEGANT_3},
- {MSG_TYPE_CARD, MSG_TYPE_CARD_STRANGE_1},
- {MSG_TYPE_CARD, MSG_TYPE_CARD_STRANGE_2},
- /*subtype 20 */ {MSG_TYPE_CARD, MSG_TYPE_CARD_STRANGE_3},
- {MSG_TYPE_CARD, MSG_TYPE_CARD_MONEY_1},
- {MSG_TYPE_CARD, MSG_TYPE_CARD_MONEY_2},
- {MSG_TYPE_CARD, MSG_TYPE_CARD_MONEY_3},
+ {MSG_TYPE_CARD, MSG_TYPE_CARD_SIMPLE_1, "readable-card-simple-1"},
+ {MSG_TYPE_CARD, MSG_TYPE_CARD_SIMPLE_2, "readable-card-simple-2"},
+ {MSG_TYPE_CARD, MSG_TYPE_CARD_SIMPLE_3, "readable-card-simple-3"},
+ {MSG_TYPE_CARD, MSG_TYPE_CARD_ELEGANT_1, "readable-card-elegant-1"},
+ {MSG_TYPE_CARD, MSG_TYPE_CARD_ELEGANT_2, "readable-card-elegant-2"},
+ {MSG_TYPE_CARD, MSG_TYPE_CARD_ELEGANT_3, "readable-card-elegant-3"},
+ {MSG_TYPE_CARD, MSG_TYPE_CARD_STRANGE_1, "readable-card-strange-1"},
+ {MSG_TYPE_CARD, MSG_TYPE_CARD_STRANGE_2, "readable-card-strange-2"},
+ /*subtype 20 */ {MSG_TYPE_CARD, MSG_TYPE_CARD_STRANGE_3, "readable-card-strange-3"},
+ {MSG_TYPE_CARD, MSG_TYPE_CARD_MONEY_1, "readable-card-money-1"},
+ {MSG_TYPE_CARD, MSG_TYPE_CARD_MONEY_2, "readable-card-money-2"},
+ {MSG_TYPE_CARD, MSG_TYPE_CARD_MONEY_3, "readable-card-money-3"},
/* Paper messages subtypes */
- {MSG_TYPE_PAPER, MSG_TYPE_PAPER_NOTE_1},
- {MSG_TYPE_PAPER, MSG_TYPE_PAPER_NOTE_2},
- {MSG_TYPE_PAPER, MSG_TYPE_PAPER_NOTE_3},
- {MSG_TYPE_PAPER, MSG_TYPE_PAPER_LETTER_OLD_1},
- {MSG_TYPE_PAPER, MSG_TYPE_PAPER_LETTER_OLD_2},
- {MSG_TYPE_PAPER, MSG_TYPE_PAPER_LETTER_NEW_1},
- /*subtype 30 */ {MSG_TYPE_PAPER, MSG_TYPE_PAPER_LETTER_NEW_2},
- {MSG_TYPE_PAPER, MSG_TYPE_PAPER_ENVELOPE_1},
- {MSG_TYPE_PAPER, MSG_TYPE_PAPER_ENVELOPE_2},
- {MSG_TYPE_PAPER, MSG_TYPE_PAPER_SCROLL_OLD_1},
- {MSG_TYPE_PAPER, MSG_TYPE_PAPER_SCROLL_OLD_2},
- {MSG_TYPE_PAPER, MSG_TYPE_PAPER_SCROLL_NEW_1},
- {MSG_TYPE_PAPER, MSG_TYPE_PAPER_SCROLL_NEW_2},
- {MSG_TYPE_PAPER, MSG_TYPE_PAPER_SCROLL_MAGIC},
+ {MSG_TYPE_PAPER, MSG_TYPE_PAPER_NOTE_1, "readable-paper-note-1"},
+ {MSG_TYPE_PAPER, MSG_TYPE_PAPER_NOTE_2, "readable-paper-note-2"},
+ {MSG_TYPE_PAPER, MSG_TYPE_PAPER_NOTE_3, "readable-paper-note-3"},
+ {MSG_TYPE_PAPER, MSG_TYPE_PAPER_LETTER_OLD_1, "readable-paper-letter-old-1"},
+ {MSG_TYPE_PAPER, MSG_TYPE_PAPER_LETTER_OLD_2, "readable-paper-letter-old-2"},
+ {MSG_TYPE_PAPER, MSG_TYPE_PAPER_LETTER_NEW_1, "readable-paper-letter-new-1"},
+ /*subtype 30 */ {MSG_TYPE_PAPER, MSG_TYPE_PAPER_LETTER_NEW_2, "readable-paper-letter-new-2"},
+ {MSG_TYPE_PAPER, MSG_TYPE_PAPER_ENVELOPE_1, "readable-paper-envelope-1"},
+ {MSG_TYPE_PAPER, MSG_TYPE_PAPER_ENVELOPE_2, "readable-paper-envelope-2"},
+ {MSG_TYPE_PAPER, MSG_TYPE_PAPER_SCROLL_OLD_1, "readable-paper-scroll-old-1"},
+ {MSG_TYPE_PAPER, MSG_TYPE_PAPER_SCROLL_OLD_2, "readable-paper-scroll-old-2"},
+ {MSG_TYPE_PAPER, MSG_TYPE_PAPER_SCROLL_NEW_1, "readable-paper-scroll-new-1"},
+ {MSG_TYPE_PAPER, MSG_TYPE_PAPER_SCROLL_NEW_2, "readable-paper-scroll-new-2"},
+ {MSG_TYPE_PAPER, MSG_TYPE_PAPER_SCROLL_MAGIC, "readable-paper-scroll-magic"},
/* road signs messages subtypes */
- {MSG_TYPE_SIGN, MSG_TYPE_SIGN_BASIC},
- {MSG_TYPE_SIGN, MSG_TYPE_SIGN_DIR_LEFT},
- /*subtype 40 */ {MSG_TYPE_SIGN, MSG_TYPE_SIGN_DIR_RIGHT},
- {MSG_TYPE_SIGN, MSG_TYPE_SIGN_DIR_BOTH},
+ {MSG_TYPE_SIGN, MSG_TYPE_SIGN_BASIC, "readable-sign-basic"},
+ {MSG_TYPE_SIGN, MSG_TYPE_SIGN_DIR_LEFT, "readable-sign-dir-left"},
+ /*subtype 40 */ {MSG_TYPE_SIGN, MSG_TYPE_SIGN_DIR_RIGHT, "readable-sign-dir-right"},
+ {MSG_TYPE_SIGN, MSG_TYPE_SIGN_DIR_BOTH, "readable-sign-dir-both"},
/* stones and monument messages */
- {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_STONE_1},
- {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_STONE_2},
- {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_STONE_3},
- {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_STATUE_1},
- {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_STATUE_2},
- {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_STATUE_3},
- {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_GRAVESTONE_1},
- {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_GRAVESTONE_2},
- /*subtype 50 */ {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_GRAVESTONE_3},
- {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_WALL_1},
- {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_WALL_2},
- {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_WALL_3}
+ {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_STONE_1, "readable-monument-stone-1"},
+ {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_STONE_2, "readable-monument-stone-2"},
+ {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_STONE_3, "readable-monument-stone-3"},
+ {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_STATUE_1, "readable-monument-statue-1"},
+ {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_STATUE_2, "readable-monument-statue-2"},
+ {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_STATUE_3, "readable-monument-statue-3"},
+ {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_GRAVESTONE_1, "readable-monument-gravestone-1"},
+ {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_GRAVESTONE_2, "readable-monument-gravestone-2"},
+ /*subtype 50 */ {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_GRAVESTONE_3, "readable-monument-gravestone-3"},
+ {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_WALL_1, "readable-monument-wall-1"},
+ {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_WALL_2, "readable-monument-wall-2"},
+ {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_WALL_3, "readable-monument-wall-3"}
};
int last_readable_subtype = sizeof (readable_message_types) / sizeof (readable_message_type);
@@ -750,14 +749,13 @@
did_init_mon_info = 1;
-
- for (at = first_archetype; at != NULL; at = at->next)
+ for_all_archetypes (at)
{
- if (QUERY_FLAG (&at->clone, FLAG_MONSTER) && (!QUERY_FLAG (&at->clone, FLAG_CHANGING) || QUERY_FLAG (&at->clone, FLAG_UNAGGRESSIVE)))
+ if (QUERY_FLAG (at, FLAG_MONSTER) && (!QUERY_FLAG (at, FLAG_CHANGING) || QUERY_FLAG (at, FLAG_UNAGGRESSIVE)))
{
objectlink *mon = new objectlink;
- mon->ob = &at->clone;
+ mon->ob = at;
mon->next = first_mon_info;
first_mon_info = mon;
nrofmon++;
@@ -1444,16 +1442,16 @@
else
sprintf (retbuf, "%sbelonging to the path of %s:\n", retbuf, spellpathnames[path]);
- for (at = first_archetype; at != NULL; at = at->next)
+ for_all_archetypes (at)
{
/* Determine if this is an appropriate spell. Must
* be of matching path, must be of appropriate type (prayer
* or not), and must be within the valid level range.
*/
- if (at->clone.type == SPELL && at->clone.path_attuned & pnum &&
- ((at->clone.stats.grace && prayers) || (at->clone.stats.sp && !prayers)) && (at->clone.level < (level * 8)))
+ if (at->type == SPELL && at->path_attuned & pnum &&
+ ((at->stats.grace && prayers) || (at->stats.sp && !prayers)) && (at->level < (level * 8)))
{
- assign (tmpbuf, at->clone.name);
+ assign (tmpbuf, at->object::name);
if (book_overflow (retbuf, tmpbuf, booksize))
break;
@@ -1537,7 +1535,7 @@
sprintf (retbuf, "Herein is described a project using %s: \n", formula->skill ? &formula->skill : "an unknown skill");
if ((at = archetype::find (op_name)) != (archetype *) NULL)
- op_name = at->clone.name;
+ op_name = at->object::name;
else
LOG (llevError, "formula_msg() can't find arch %s for formula.\n", op_name);
@@ -1557,12 +1555,12 @@
{
sprintf (retbuf, "%sThe %s", retbuf, op_name);
sprintf (title, "%s: %s", formula_book_name[RANDOM () % (sizeof (formula_book_name) / sizeof (char *))], op_name);
- if (at->clone.title)
+ if (at->title)
{
strcat (retbuf, " ");
- strcat (retbuf, at->clone.title);
+ strcat (retbuf, at->title);
strcat (title, " ");
- strcat (title, at->clone.title);
+ strcat (title, at->title);
}
}
/* Lets name the book something meaningful ! */
@@ -1578,7 +1576,7 @@
at = archetype::find (formula->cauldron);
sprintf (retbuf + strlen (retbuf),
- " may be made at %s using the following ingredients:\n", at ? query_name (&at->clone) : "an unknown place");
+ " may be made at %s using the following ingredients:\n", at ? query_name (at) : "an unknown place");
for (next = formula->ingred; next != NULL; next = next->next)
{
@@ -1595,6 +1593,21 @@
}
}
+#define DESCRIBE_PATH(retbuf, variable, name) \
+ if(variable) { \
+ int i,j=0; \
+ strcat(retbuf,"(" name ": "); \
+ for(i=0; i 0)
{
sprintf (buf, " ");
@@ -1986,6 +1998,7 @@
uint8 subtype = readable->subtype;
if (subtype > last_readable_subtype)
- return &(readable_message_types[0]);
- return &(readable_message_types[subtype]);
+ return &readable_message_types[0];
+
+ return &readable_message_types[subtype];
}