1 /* SCCS Id: @(#)qtext.h 3.4 1997/02/02 */ 2 /* Copyright (c) Mike Stephenson 1991. */ 3 /* NetHack may be freely redistributed. See license for details. */ 4 5 #ifndef QTEXT_H 6 #define QTEXT_H 7 8 #define N_HDR 16 /* Maximum number of categories */ 9 /* (i.e., num roles + 1) */ 10 #define LEN_HDR 3 /* Maximum length of a category name */ 11 12 struct qtmsg { 13 int msgnum; 14 char delivery; 15 long offset, 16 size; 17 }; 18 19 #ifdef MAKEDEFS_C /***** MAKEDEFS *****/ 20 21 #define N_MSG 500 /* arbitrary */ 22 23 struct msghdr { 24 int n_msg; 25 struct qtmsg qt_msg[N_MSG]; 26 }; 27 28 struct qthdr { 29 int n_hdr; 30 char id[N_HDR][LEN_HDR]; 31 long offset[N_HDR]; 32 }; 33 34 /* Error message macros */ 35 #define CREC_IN_MSG "Control record encountered during message - line %d\n" 36 #define DUP_MSG "Duplicate message number at line %d\n" 37 #define END_NOT_IN_MSG "End record encountered before message - line %d\n" 38 #define TEXT_NOT_IN_MSG "Text encountered outside message - line %d\n" 39 #define UNREC_CREC "Unrecognized Control record at line %d\n" 40 #define OUT_OF_HEADERS "Too many message types (line %d)\nAdjust N_HDR in qtext.h and recompile.\n" 41 #define OUT_OF_MESSAGES "Too many messages in class (line %d)\nAdjust N_MSG in qtext.h and recompile.\n" 42 43 44 #else /***** !MAKEDEFS *****/ 45 46 struct qtlists { 47 struct qtmsg *common, 48 #if 0 /* UNUSED but available */ 49 *chrace, 50 #endif 51 *chrole; 52 }; 53 54 55 /* 56 * Quest message defines. Used in quest.c to trigger off "realistic" 57 * dialogue to the player. 58 */ 59 #define QT_FIRSTTIME 1 60 #define QT_NEXTTIME 2 61 #define QT_OTHERTIME 3 62 63 #define QT_GUARDTALK 5 /* 5 random things guards say before quest */ 64 #define QT_GUARDTALK2 10 /* 5 random things guards say after quest */ 65 66 #define QT_FIRSTLEADER 15 67 #define QT_NEXTLEADER 16 68 #define QT_OTHERLEADER 17 69 #define QT_LASTLEADER 18 70 #define QT_BADLEVEL 19 71 #define QT_BADALIGN 20 72 #define QT_ASSIGNQUEST 21 73 74 #define QT_ENCOURAGE 25 /* 1-10 random encouragement messages */ 75 76 #define QT_FIRSTLOCATE 35 77 #define QT_NEXTLOCATE 36 78 79 #define QT_FIRSTGOAL 40 80 #define QT_NEXTGOAL 41 81 82 #define QT_FIRSTNEMESIS 50 83 #define QT_NEXTNEMESIS 51 84 #define QT_OTHERNEMESIS 52 85 #define QT_NEMWANTSIT 53 /* you somehow got the artifact */ 86 87 #define QT_DISCOURAGE 60 /* 1-10 random maledictive messages */ 88 89 #define QT_GOTIT 70 90 91 #define QT_KILLEDNEM 80 92 #define QT_OFFEREDIT 81 93 #define QT_OFFEREDIT2 82 94 95 #define QT_POSTHANKS 90 96 #define QT_HASAMULET 91 97 98 /* 99 * Message defines for common text used in maledictions. 100 */ 101 #define COMMON_ID "-" /* Common message id value */ 102 103 #define QT_ANGELIC 10 104 #define QTN_ANGELIC 10 105 106 #define QT_DEMONIC 30 107 #define QTN_DEMONIC 20 108 109 #define QT_BANISHED 60 110 111 /* 112 * Tutorial text common to all classes (displayed with check_tutorial_message). 113 */ 114 115 #define QT_T_FIRST 201 116 117 /* Introductory messages */ 118 #define QT_T_WELCOME 201 /* at start of game */ 119 #define QT_T_CURSOR_NUMPAD 202 /* upon pressing ; with numpad */ 120 #define QT_T_CURSOR_VIKEYS 203 /* upon pressing ; with vikeys */ 121 /* Looking at monsters */ 122 #define QT_T_LOOK_TAME 210 /* farlooking a pet */ 123 #define QT_T_LOOK_HOSTILE 211 /* farlooking a hostile */ 124 #define QT_T_LOOK_PEACEFUL 212 /* farlooking a peaceful */ 125 #define QT_T_LOOK_INVISIBLE 213 /* adjacent to or farlooked I */ 126 /* Terrain messages; display when seen/adjacent, or farlooked */ 127 #define QT_T_DOORS 230 /* adjacent to or farlooked a door */ 128 #define QT_T_CORRIDOR 231 /* adjacent to or farlooked a corridor */ 129 #define QT_T_SECRETDOOR 232 /* adjacent to a secret door (freebie) */ 130 #define QT_T_POOLORMOAT 233 /* adjacent to or farlooked water */ 131 #define QT_T_LAVA 234 /* adjacent to or farlooked lava */ 132 #define QT_T_STAIRS 235 /* adjacent to or farlooked /downstairs/ */ 133 #define QT_T_FOUNTAIN 236 /* adjacent to or farlooked fountain */ 134 #define QT_T_THRONE 237 /* adjacent to or farlooked throne */ 135 #define QT_T_SINK 238 /* adjacent to or farlooked sink */ 136 #define QT_T_GRAVE 239 /* adjacent to or farlooked grave */ 137 #define QT_T_ALTAR 240 /* adjacent to or farlooked altar */ 138 #define QT_T_DRAWBRIDGE 241 /* adjacent to or farlooked drawbridge */ 139 #define QT_T_TRAP 242 /* adjacent to or farlooked trap */ 140 #define QT_T_L1UPSTAIRS 259 /* farlooked level 1 upstairs */ 141 /* Interface hints and reminders */ 142 #define QT_T_FARMOVE_VIKEYS 260 /* direction key five times in a row */ 143 #define QT_T_FARMOVE_NUMPAD 261 /* ditto */ 144 #define QT_T_TRAVEL 262 /* thirty direction keys in a row */ 145 #define QT_T_DIAGONALS_VI 263 /* twenty orthogonals in a row */ 146 #define QT_T_DIAGONALS_NUM 264 /* twenty orthogonals in a row */ 147 #define QT_T_REPEAT_VIKEYS 265 /* s 5 times in a row */ 148 #define QT_T_REPEAT_NUMPAD 266 /* s 5 times in a row */ 149 #define QT_T_CHOOSEITEM 267 /* explaining [a-zA-Z?*] menus */ 150 #define QT_T_MASSUNEQUIP 268 /* R or T twice in a row */ 151 #define QT_T_CALLMONSTER 269 /* adjacent to two identical monsters */ 152 #define QT_T_MULTIDROP 270 /* d twice in a row */ 153 #define QT_T_MASSINVENTORY 271 /* I twice in a row */ 154 #define QT_T_SECONDWIELD 272 /* w more often than twice per 50 turns */ 155 #define QT_T_LOOK_REMINDER 273 /* no ; within the last 100 turns */ 156 #define QT_T_FIRE 274 /* t three times in a row */ 157 #define QT_T_DGN_OVERVIEW 275 /* dungeon #overview and #annotate */ 158 /* Ambient advice, outside combat */ 159 #define QT_T_VIEWTUTORIAL 280 /* peaceful, turn >= 10 */ 160 #define QT_T_CHECK_ITEMS 281 /* peaceful, turn >= 30 */ 161 #define QT_T_OBJECTIVE 282 /* peaceful, turn >= 60 */ 162 #define QT_T_SAVELOAD 283 /* peaceful, turn >= 100 */ 163 #define QT_T_MESSAGERECALL 284 /* peaceful, turn >= 150 */ 164 /* Ambient advice, during combat; only one advice given per combat */ 165 #define QT_T_SPELLS 290 /* knows 'force bolt' */ 166 #define QT_T_THROWNWEAPONS 291 /* thrown weapon in invent */ 167 #define QT_T_PROJECTILES 292 /* ammo in invent */ 168 #define QT_T_ELBERETH 293 /* combat on dlevel 3+ */ 169 #define QT_T_MELEE 294 /* a general combat ambient */ 170 /* Item types; these appear when the item's picked up, farlooked, or 171 the relevant inventory section is viewed */ 172 #define QT_T_ITEM_GOLD 300 173 #define QT_T_ITEM_WEAPON 301 174 #define QT_T_ITEM_ARMOR 302 175 #define QT_T_ITEM_FOOD 303 176 #define QT_T_ITEM_SCROLL 304 177 #define QT_T_ITEM_WAND 305 178 #define QT_T_ITEM_RING 306 179 #define QT_T_ITEM_POTION 307 180 #define QT_T_ITEM_TOOL 308 181 #define QT_T_ITEM_CONTAINER 309 /* on pickup, or standover for chests */ 182 #define QT_T_ITEM_AMULET 310 183 #define QT_T_ITEM_GEM 311 184 #define QT_T_ITEM_STATUE 312 185 #define QT_T_ITEM_BOOK 313 186 #define QT_T_CALLITEM 317 /* call-item prompt */ 187 #define QT_T_ARTIFACT 318 /* obtained an artifact */ 188 #define QT_T_RANDAPPEARANCE 319 /* obtained a rand-appearance item */ 189 /* Events */ 190 #define QT_T_LEVELUP 320 /* became xlevel 2 */ 191 #define QT_T_RANKUP 321 /* became xlevel 3 */ 192 #define QT_T_ABILUP 322 /* str, con, dex, int, wis, or cha increased */ 193 #define QT_T_ABILDOWN 323 /* str, con, dex, int, wis, or cha decreased */ 194 #define QT_T_DLEVELCHANGE 324 /* entered dlvl 2+ */ 195 #define QT_T_DAMAGED 325 /* not at full hp */ 196 #define QT_T_PWUSED 326 /* not at full pw */ 197 #define QT_T_PWEMPTY 327 /* pw too low to cast a spell */ 198 #define QT_T_ACIMPROVED 328 /* AC better than starting value */ 199 #define QT_T_GAINEDEXP 329 /* not at 0 exp */ 200 #define QT_T_HUNGER 330 /* hungry or worse */ 201 #define QT_T_SATIATION 331 /* satiated */ 202 #define QT_T_STATUS 332 /* other status */ 203 #define QT_T_ENHANCE 333 /* can train a skill */ 204 #define QT_T_POLYSELF 334 /* turned into monster form */ 205 #define QT_T_ENGRAVING 335 /* stepped on an engraving */ 206 #define QT_T_MAJORTROUBLE 336 /* in major trouble and #pray will work */ 207 #define QT_T_BURDEN 337 /* became burdened */ 208 #define QT_T_EQUIPCURSE 338 /* BCU-known item is cursed */ 209 #define QT_T_MAILSCROLL 339 /* mail was delivered */ 210 #define QT_T_CASTER_ARMOR 340 /* spellcaster wearing inappropriate armour */ 211 #define QT_T_WEAPON_SKILL 341 /* wielding an unskilled weapon */ 212 #define QT_T_ENGULFED 342 /* engulfed by a monster */ 213 #define QT_T_DEATH 359 /* died; contains x-mode hint */ 214 /* Dungeon areas */ 215 #define QT_T_SHOPENTRY 360 /* entered a shop */ 216 #define QT_T_SHOPBUY 361 /* picked up an item in a shop */ 217 #define QT_T_MINES 362 /* entered the Mines */ 218 #define QT_T_SOKOBAN 363 /* entered Sokoban */ 219 #define QT_T_ORACLE 364 /* upon "welcome to Delphi" message */ 220 /* Leave some room before this to avoid breaking savefile compatibility 221 if the list is ever expanded. No tutorial message can have a number 222 higher than this. */ 223 #define QT_T_MAX 400 224 /* Guidebook sections not mentioned in the tutorial: conducts, 225 options, riding, autopickup-exceptions, regexp sounds, play by the 226 blind, scoring, credits, flavour introduction (although 'legacy' 227 handles that in tutorial style), class choice (so far) */ 228 229 #endif /***** !MAKEDEFS *****/ 230 231 #endif /* QTEXT_H */ 232