qtext.h

Go to the documentation of this file.
00001 /*      SCCS Id: @(#)qtext.h    3.4     1997/02/02      */
00002 /* Copyright (c) Mike Stephenson 1991.                            */
00003 /* NetHack may be freely redistributed.  See license for details. */
00004 
00005 #ifndef QTEXT_H
00006 #define QTEXT_H
00007 
00008 #define N_HDR   16              /* Maximum number of categories */
00009                                 /* (i.e., num roles + 1) */
00010 #define LEN_HDR 3               /* Maximum length of a category name */
00011 
00012 struct qtmsg {
00013         int     msgnum;
00014         char    delivery;
00015         long    offset,
00016                 size;
00017 };
00018 
00019 #ifdef MAKEDEFS_C       /***** MAKEDEFS *****/
00020 
00021 #define N_MSG   500             /* arbitrary */
00022 
00023 struct msghdr {
00024         int     n_msg;
00025         struct  qtmsg   qt_msg[N_MSG];
00026 };
00027 
00028 struct  qthdr {
00029         int     n_hdr;
00030         char    id[N_HDR][LEN_HDR];
00031         long    offset[N_HDR];
00032 };
00033 
00034 /* Error message macros */
00035 #define CREC_IN_MSG     "Control record encountered during message - line %d\n"
00036 #define DUP_MSG         "Duplicate message number at line %d\n"
00037 #define END_NOT_IN_MSG  "End record encountered before message - line %d\n"
00038 #define TEXT_NOT_IN_MSG "Text encountered outside message - line %d\n"
00039 #define UNREC_CREC      "Unrecognized Control record at line %d\n"
00040 #define OUT_OF_HEADERS  "Too many message types (line %d)\nAdjust N_HDR in qtext.h and recompile.\n"
00041 #define OUT_OF_MESSAGES "Too many messages in class (line %d)\nAdjust N_MSG in qtext.h and recompile.\n"
00042 
00043 
00044 #else   /***** !MAKEDEFS *****/
00045 
00046 struct  qtlists {
00047         struct  qtmsg   *common,
00048 #if 0   /* UNUSED but available */
00049                         *chrace,
00050 #endif
00051                         *chrole;
00052 };
00053 
00054 
00055 /*
00056  *      Quest message defines.  Used in quest.c to trigger off "realistic"
00057  *      dialogue to the player.
00058  */
00059 #define QT_FIRSTTIME     1
00060 #define QT_NEXTTIME      2
00061 #define QT_OTHERTIME     3
00062 
00063 #define QT_GUARDTALK     5      /* 5 random things guards say before quest */
00064 #define QT_GUARDTALK2   10      /* 5 random things guards say after quest */
00065 
00066 #define QT_FIRSTLEADER  15
00067 #define QT_NEXTLEADER   16
00068 #define QT_OTHERLEADER  17
00069 #define QT_LASTLEADER   18
00070 #define QT_BADLEVEL     19
00071 #define QT_BADALIGN     20
00072 #define QT_ASSIGNQUEST  21
00073 
00074 #define QT_ENCOURAGE    25      /* 1-10 random encouragement messages */
00075 
00076 #define QT_FIRSTLOCATE  35
00077 #define QT_NEXTLOCATE   36
00078 
00079 #define QT_FIRSTGOAL    40
00080 #define QT_NEXTGOAL     41
00081 
00082 #define QT_FIRSTNEMESIS 50
00083 #define QT_NEXTNEMESIS  51
00084 #define QT_OTHERNEMESIS 52
00085 #define QT_NEMWANTSIT   53      /* you somehow got the artifact */
00086 
00087 #define QT_DISCOURAGE   60      /* 1-10 random maledictive messages */
00088 
00089 #define QT_GOTIT        70
00090 
00091 #define QT_KILLEDNEM    80
00092 #define QT_OFFEREDIT    81
00093 #define QT_OFFEREDIT2   82
00094 
00095 #define QT_POSTHANKS    90
00096 #define QT_HASAMULET    91
00097 
00098 /*
00099  *      Message defines for common text used in maledictions.
00100  */
00101 #define COMMON_ID       "-"     /* Common message id value */
00102 
00103 #define QT_ANGELIC      10
00104 #define QTN_ANGELIC     10
00105 
00106 #define QT_DEMONIC      30
00107 #define QTN_DEMONIC     20
00108 
00109 #define QT_BANISHED     60
00110 
00111 /*
00112  *  Tutorial text common to all classes (displayed with check_tutorial_message).
00113  */
00114 
00115 #define QT_T_FIRST          201
00116 
00117 /* Introductory messages */
00118 #define QT_T_WELCOME        201 /* at start of game */
00119 #define QT_T_CURSOR_NUMPAD  202 /* upon pressing ; with numpad */
00120 #define QT_T_CURSOR_VIKEYS  203 /* upon pressing ; with vikeys */
00121 /* Looking at monsters */
00122 #define QT_T_LOOK_TAME      210 /* farlooking a pet */
00123 #define QT_T_LOOK_HOSTILE   211 /* farlooking a hostile */
00124 #define QT_T_LOOK_PEACEFUL  212 /* farlooking a peaceful */
00125 #define QT_T_LOOK_INVISIBLE 213 /* adjacent to or farlooked I */
00126 /* Terrain messages; display when seen/adjacent, or farlooked */
00127 #define QT_T_DOORS          230 /* adjacent to or farlooked a door */
00128 #define QT_T_CORRIDOR       231 /* adjacent to or farlooked a corridor */
00129 #define QT_T_SECRETDOOR     232 /* adjacent to a secret door (freebie) */
00130 #define QT_T_POOLORMOAT     233 /* adjacent to or farlooked water */
00131 #define QT_T_LAVA           234 /* adjacent to or farlooked lava */
00132 #define QT_T_STAIRS         235 /* adjacent to or farlooked /downstairs/ */
00133 #define QT_T_FOUNTAIN       236 /* adjacent to or farlooked fountain */
00134 #define QT_T_THRONE         237 /* adjacent to or farlooked throne */
00135 #define QT_T_SINK           238 /* adjacent to or farlooked sink */
00136 #define QT_T_GRAVE          239 /* adjacent to or farlooked grave */
00137 #define QT_T_ALTAR          240 /* adjacent to or farlooked altar */
00138 #define QT_T_DRAWBRIDGE     241 /* adjacent to or farlooked drawbridge */
00139 #define QT_T_TRAP           242 /* adjacent to or farlooked trap */
00140 #define QT_T_L1UPSTAIRS     259 /* farlooked level 1 upstairs */
00141 /* Interface hints and reminders */
00142 #define QT_T_FARMOVE_VIKEYS 260 /* direction key five times in a row */
00143 #define QT_T_FARMOVE_NUMPAD 261 /* ditto */
00144 #define QT_T_TRAVEL         262 /* thirty direction keys in a row */
00145 #define QT_T_DIAGONALS_VI   263 /* twenty orthogonals in a row */
00146 #define QT_T_DIAGONALS_NUM  264 /* twenty orthogonals in a row */
00147 #define QT_T_REPEAT_VIKEYS  265 /* s 5 times in a row */
00148 #define QT_T_REPEAT_NUMPAD  266 /* s 5 times in a row */
00149 #define QT_T_CHOOSEITEM     267 /* explaining [a-zA-Z?*] menus */
00150 #define QT_T_MASSUNEQUIP    268 /* R or T twice in a row */
00151 #define QT_T_CALLMONSTER    269 /* adjacent to two identical monsters */
00152 #define QT_T_MULTIDROP      270 /* d twice in a row */
00153 #define QT_T_MASSINVENTORY  271 /* I twice in a row */
00154 #define QT_T_SECONDWIELD    272 /* w more often than twice per 50 turns */
00155 #define QT_T_LOOK_REMINDER  273 /* no ; within the last 100 turns */
00156 #define QT_T_FIRE           274 /* t three times in a row */
00157 #define QT_T_DGN_OVERVIEW   275 /* dungeon #overview and #annotate */
00158 /* Ambient advice, outside combat */
00159 #define QT_T_VIEWTUTORIAL   280 /* peaceful, turn >= 10 */
00160 #define QT_T_CHECK_ITEMS    281 /* peaceful, turn >= 30 */
00161 #define QT_T_OBJECTIVE      282 /* peaceful, turn >= 60 */
00162 #define QT_T_SAVELOAD       283 /* peaceful, turn >= 100 */
00163 #define QT_T_MESSAGERECALL  284 /* peaceful, turn >= 150 */
00164 /* Ambient advice, during combat; only one advice given per combat */
00165 #define QT_T_SPELLS         290 /* knows 'force bolt' */
00166 #define QT_T_THROWNWEAPONS  291 /* thrown weapon in invent */
00167 #define QT_T_PROJECTILES    292 /* ammo in invent */
00168 #define QT_T_ELBERETH       293 /* combat on dlevel 3+ */
00169 #define QT_T_MELEE          294 /* a general combat ambient */
00170 /* Item types; these appear when the item's picked up, farlooked, or
00171    the relevant inventory section is viewed */
00172 #define QT_T_ITEM_GOLD      300
00173 #define QT_T_ITEM_WEAPON    301
00174 #define QT_T_ITEM_ARMOR     302
00175 #define QT_T_ITEM_FOOD      303
00176 #define QT_T_ITEM_SCROLL    304
00177 #define QT_T_ITEM_WAND      305
00178 #define QT_T_ITEM_RING      306
00179 #define QT_T_ITEM_POTION    307
00180 #define QT_T_ITEM_TOOL      308
00181 #define QT_T_ITEM_CONTAINER 309 /* on pickup, or standover for chests */
00182 #define QT_T_ITEM_AMULET    310
00183 #define QT_T_ITEM_GEM       311
00184 #define QT_T_ITEM_STATUE    312
00185 #define QT_T_ITEM_BOOK      313
00186 #define QT_T_CALLITEM       317 /* call-item prompt */
00187 #define QT_T_ARTIFACT       318 /* obtained an artifact */
00188 #define QT_T_RANDAPPEARANCE 319 /* obtained a rand-appearance item */
00189 /* Events */
00190 #define QT_T_LEVELUP        320 /* became xlevel 2 */
00191 #define QT_T_RANKUP         321 /* became xlevel 3 */
00192 #define QT_T_ABILUP         322 /* str, con, dex, int, wis, or cha increased */
00193 #define QT_T_ABILDOWN       323 /* str, con, dex, int, wis, or cha decreased */
00194 #define QT_T_DLEVELCHANGE   324 /* entered dlvl 2+ */
00195 #define QT_T_DAMAGED        325 /* not at full hp */
00196 #define QT_T_PWUSED         326 /* not at full pw */
00197 #define QT_T_PWEMPTY        327 /* pw too low to cast a spell */
00198 #define QT_T_ACIMPROVED     328 /* AC better than starting value */
00199 #define QT_T_GAINEDEXP      329 /* not at 0 exp */
00200 #define QT_T_HUNGER         330 /* hungry or worse */
00201 #define QT_T_SATIATION      331 /* satiated */
00202 #define QT_T_STATUS         332 /* other status */
00203 #define QT_T_ENHANCE        333 /* can train a skill */
00204 #define QT_T_POLYSELF       334 /* turned into monster form */
00205 #define QT_T_ENGRAVING      335 /* stepped on an engraving */
00206 #define QT_T_MAJORTROUBLE   336 /* in major trouble and #pray will work */
00207 #define QT_T_BURDEN         337 /* became burdened */
00208 #define QT_T_EQUIPCURSE     338 /* BCU-known item is cursed */
00209 #define QT_T_MAILSCROLL     339 /* mail was delivered */
00210 #define QT_T_CASTER_ARMOR   340 /* spellcaster wearing inappropriate armour */
00211 #define QT_T_WEAPON_SKILL   341 /* wielding an unskilled weapon */
00212 #define QT_T_ENGULFED       342 /* engulfed by a monster */
00213 #define QT_T_DEATH          359 /* died; contains x-mode hint */
00214 /* Dungeon areas */
00215 #define QT_T_SHOPENTRY      360 /* entered a shop */
00216 #define QT_T_SHOPBUY        361 /* picked up an item in a shop */
00217 #define QT_T_MINES          362 /* entered the Mines */
00218 #define QT_T_SOKOBAN        363 /* entered Sokoban */
00219 #define QT_T_ORACLE         364 /* upon "welcome to Delphi" message */
00220 /* Leave some room before this to avoid breaking savefile compatibility
00221    if the list is ever expanded. No tutorial message can have a number
00222    higher than this. */
00223 #define QT_T_MAX            400
00224 /* Guidebook sections not mentioned in the tutorial: conducts,
00225    options, riding, autopickup-exceptions, regexp sounds, play by the
00226    blind, scoring, credits, flavour introduction (although 'legacy'
00227    handles that in tutorial style), class choice (so far) */
00228 
00229 #endif  /***** !MAKEDEFS *****/
00230 
00231 #endif /* QTEXT_H */