--- deliantra/server/common/readable.C 2007/06/04 13:04:00 1.27
+++ deliantra/server/common/readable.C 2008/05/06 16:55:25 1.34
@@ -1,25 +1,24 @@
/*
- * This file is part of Crossfire TRT, the Multiplayer Online Role Playing Game.
+ * This file is part of Deliantra, the Roguelike Realtime MMORPG.
*
- * Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Crossfire TRT team
+ * Copyright (©) 2005,2006,2007,2008 Marc Alexander Lehmann / Robin Redeker / the Deliantra 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.
+ * Deliantra 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
+ * The authors can be reached via e-mail to
*/
/* This file contains code relevant to the BOOKS hack -- designed
@@ -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);
@@ -1594,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, " ");
@@ -1845,8 +1858,7 @@
* and add_authour().
* 4) you may want separate authour/book name arrays in read.h
*/
-
- msg_type = msg_type > 0 ? msg_type : (RANDOM () % 6);
+ msg_type = msg_type > 0 ? msg_type : (RANDOM () % 8);
switch (msg_type)
{
case 1: /* monster attrib */
@@ -1985,6 +1997,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];
}