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