comparison arogue7/rogue.c @ 125:adfa37e67084

Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
author John "Elwin" Edwards
date Fri, 08 May 2015 15:24:40 -0400
parents
children c697782a9b37
comparison
equal deleted inserted replaced
124:d10fc4a065ac 125:adfa37e67084
1 /*
2 * rogue.c - Global game variables
3 *
4 * Advanced Rogue
5 * Copyright (C) 1984, 1985, 1986 Michael Morgan, Ken Dalka and AT&T
6 * All rights reserved.
7 *
8 * Based on "Rogue: Exploring the Dungeons of Doom"
9 * Copyright (C) 1980, 1981 Michael Toy, Ken Arnold and Glenn Wichman
10 * All rights reserved.
11 *
12 * See the file LICENSE.TXT for full copyright and licensing information.
13 */
14
15 #include <ctype.h>
16 #include "curses.h"
17 #include "rogue.h"
18 #ifdef PC7300
19 #include <sys/window.h>
20 #endif
21
22 #ifdef BSD
23 char
24 tolower(c)
25 {
26 if (isupper(c)) return(_tolower(c));
27 else return(c);
28 }
29 char
30 toupper(c)
31 {
32 if (islower(c)) return(_toupper(c));
33 else return(c);
34 }
35 #endif
36
37 /*
38 * Now all the global variables
39 */
40 struct trap traps[MAXTRAPS];
41 struct room rooms[MAXROOMS]; /* One for each room -- A level */
42 struct room *oldrp; /* Roomin(&player.t_oldpos) */
43 struct thing player; /* The rogue */
44 struct object *cur_armor; /* What a well dresssed rogue wears */
45 struct object *cur_ring[NUM_FINGERS]; /* Which rings are being worn */
46 struct object *cur_misc[NUM_MM]; /* which MM's are in use */
47 int cur_relic[MAXRELIC]; /* Currently used relics */
48 struct linked_list *lvl_obj = NULL;
49 struct linked_list *mlist = NULL;
50 struct linked_list *tlist = NULL; /* list of monsters fallen down traps */
51 struct linked_list *monst_dead = NULL; /* monster killed by monster */
52 struct object *cur_weapon = NULL;
53 int char_type = -1; /* what type of character is player */
54 int foodlev = 1; /* how fast he eats food */
55 int ntraps; /* Number of traps on this level */
56 int trader = 0; /* no. of purchases */
57 int curprice = -1; /* current price of item */
58 int seed; /* Random number seed */
59 int dnum; /* Dungeon number */
60 int max_level; /* Deepest player has gone ever */
61 int cur_max; /* Deepest player has gone currently */
62 int mpos = 0;
63 int level = 0;
64 int purse = 0;
65 int inpack = 0;
66 int total = 0;
67 int no_food = 0; /* how long has he gone with no food */
68 int foods_this_level = 0; /* foods made per level */
69 int count = 0;
70 int food_left = STOMACHSIZE-MORETIME-1;
71 int group = 1;
72 int hungry_state = F_OKAY;
73 int infest_dam=0;
74 int lost_str=0;
75 int lastscore = -1;
76 int hold_count = 0;
77 int trap_tries = 0;
78 int chant_time = 0;
79 int pray_time = 0;
80 int spell_power = 0;
81 int turns = 0; /* Number of turns player has taken */
82 int quest_item = 0; /* Item player is looking for */
83 int cols = 0; /* number of columns in terminal */
84 int lines = 0; /* number of lines on the terminal */
85 char nfloors = -1; /* Number of floors in this dungeon */
86 char curpurch[LINELEN]; /* name of item ready to buy */
87 char PLAYER = VPLAYER; /* what the player looks like */
88 char take; /* Thing the rogue is taking */
89 char prbuf[LINELEN*2]; /* Buffer for sprintfs */
90 char outbuf[BUFSIZ]; /* Output buffer for stdout */
91 char runch; /* Direction player is running */
92 char *s_names[MAXSCROLLS]; /* Names of the scrolls */
93 char *p_colors[MAXPOTIONS]; /* Colors of the potions */
94 char *r_stones[MAXRINGS]; /* Stone settings of the rings */
95 char *ws_made[MAXSTICKS]; /* What sticks are made of */
96 char whoami[LINELEN]; /* Name of player */
97 char huh[LINELEN]; /* The last message printed */
98 char *s_guess[MAXSCROLLS]; /* Players guess at what scroll is */
99 char *p_guess[MAXPOTIONS]; /* Players guess at what potion is */
100 char *r_guess[MAXRINGS]; /* Players guess at what ring is */
101 char *ws_guess[MAXSTICKS]; /* Players guess at what wand is */
102 char *m_guess[MAXMM]; /* Players guess at what MM is */
103 char *ws_type[MAXSTICKS]; /* Is it a wand or a staff */
104 char file_name[LINELEN]; /* Save file name */
105 char score_file[LINELEN]; /* Score file name */
106 char home[LINELEN]; /* User's home directory */
107 WINDOW *cw; /* Window that the player sees */
108 WINDOW *hw; /* Used for the help command */
109 WINDOW *mw; /* Used to store monsters */
110 WINDOW *msgw; /* Used to display messages */
111 bool pool_teleport = FALSE; /* just teleported from a pool */
112 bool inwhgt = FALSE; /* true if from wghtchk() */
113 bool after; /* True if we want after daemons */
114 bool waswizard; /* Was a wizard sometime */
115 bool s_know[MAXSCROLLS]; /* Does he know what a scroll does */
116 bool p_know[MAXPOTIONS]; /* Does he know what a potion does */
117 bool r_know[MAXRINGS]; /* Does he know what a ring does */
118 bool ws_know[MAXSTICKS]; /* Does he know what a stick does */
119 bool m_know[MAXMM]; /* Does he know what a MM does */
120 bool playing = TRUE;
121 bool running = FALSE;
122 bool wizard = FALSE;
123 bool notify = TRUE;
124 bool fight_flush = FALSE;
125 bool terse = FALSE;
126 bool auto_pickup = TRUE;
127 bool menu_overlay = TRUE;
128 bool door_stop = FALSE;
129 bool jump = FALSE;
130 bool slow_invent = FALSE;
131 bool firstmove = FALSE;
132 bool askme = FALSE;
133 bool in_shell = FALSE;
134 bool daytime = TRUE;
135 LEVTYPE levtype; /* type of level i'm on */
136
137 char *nothing = "Nothing seems to happen.";
138 char *spacemsg = "--Press space to continue--";
139 char *morestr = "-- More --";
140 char *retstr = "[Press return to continue]";
141 #ifdef PC7300
142 struct uwdata wdata, oldwin; /* Static window information */
143 char oldtext[WTXTNUM][WTXTLEN]; /* Saved window text */
144 #endif
145
146 /*
147 * This lays out all the class specific details
148 *
149 * Here are the beginning experience levels for all players.
150 * All further experience levels are computed by muliplying by 2
151 * up through MAXDOUBLE. Then exp pts are calculated by adding
152 * in the cap figure. You must change MAXDOUBLE if you change the
153 * cap figure.
154 */
155 struct character_types char_class[NUM_CHARTYPES] = {
156 /* name exppts cap hitpts Base Maxlvl, Factor, Offset, Range */
157 { "fighter", 80, 1310720, 12, 10, 30, 2, 1, 2 },
158 { "ranger", 140, 2293760, 8, 10, 20, 2, 1, 2 },
159 { "paladin", 120, 1966080, 10, 10, 23, 2, 1, 2 },
160 { "magic user", 130, 2129920, 6, 9, 18, 2, 1, 5 },
161 { "cleric", 110, 1802240, 8, 10, 19, 2, 1, 3 },
162 { "thief", 75, 1228800, 6, 10, 25, 2, 1, 4 },
163 { "assassin", 85, 1392640, 6, 10, 25, 2, 1, 4 },
164 { "druid", 100, 1638400, 8, 10, 19, 2, 1, 3 },
165 { "monk", 95, 1556480, 6, 10, 25, 2, 1, 3 },
166 { "monster", 0, 0, 8, 7, 30, 1, 0, 2 },
167 };
168
169
170 /*
171 * This array lists the names of the character's abilities. It must be ordered
172 * according to the ability definitions in rogue.h.
173 */
174
175 char *abilities[NUMABILITIES] = {
176 "Intelligence", "Strength", "Wisdom", "Dexterity", "Constitution", "Charisma"
177 };
178
179 /*
180 * NOTE: the ordering of the points in this array is critical. They MUST
181 * be listed in the following sequence:
182 *
183 * 7 4 6
184 * 1 0 2
185 * 5 3 8
186 */
187
188 coord grid[9] = {{0,0},
189 { 0,-1}, { 0, 1}, {-1, 0}, { 1, 0},
190 {-1,-1}, { 1, 1}, { 1,-1}, {-1, 1}
191 };
192
193 struct death_type deaths[DEATHNUM] = {
194 { D_ARROW, "an arrow"},
195 { D_DART, "a dart"},
196 { D_BOLT, "a bolt"},
197 { D_POISON, "poison"},
198 { D_POTION, "a cursed potion"},
199 { D_PETRIFY, "petrification"},
200 { D_SUFFOCATION, "suffocation"},
201 { D_INFESTATION, "a parasite"},
202 { D_DROWN, "drowning"},
203 { D_ROT, "body rot"},
204 { D_CONSTITUTION, "poor health"},
205 { D_STRENGTH, "being too weak"},
206 { D_SIGNAL, "a bug"},
207 { D_CHOKE, "dust of choking"},
208 { D_STRANGLE, "strangulation"},
209 { D_FALL, "a fall"},
210 { D_RELIC, "an artifact's wrath"},
211 { D_STARVATION, "starvation"},
212 { D_FOOD_CHOKE, "choking on food"},
213 { D_SCROLL, "reading a scroll"},
214 };
215
216
217 /*
218 * weapons and their attributes
219 */
220 struct init_weps weaps[MAXWEAPONS] = {
221 { "mace", "2d4", "1d3", NONE, ISMETAL, 3, 100, 8 },
222 { "long sword", "1d12", "1d2", NONE, ISMETAL, 4, 60, 18 },
223 { "short bow", "1d1", "1d1", NONE, 0, 6, 40, 15 },
224 { "arrow", "1d1", "1d6", BOW, ISMANY|ISMISL, 1, 5, 1 },
225 { "dagger", "1d6", "1d4", NONE, ISMETAL|ISMISL|ISMANY,1,7,2},
226 { "rock", "1d2", "1d4", SLING, ISMANY|ISMISL, 1, 5, 1 },
227 { "two-handed sword","3d6", "1d2", NONE, ISMETAL, 5, 250, 40 },
228 { "sling", "0d0", "0d0", NONE, 0, 1, 5, 1 },
229 { "dart", "1d1", "1d3", NONE, ISMANY|ISMISL, 1, 5, 1 },
230 { "crossbow", "1d1", "1d1", NONE, 0, 6, 100, 15 },
231 { "crossbow bolt", "1d2", "1d12", CROSSBOW,ISMANY|ISMISL, 1, 7, 1 },
232 { "spear", "1d8", "2d6", NONE, ISMANY|ISMETAL|ISMISL,2,20,8},
233 { "trident", "3d4", "1d4", NONE, ISMETAL, 4, 50, 20 },
234 { "spetum", "2d6", "1d3", NONE, ISMETAL, 4, 50, 20 },
235 { "bardiche", "3d4", "1d2", NONE, ISMETAL, 4, 125, 20 },
236 { "pike", "1d12", "1d8", NONE, ISMETAL, 4, 80, 18 },
237 { "bastard sword", "2d8", "1d2", NONE, ISMETAL, 5, 100, 30 },
238 { "halberd", "2d6", "1d3", NONE, ISMETAL, 4, 175, 10 },
239 { "battle axe", "1d8", "1d3", NONE, ISMETAL, 3, 80, 10 },
240 };
241
242 struct init_armor armors[MAXARMORS] = {
243 { "leather armor", 11, 8, 70, 100 },
244 { "ring mail", 22, 7, 50, 250 },
245 { "studded leather armor", 33, 7, 50, 200 },
246 { "scale mail", 45, 6, 70, 250 },
247 { "padded armor", 57, 6, 150, 150 },
248 { "chain mail", 69, 5, 100, 300 },
249 { "splint mail", 80, 4, 150, 350 },
250 { "banded mail", 90, 4, 150, 350 },
251 { "plate mail", 96, 3, 400, 400 },
252 { "plate armor", 100, 2, 650, 450 },
253 };
254
255 struct magic_item things[NUMTHINGS] = {
256 { "potion", 260, 10 }, /* potion */
257 { "scroll", 260, 30 }, /* scroll */
258 { "food", 180, 20 }, /* food */
259 { "weapon", 80, 0 }, /* weapon */
260 { "armor", 80, 0 }, /* armor */
261 { "ring", 50, 5 }, /* ring */
262 { "stick", 60, 0 }, /* stick */
263 { "miscellaneous magic", 30, 50 }, /* miscellaneous magic */
264 { "artifact", 0, 10 }, /* artifact */
265 };
266
267 struct magic_item s_magic[MAXSCROLLS] = {
268 { "monster confusion", 50, 125, 0, 0 },
269 { "magic mapping", 50, 150, 0, 0 },
270 { "light", 70, 100, 21, 15 },
271 { "hold monster", 30, 200, 33, 20 },
272 { "sleep", 20, 150, 20, 0 },
273 { "enchantment", 170, 200, 9, 9 },
274 { "identify", 200, 100, 0, 25 },
275 { "scare monster", 40, 250, 27, 21 },
276 { "gold detection", 30, 110, 0, 0 },
277 { "teleportation", 60, 165, 10, 20 },
278 { "create monster", 30, 75, 0, 0 },
279 { "remove curse", 70, 120, 9, 15 },
280 { "petrification", 10, 185, 0, 0 },
281 { "genocide", 10, 300, 0, 0 },
282 { "cure disease", 80, 160, 0, 0 },
283 { "acquirement", 10, 700, 0, 0 },
284 { "protection", 30, 190, 20, 0 },
285 { "trap finding", 10, 180, 0, 0 },
286 { "runes", 10, 50, 0, 0 },
287 { "charm monster", 20, 275, 0, 15 },
288 };
289
290 struct magic_item p_magic[MAXPOTIONS] = {
291 { "clear thought", 50, 180, 27, 10 },
292 { "gain ability", 160, 210, 15, 15 },
293 { "see invisible", 50, 150, 25, 15 },
294 { "healing", 160, 130, 27, 27 },
295 { "monster detection", 60, 120, 0, 0 },
296 { "magic detection", 60, 105, 0, 0 },
297 { "raise level", 10, 450, 11, 10 },
298 { "haste self", 90, 180, 30, 5 },
299 { "restore abilities", 140, 140, 0, 10 },
300 { "phasing", 50, 210, 21, 20 },
301 { "invisibility", 50, 230, 0, 15 },
302 { "flying", 40, 130, 0, 20 },
303 { "food detection", 10, 150, 0, 0 },
304 { "skill", 10, 200, 20, 10 },
305 { "fire resistance", 10, 250, 0, 10 },
306 { "cold resistance", 10, 250, 0, 10 },
307 { "lightning protection", 10, 250, 0, 10 },
308 { "poison", 30, 205, 0, 0 },
309 };
310
311 struct magic_item r_magic[MAXRINGS] = {
312 { "protection", 50, 200, 33, 25 },
313 { "add strength", 60, 200, 33, 25 },
314 { "sustain ability", 50, 500, 0, 0 },
315 { "searching", 50, 400, 0, 0 },
316 { "extra sight", 40, 350, 0, 0 },
317 { "alertness", 40, 380, 0, 0 },
318 { "aggravate monster", 30, 100, 100, 0 },
319 { "dexterity", 60, 220, 33, 25 },
320 { "increase damage", 60, 220, 33, 25 },
321 { "regeneration", 40, 600, 0, 0 },
322 { "slow digestion", 40, 240, 15, 15 },
323 { "teleportation", 20, 100, 100, 0 },
324 { "stealth", 30, 300, 0, 0 },
325 { "add intelligence", 60, 240, 33, 25 },
326 { "increase wisdom", 60, 220, 33, 25 },
327 { "sustain health", 80, 500, 0, 0 },
328 { "carrying", 20, 100, 100, 0 },
329 { "illumination", 30, 520, 0, 0 },
330 { "delusion", 20, 100, 75, 0 },
331 { "fear", 20, 100, 100, 0},
332 { "heroism", 30, 390, 0, 0 },
333 { "fire resistance", 40, 400, 0, 0 },
334 { "warmth", 40, 400, 0, 0 },
335 { "vampiric regeneration", 10,1000, 0, 0},
336 { "free action", 10, 370, 0, 0},
337 { "teleport control", 10, 700, 0, 0},
338 };
339
340 struct magic_item ws_magic[MAXSTICKS] = {
341 { "light", 90, 120, 20, 20 },
342 { "striking", 60, 115, 0, 0 },
343 { "lightning", 35, 200, 0, 0 },
344 { "fire", 35, 200, 0, 0 },
345 { "cold", 35, 200, 0, 0 },
346 { "polymorph", 80, 150, 0, 0 },
347 { "magic missile", 80, 170, 0, 0 },
348 { "slow", 80, 220, 25, 20 },
349 { "drain life", 80, 210, 20, 0 },
350 { "charging", 70, 400, 0, 0 },
351 { "teleport", 90, 140, 25, 20 },
352 { "cancellation", 40, 130, 0, 0 },
353 { "confusion", 35, 100, 15, 0},
354 { "disintegration", 10, 300, 33, 0},
355 { "petrification", 30, 240, 0, 0},
356 { "paralyzation", 30, 180, 15, 0},
357 { "degeneration", 30, 250, 30, 0},
358 { "curing", 10, 250, 25, 0},
359 { "wonder", 50, 110, 0, 0},
360 { "fear", 30, 180, 0, 0},
361 };
362
363 /*
364 * WARNING: unique miscellaneous magic items must be put at the end
365 * of this list. They MUST be the last items. The function
366 * create_obj() in wizard.c depends on it.
367 */
368 struct magic_item m_magic[MAXMM] = {
369 { "alchemy jug", 40, 240, 0, 0},
370 { "beaker of potions", 60, 300, 0, 0},
371 { "book of spells", 60, 300, 0, 0},
372 { "boots of elvenkind", 50, 500, 0, 0},
373 { "bracers of defense", 140, 100, 15, 0},
374 { "chime of opening", 50, 250, 0, 0},
375 { "chime of hunger", 50, 100,100, 0},
376 { "cloak of displacement", 60, 500, 0, 0},
377 { "cloak of protection", 70, 200, 15, 0},
378 { "drums of panic", 40, 350, 0, 0},
379 { "dust of disappearance", 40, 300, 0, 0},
380 { "dust of choking", 30, 100,100, 0},
381 { "gauntlets of dexterity", 30, 600, 25, 0},
382 { "gauntlets of ogre power", 30, 600, 25, 0},
383 { "jewel of attacks", 40, 150,100, 0},
384 { "keoghtoms ointment", 50, 200, 0, 0},
385 { "robe of powerlessness", 30, 100,100, 0},
386 { "gauntlets of fumbling", 30, 100,100, 0},
387 { "necklace of adaptation", 20, 500, 0, 0},
388 { "necklace of strangulation",30, 110,100, 0},
389 { "boots of dancing", 30, 120,100, 0},
390 { "book of skills", 20, 650, 0, 0},
391 };
392
393
394 struct magic_item rel_magic[MAXRELIC] = {
395 { "Daggers of Musty Doit", 0, 50000, 0, 0},
396 { "Cloak of Emori", 0, 50000, 0, 0},
397 { "Ankh of Heil", 0, 50000, 0, 0},
398 { "Staff of Ming", 0, 50000, 0, 0},
399 { "Wand of Orcus", 0, 50000, 0, 0},
400 { "Rod of Asmodeus", 0, 50000, 0, 0},
401 { "Amulet of Yendor", 0, 50000, 0, 0},
402 { "Mandolin of Brian", 0, 50000, 0, 0},
403 { "Horn of Geryon", 0, 50000, 0, 0},
404 { "Morning Star of Hruggek", 0, 50000, 0, 0},
405 { "Flail of Yeenoghu", 0, 50000, 0, 0},
406 { "Eye of Vecna", 0, 50000, 0, 0},
407 { "Axe of Aklad", 0, 50000, 0, 0},
408 { "Quill of Nagrom", 0, 50000, 0, 0},
409 { "Amulet of Stonebones", 0, 50000, 0, 0},
410 { "Ring of Surtur", 0, 50000, 0, 0},
411 };
412 /*
413 * food and fruits that you get
414 */
415 struct magic_item foods[MAXFOODS] = {
416 { "food ration", 800, 50, 750, 0},
417 { "apple", 10, 20, 300, 0},
418 { "banana", 10, 20, 300, 0},
419 { "blueberry", 10, 20, 300, 0},
420 { "candleberry", 10, 20, 300, 0},
421 { "caprifig", 10, 20, 300, 0},
422 { "dewberry", 10, 20, 300, 0},
423 { "elderberry", 10, 20, 300, 0},
424 { "gooseberry", 10, 20, 300, 0},
425 { "guanabana", 10, 20, 300, 0},
426 { "hagberry", 10, 20, 300, 0},
427 { "jaboticaba", 10, 20, 300, 0},
428 { "peach", 10, 20, 300, 0},
429 { "pitanga", 10, 20, 300, 0},
430 { "prickly pear", 10, 20, 300, 0},
431 { "rambutan", 10, 20, 300, 0},
432 { "sapodilla", 10, 20, 300, 0},
433 { "soursop", 10, 20, 300, 0},
434 { "strawberry", 10, 20, 300, 0},
435 { "sweetsop", 10, 20, 300, 0},
436 { "whortleberry", 10, 20, 300, 0},
437 };
438
439 /*
440 * these are the spells that a magic user can cast
441 */
442 struct spells magic_spells[MAXSPELLS] = {
443 { P_TFIND, 3, TYP_POTION, 0 },
444 { S_IDENT, 5, TYP_SCROLL, 0 },
445 { S_LIGHT, 7, TYP_SCROLL, ISBLESSED },
446 { S_REMOVE, 7, TYP_SCROLL, 0 },
447 { S_CONFUSE, 10, TYP_SCROLL, 0 },
448 { WS_MISSILE, 15, TYP_STICK, 0 },
449 { S_TELEP, 20, TYP_SCROLL, 0 },
450 { S_SLEEP, 20, TYP_SCROLL, 0 },
451 { P_FLY, 20, TYP_POTION, 0 },
452 { P_SEEINVIS, 20, TYP_POTION, 0 },
453 { WS_COLD, 25, TYP_STICK, 0 },
454 { WS_ELECT, 25, TYP_STICK, 0 },
455 { WS_FIRE, 25, TYP_STICK, 0 },
456 { P_HASTE, 30, TYP_POTION, 0 },
457 { WS_CANCEL, 30, TYP_STICK, 0 },
458 { P_PHASE, 40, TYP_POTION, 0 },
459 { S_HOLD, 50, TYP_SCROLL, 0 },
460 { WS_CHARGE, 55, TYP_STICK, ISBLESSED },
461 { S_PROTECT, 60, TYP_SCROLL, 0 },
462 { S_ALLENCH, 70, TYP_SCROLL, 0 },
463 };
464
465 /*
466 * these are the spells that a cleric can cast
467 */
468 struct spells cleric_spells[MAXPRAYERS] = {
469 { P_MFIND, 3, TYP_POTION, 0 },
470 { P_TFIND, 7, TYP_POTION, 0 },
471 { S_LIGHT, 10, TYP_SCROLL, ISBLESSED },
472 { S_REMOVE, 15, TYP_SCROLL, 0 },
473 { P_HEALING, 20, TYP_POTION, 0 },
474 { P_FFIND, 24, TYP_POTION, 0 },
475 { S_FINDTRAPS, 26, TYP_SCROLL, 0 },
476 { S_CURING, 27, TYP_SCROLL, 0 },
477 { WS_PARALYZE, 30, TYP_STICK, ISBLESSED },
478 { S_MAP, 31, TYP_SCROLL, 0 },
479 { P_CLEAR, 32, TYP_POTION, 0 },
480 { WS_FEAR, 33, TYP_STICK, ISBLESSED },
481 { P_SEEINVIS, 35, TYP_POTION, 0 },
482 { P_RESTORE, 40, TYP_POTION, 0 },
483 { P_PHASE, 43, TYP_POTION, 0 },
484 { S_TELEP, 45, TYP_SCROLL, 0 },
485 { WS_CURING, 50, TYP_STICK, ISBLESSED },
486 { WS_DRAIN, 50, TYP_STICK, 0 },
487 };
488
489 /*
490 * these are the spells that a druid can chant
491 */
492 struct spells druid_spells[MAXCHANTS] = {
493 { P_TFIND, 3, TYP_POTION, 0 },
494 { P_MFIND, 3, TYP_POTION, 0 },
495 { S_LIGHT, 7, TYP_SCROLL, ISBLESSED },
496 { S_CONFUSE, 10, TYP_SCROLL, 0 },
497 { S_MAP, 10, TYP_SCROLL, 0 },
498 { P_FFIND, 15, TYP_POTION, 0 },
499 { P_HEALING, 20, TYP_POTION, 0 },
500 { S_CURING, 25, TYP_SCROLL, 0 },
501 { P_FLY, 27, TYP_POTION, ISBLESSED },
502 { P_FIRE, 30, TYP_POTION, ISBLESSED },
503 { P_COLD, 30, TYP_POTION, ISBLESSED },
504 { P_LIGHTNING, 30, TYP_POTION, ISBLESSED },
505 { S_HOLD, 35, TYP_SCROLL, 0 },
506 { WS_CURING, 40, TYP_STICK, ISBLESSED },
507 { P_PHASE, 45, TYP_POTION, 0 },
508 { S_CHARM, 50, TYP_SCROLL, ISBLESSED },
509 };
510
511
512 /*
513 * these are the scrolls that a quill can write
514 */
515 struct quill quill_scrolls[MAXQUILL] = {
516 { S_GFIND, 4, },
517 { S_IDENT, 5, },
518 { S_LIGHT, 6, },
519 { S_REMOVE, 7, },
520 { S_MAP, 10, },
521 { S_SLEEP, 20, },
522 { S_TELEP, 30, },
523 { S_CONFUSE, 40, },
524 { S_CURING, 50, },
525 { S_HOLD, 70, },
526 { S_PROTECT, 90, },
527 { S_SCARE, 110, },
528 { S_ALLENCH, 130, },
529 };
530
531 char *cnames[NUM_CHARTYPES-1][NUM_CNAMES] = {
532 { "Veteran", "Warrior", /* Fighter */
533 "Swordsman", "Hero",
534 "Swashbuckler", "Myrmidon",
535 "Champion", "Superhero",
536 "Lord", "Lord",
537 "Lord", "Lord",
538 "Lord", "Lord",
539 "Lord", "Lord",
540 "Lord"
541 },
542 { "Runner", "Strider", /* Ranger */
543 "Scout", "Courser",
544 "Tracker", "Guide",
545 "Pathfinder", "Ranger",
546 "Ranger Knight", "Ranger Lord",
547 "Ranger Lord", "Ranger Lord",
548 "Ranger Lord", "Ranger Lord",
549 "Ranger Lord", "Ranger Lord",
550 "Ranger Lord"
551 },
552 { "Gallant", "Keeper", /* Paladin */
553 "Protector", "Defender",
554 "Warder", "Guardian",
555 "Chevalier", "Justiciar",
556 "Paladin", "Paladin",
557 "Paladin", "Paladin",
558 "Paladin", "Paladin",
559 "Paladin", "Paladin",
560 "Paladin"
561 },
562 { "Prestidigitator", "Evoker", /* Magic User */
563 "Conjurer", "Theurgist",
564 "Thaumaturgist", "Magician",
565 "Enchanter", "Warlock",
566 "Sorcerer", "Necromancer",
567 "Wizard I", "Wizard II",
568 "Wizard III", "Wizard IV",
569 "Wizard V", "Wizard VI",
570 "High Wizard"
571 },
572 { "Acolyte", "Adept", /* Cleric */
573 "Priest", "Curate",
574 "Prefect", "Canon",
575 "Lama", "Patriarch",
576 "High Priest", "High Priest",
577 "High Priest", "High Priest",
578 "High Priest", "High Priest",
579 "High Priest", "High Priest",
580 "High Priest"
581 },
582 { "Rogue", "Footpad", /* Thief */
583 "Cutpurse", "Robber",
584 "Burglar", "Filcher",
585 "Sharper", "Magsman",
586 "Thief", "Master Thief",
587 "Master Thief", "Master Thief",
588 "Master Thief", "Master Thief",
589 "Master Thief", "Master Thief",
590 "Master Thief"
591 },
592 { "Bravo", "Rutterkin", /* Assassin */
593 "Waghalter", "Murderer",
594 "Thug", "Killer",
595 "Cutthroat", "Executioner",
596 "Assassin", "Expert Assassin",
597 "Senior Assassin", "Chief Assassin",
598 "Prime Assassin", "Guildmaster Assassin",
599 "Grandfather Assassin", "Grandfather Assassin",
600 "Grandfather Assassin"
601 },
602 { "Aspirant", "Ovate", /* Druid */
603 "Initiate 1st Circle", "Initiate 2nd Circle",
604 "Initiate 3rd Circle", "Initiate 4th Circle",
605 "Initiate 5th Circle", "Initiate 6th Circle",
606 "Initiate 7th Circle", "Initiate 8th Circle",
607 "Initiate 9th Circle", "Druid",
608 "Archdruid", "The Great Druid",
609 "The Great Druid", "The Great Druid",
610 "The Great Druid",
611 },
612 { "Novice", "Initiate", /* Monk */
613 "Brother", "Disciple",
614 "Immaculate", "Master",
615 "Superior Master", "Master of Dragons",
616 "Master of North Wind", "Master of West Wind",
617 "Master of South Wind", "Master of East Wind",
618 "Master of Winter", "Master of Autumn",
619 "Master of Summer", "Master of Spring",
620 "Grand Master"
621 }
622 } ;
623
624 struct h_list helpstr[] = {
625 '?', " prints help",
626 '/', " identify object",
627 '=', " identify screen character",
628 'h', " left",
629 'j', " down",
630 'k', " up",
631 'l', " right",
632 'y', " up & left",
633 'u', " up & right",
634 'b', " down & left",
635 'n', " down & right",
636 'H', " run left",
637 'J', " run down",
638 'K', " run up",
639 'L', " run right",
640 'Y', " run up & left",
641 'U', " run up & right",
642 'B', " run down & left",
643 'N', " run down & right",
644 't', "<dir> throw something",
645 'f', "<dir> forward until find something",
646 'z', "<dir> zap a wand or staff",
647 '>', " go down a staircase",
648 '<', " go up a staircase",
649 's', " search for trap/secret door",
650 '.', " rest for a while",
651 'i', " inventory",
652 'I', " inventory single item",
653 'q', " quaff potion",
654 'r', " read paper",
655 'e', " eat food",
656 'w', " wield a weapon",
657 'W', " wear something",
658 'T', " take off something",
659 'd', " drop object",
660 'P', " pick up object(s)",
661 CTRL('N'), " name object or monster",
662 'm', " mark object (specific)",
663 'o', " examine/set options",
664 'c', " chant",
665 'C', " cast a spell",
666 'p', " pray",
667 'a', " affect the undead",
668 '^', " set a trap",
669 'G', " sense gold",
670 'D', " dip something (into a pool)",
671 '*', " count up gold pieces",
672 CTRL('T'), "<dir> take (steal) from (direction)",
673 CTRL('U'), " use miscellaneous magic item",
674 CTRL('L'), " redraw screen",
675 CTRL('R'), " repeat last message",
676 ESCAPE, " cancel command",
677 'v', " print program version number",
678 '!', " shell escape",
679 'S', " save game",
680 'Q', " quit",
681 0, 0
682 } ;
683
684 struct h_list wiz_help[] = {
685 CTRL('A'), " system activity",
686 CTRL('C'), " move to another dungeon level",
687 CTRL('D'), " down 1 dungeon level",
688 CTRL('E'), " food remaining",
689 CTRL('F'), " display entire level",
690 CTRL('H'), " jump 9 experience levels",
691 CTRL('I'), " inventory of level",
692 CTRL('J'), " teleport",
693 CTRL('M'), " recharge staff",
694 CTRL('P'), " toggle wizard status",
695 CTRL('U'), " up 1 dungeon level",
696 CTRL('X'), " detect monsters",
697 CTRL('Z'), " identify",
698 'M', " make object",
699 0, 0
700 };
701
702
703 #define HPT(x) x
704 struct monster monsters[NUMMONST+1] = {
705 /* {"Name",
706 CARRY, NORMAL, WANDER, APPEAR, INTEL,
707 {ATTRIBUTES},
708 "SUMMONED_CREATURE", NUMBER_SUMMONED,
709 ADDED_EXPERIENCE/HIT_POINT,
710 {str dex, move, exp, level, "armor", hit_points,
711 "damage"}}, */
712 {"unknown",
713 0, FALSE, FALSE, '\0', "",
714 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
715 0,
716 0, 0,
717 {0, 0, 0, 0, 0, 0, HPT(""),
718 ""}},
719 {"giant rat",
720 0, TRUE, TRUE, 'R', "2-4",
721 {ISMEAN, CANDISEASE},
722 0, 0,
723 1,
724 {10, 10, 6, 7, 1, 7, HPT("1d4"),
725 "1d3"}},
726 {"kobold",
727 10, TRUE, TRUE, 'K', "8",
728 {ISMEAN, CANSHOOT, CARRYWEAPON},
729 0, 0,
730 1,
731 {9, 10, 6, 5, 1, 7, HPT("1d4"),
732 "1d4"}},
733 {"gnome",
734 10, TRUE, FALSE, 'G', "11-12",
735 {CANSHOOT, CARRYPOTION, CARRYWEAPON},
736 0, 0,
737 1,
738 {10, 10, 6, 8, 1, 5, HPT("1d6"),
739 "1d6"}},
740 {"bat",
741 0, TRUE, TRUE, 'b', "2-4",
742 {ISMEAN, CANDISEASE, ISFLY, AREMANY},
743 0, 0,
744 0,
745 {10, 10, 6, 5, 1, 10, HPT("1d4"),
746 "1d1"}},
747 {"halfling",
748 10, TRUE, FALSE, 'H', "11-12",
749 {CANSHOOT, CARRYPOTION, CARRYWEAPON},
750 0, 0,
751 1,
752 {8, 10, 6, 9, 1, 4, HPT("1d6"),
753 "1d6"}},
754 {"dwarf",
755 15, TRUE, FALSE, 'D', "11-12",
756 {CANSHOOT, CARRYPOTION, CARRYWEAPON},
757 0, 0,
758 1,
759 {10, 10, 6, 10, 1, 4, HPT("1d8"),
760 "1d8"}},
761 {"orc",
762 15, TRUE, TRUE, 'O', "8",
763 {ISMEAN, CANSHOOT, CARRYGOLD, CARRYWEAPON},
764 0, 0,
765 1,
766 {12, 10, 6, 10, 1, 6, HPT("1d8"),
767 "1d8"}},
768 {"xvart",
769 100, TRUE, TRUE, 'x', "14-15",
770 {ISMEAN, CARRYDAGGER, AREMANY},
771 0, 0,
772 1,
773 {8, 10, 6, 7, 1, 7, HPT("1d4"),
774 "1d4"}},
775 {"manes",
776 0, TRUE, TRUE, 'M', "2-4",
777 {ISMEAN, MAGICHIT, ISUNDEAD, TURNABLE},
778 0, 0,
779 1,
780 {10, 10, 6, 18, 1, 7, HPT("1d8"),
781 "1d2/1d2/1d4"}},
782 {"elf",
783 50, TRUE, FALSE, 'E', "13-20",
784 {CANSHOOT, CARRYPOTION, CARRYSCROLL, CARRYWEAPON},
785 0, 0,
786 2,
787 {12, 10, 6, 20, 1, 5, HPT("1d8+1"),
788 "1d10"}},
789 {"hobgoblin",
790 10, TRUE, TRUE, 'h', "8-10",
791 {ISMEAN, CANSHOOT, CARRYWEAPON},
792 0, 0,
793 2,
794 {14, 10, 6, 20, 1, 5, HPT("1d8+1"),
795 "1d8"}},
796 {"fire beetle",
797 0, TRUE, TRUE, 'B', "0",
798 {ISMEAN, HASFIRE},
799 0, 0,
800 2,
801 {10, 10, 6, 20, 1, 4, HPT("1d8+2"),
802 "2d4"}},
803 {"giant ant",
804 0, TRUE, TRUE, 'A', "1",
805 {ISMEAN, CANPOISON},
806 0, 0,
807 3,
808 {10, 10, 6, 40, 2, 3, HPT("2d8"),
809 "1d6/1d6"}},
810 {"zombie",
811 0, TRUE, TRUE, 'Z', "0",
812 {ISMEAN, ISUNDEAD, TURNABLE},
813 0, 0,
814 2,
815 {10, 10, 6, 20, 2, 8, HPT("2d8"),
816 "1d8"}},
817 {"ear seeker",
818 0, TRUE, TRUE, 'e', "0",
819 {ISMEAN, CANINFEST, AREMANY, CANSURPRISE},
820 0, 0,
821 0,
822 {10, 10, 6, 5, 1, 9, HPT("1d1"),
823 "1d1"}},
824 {"shrieker",
825 0, TRUE, FALSE, 'S', "0",
826 {CANSHRIEK, NOMOVE, NOSTAB},
827 0, 0,
828 1,
829 {10, 10, 6, 10, 3, 7, HPT("3d8"),
830 "0d0"}},
831 {"stirge",
832 0, TRUE, TRUE, 's', "1",
833 {ISMEAN, CANDRAW, ISFLY},
834 0, 0,
835 2,
836 {10, 10, 6, 36, 4, 8, HPT("1d8+1"),
837 "1d3"}},
838 {"gas spore",
839 0, TRUE, FALSE, 'a', "0",
840 {ISMEAN, CANEXPLODE, CANINFEST, ISFLY},
841 0, 0,
842 5,
843 {10, 10, 18, 90, 1, 9, HPT("1d1"),
844 "1d1"}},
845 {"troglodyte",
846 5, TRUE, TRUE, 'T', "5-7",
847 {ISMEAN, CANSMELL, CANSHOOT, CARRYGOLD, CARRYWEAPON},
848 0, 0,
849 2,
850 {10, 10, 6, 36, 2, 5, HPT("2d8"),
851 "1d3/1d3/2d5"}},
852 {"lemure",
853 0, TRUE, FALSE, 'L', "2-4",
854 {ISMEAN, ISREGEN, MAGICHIT, ISUNDEAD, TURNABLE},
855 0, 0,
856 3,
857 {10, 10, 9, 65, 3, 7, HPT("3d8"),
858 "1d3"}},
859 {"bugbear",
860 5, TRUE, TRUE, 'b', "5-8",
861 {ISMEAN, CANSHOOT, CANSURPRISE, CARRYGOLD, CARRYPOTION,
862 CARRYWEAPON},
863 0, 0,
864 4,
865 {16, 10, 6, 135, 3, 5, HPT("3d8+1"),
866 "2d4"}},
867 {"wererat",
868 20, TRUE, TRUE, 'r', "11-12",
869 {ISMEAN, MAGICHIT, CARRYFOOD, CANSUMMON},
870 "giant rat", 2,
871 4,
872 {10, 10, 6, 150, 3, 6, HPT("3d8+1"),
873 "1d8"}},
874 {"ghoul",
875 0, TRUE, TRUE, 'g', "5-7",
876 {ISMEAN, CANPARALYZE, ISUNDEAD, TURNABLE},
877 0, 0,
878 2,
879 {10, 10, 6, 65, 2, 6, HPT("2d8"),
880 "1d3/1d3/1d6"}},
881 {"leprechaun",
882 100, TRUE, FALSE, 'l', "15-16",
883 {CARRYGOLD, STEALGOLD},
884 0, 0,
885 1,
886 {10, 10, 3, 80, 6, 3, HPT("1d4+1"),
887 "0d0"}},
888 {"gray ooze",
889 50, TRUE, FALSE, 'o', "1",
890 {ISMEAN, CANRUST, ISSCAVENGE, NOCOLD, NOFIRE, NOSTAB,CARRYFOOD},
891 0, 0,
892 5,
893 {10, 10, 10, 200, 3, 8, HPT("3d8+3"),
894 "2d8"}},
895 {"giant tick",
896 0, TRUE, TRUE, 't', "0",
897 {ISMEAN, CANDRAW, CANDISEASE},
898 0, 0,
899 2,
900 {10, 10, 9, 105, 3, 3, HPT("3d8"),
901 "1d4"}},
902 {"ogre",
903 50, TRUE, TRUE, 'O', "5-7",
904 {ISMEAN, CARRYGOLD, CARRYWEAPON},
905 0, 0,
906 5,
907 {18, 10, 7, 90, 4, 5, HPT("4d8+1"),
908 "1d10"}},
909 {"very young dragon",
910 10, TRUE, FALSE, 'd', "15-16",
911 {ISMEAN, CANBRANDOM, ISGREED, CARRYGOLD},
912 0, 0,
913 9,
914 {10, 10, 6, 100, 9, -1, HPT("9d1"),
915 "1d4/1d4/2d4"}},
916 {"centaur",
917 15, TRUE, FALSE, 'C', "5-10",
918 {CANSHOOT, CARRYPOTION, CARRYGOLD, CARRYWEAPON},
919 0, 0,
920 4,
921 {10, 10, 2, 85, 4, 4, HPT("4d8"),
922 "1d6/1d6"}},
923 {"nymph",
924 100, TRUE, FALSE, 'N', "15-16",
925 {STEALMAGIC, CARRYSCROLL, CARRYPOTION, CARRYSTICK},
926 0, 0,
927 3,
928 {10, 10, 6, 350, 4, 9, HPT("3d8"),
929 "0d0"}},
930 {"violet fungi",
931 0, TRUE, FALSE, 'F', "0",
932 {ISMEAN, CANHOLD, NOMOVE, CANROT, NOSTAB},
933 0, 0,
934 4,
935 {10, 10, 6, 135, 3, 7, HPT("3d8"),
936 "5d1"}},
937 {"gelatinous cube",
938 90, TRUE, TRUE, 'c', "0",
939 {ISMEAN, ISSCAVENGE, CANPARALYZE, NOSTAB, CARRYFOOD},
940 0, 0,
941 4,
942 {10, 10, 8, 150, 4, 8, HPT("4d8"),
943 "2d4"}},
944 {"fire toad",
945 0, TRUE, TRUE, 'f', "5-7",
946 {ISMEAN, CANBFIRE, NOFIRE},
947 0, 0,
948 4,
949 {10, 10, 6, 150, 4, 10, HPT("4d8+1"),
950 "2d4"}},
951 {"blink dog",
952 0, TRUE, TRUE, 'B', "8-10",
953 {ISMEAN, CANBLINK},
954 0, 0,
955 5,
956 {10, 10, 6, 170, 4, 5, HPT("4d8"),
957 "1d6"}},
958 {"rust monster",
959 0, TRUE, TRUE, 'R', "1",
960 {ISMEAN, CANRUST},
961 0, 0,
962 4,
963 {10, 10, 6, 185, 5, 2, HPT("3d8"),
964 "0d0/0d0"}},
965 {"ghast",
966 0, TRUE, TRUE, 'G', "11-12",
967 {CANPARALYZE, CANSTINK, ISMEAN, ISUNDEAD, TURNABLE},
968 0, 0,
969 4,
970 {10, 10, 6, 190, 4, 4, HPT("4d8"),
971 "1d4/1d4/1d8"}},
972 {"blindheim",
973 0, TRUE, FALSE, 'b', "1",
974 {CANBLIND, ISMEAN},
975 0, 0,
976 4,
977 {8, 10, 6, 200, 2, 1, HPT("4d8+2"),
978 "1d8"}},
979 {"shadow",
980 0, TRUE, TRUE, 'S', "5-7",
981 {ISSHADOW, ISMEAN, CANCHILL, ISUNDEAD, TURNABLE},
982 0, 0,
983 4,
984 {10, 10, 6, 255, 3, 7, HPT("3d8+3"),
985 "1d4+1"}},
986 {"gargoyle",
987 5, TRUE, TRUE, 'g', "5-7",
988 {ISMEAN, MAGICHIT},
989 0, 0,
990 5,
991 {10, 10, 6, 165, 4, 5, HPT("4d8+4"),
992 "1d3/1d3/1d6/1d4"}},
993 {"quasit",
994 30, TRUE, TRUE, 'Q', "5-7",
995 {ISMEAN, ISREGEN, MAGICHIT, CANSURPRISE, CANITCH, CARRYSTICK,
996 CARRYSCROLL, CARRYGOLD, CARRYPOTION, NOCOLD, NOFIRE, NOBOLT},
997 0, 0,
998 3,
999 {10, 10, 6, 325, 7, 2, HPT("3d8"),
1000 "1d2/1d2/1d4"}},
1001 {"imp",
1002 25, TRUE, TRUE, 'I', "8-10",
1003 {ISMEAN, ISREGEN, MAGICHIT, CANPOISON, CANSURPRISE,
1004 CANTELEPORT, CARRYRING, CARRYSTICK, NOCOLD, NOBOLT, NOFIRE},
1005 0, 0,
1006 3,
1007 {10, 10, 6, 275, 2, 2, HPT("2d8+2"),
1008 "1d4"}},
1009 {"su-monster", 10, TRUE, TRUE, 's', "8-10",
1010 {ISMEAN, CARRYSCROLL, CARRYGOLD, CARRYFOOD},
1011 0, 0,
1012 6,
1013 {10, 10, 5, 225, 5, 6, HPT("5d8+5"),
1014 "4d4/2d4"}},
1015 {"owlbear",
1016 5, TRUE, TRUE, 'O', "5-7",
1017 {ISMEAN, CANHUG, CARRYRING, CARRYFOOD},
1018 0, 0,
1019 8,
1020 {10, 10, 8, 225, 5, 5, HPT("5d8+2"),
1021 "1d6/1d6/2d6"}},
1022 {"doppleganger",
1023 0, TRUE, TRUE, 'D', "11-12",
1024 {ISMEAN, CANSURPRISE},
1025 0, 0,
1026 4,
1027 {10, 10, 6, 330, 10, 5, HPT("4d8"),
1028 "1d12"}},
1029 {"yeti",
1030 30, TRUE, TRUE, 'Y', "8-10",
1031 {ISMEAN, CANPARALYZE, CANHUG, NOCOLD, CANSURPRISE,
1032 CARRYGOLD, CARRYPOTION},
1033 0, 0,
1034 8,
1035 {13, 10, 6, 500, 6, 6, HPT("4d8+4"),
1036 "1d6/1d6"}},
1037 {"leucrotta",
1038 0, TRUE, FALSE, 'L', "8-10",
1039 {ISMEAN},
1040 0, 0,
1041 8,
1042 {10, 10, 2, 475, 6, 4, HPT("6d8+1"),
1043 "3d6/1d6/1d6"}},
1044 {"cockatrice",
1045 0, TRUE, TRUE, 'C', "1",
1046 {ISMEAN, TOUCHSTONE},
1047 0, 0,
1048 5,
1049 {10, 10, 5, 315, 5, 6, HPT("5d8"),
1050 "1d3"}},
1051 {"wight",
1052 0, TRUE, TRUE, 'W', "8-10",
1053 {ISMEAN, CANDRAIN, MAGICHIT, ISUNDEAD, TURNABLE},
1054 0, 0,
1055 5,
1056 {10, 10, 6, 540, 4, 5, HPT("4d8+3"),
1057 "1d4"}},
1058 {"troll",
1059 50, TRUE, FALSE, 'T', "5-7",
1060 {ISMEAN, ISREGEN, CARRYFOOD, CARRYGOLD},
1061 0, 0,
1062 8,
1063 {18, 10, 8, 600, 6, 4, HPT("6d8+6"),
1064 "1d4+4/1d4+4/2d6"}},
1065 {"jackalwere",
1066 50, TRUE, TRUE, 'J', "11-12",
1067 {ISMEAN, CANSHOOT, CANSNORE, MAGICHIT, CARRYFOOD, CARRYGOLD,
1068 CARRYSCROLL},
1069 0, 0,
1070 4,
1071 {10, 10, 6, 800, 4, 4, HPT("4d8"),
1072 "2d4"}},
1073 {"wraith",
1074 0, TRUE, TRUE, 'w', "11-12",
1075 {ISMEAN, CANDRAIN, MAGICHIT, ISUNDEAD, TURNABLE},
1076 0, 0,
1077 6,
1078 {10, 10, 6, 575, 5, 4, HPT("5d8+3"),
1079 "1d6"}},
1080 {"mimic",
1081 20, TRUE, FALSE, 'M', "2-10",
1082 {ISMEAN, ISDISGUISE, NODETECT, CANHOLD, CARRYFOOD, CARRYRING,
1083 CARRYGOLD, NOMOVE},
1084 0, 0,
1085 12,
1086 {10, 10, 6, 1300, 9, 7, HPT("10d8"),
1087 "3d4"}},
1088 {"erinyes",
1089 25, TRUE, TRUE, 'E', "8-10",
1090 {ISMEAN, CANFRIGHTEN, CANSUMMON, TURNABLE, CANPAIN, CANSEE,
1091 NOFIRE, CANTELEPORT, CARRYRING, CARRYSTICK},
1092 "ghoul", 3,
1093 8,
1094 {10, 10, 6, 875, 7, 2, HPT("6d8+6"),
1095 "2d4"}},
1096 {"lava child",
1097 0, TRUE, TRUE, 'l', "8-10",
1098 {ISMEAN, NOMETAL},
1099 0, 0,
1100 8,
1101 {10, 10, 6, 950, 5, 4, HPT("5d8+1"),
1102 "1d6/1d6/2d12"}},
1103 {"basilisk",
1104 0, TRUE, FALSE, 'B', "1",
1105 {ISMEAN, LOOKSTONE},
1106 0, 0,
1107 8,
1108 {10, 10, 6, 1000, 6, 4, HPT("6d8+1"),
1109 "1d10"}},
1110 {"mummy",
1111 20, TRUE, FALSE, 'm', "5-7",
1112 {ISMEAN,CANINFEST, MAGICHIT, CANFRIGHTEN, HALFDAMAGE, ISUNDEAD,
1113 TURNABLE, CARRYRING},
1114 0, 0,
1115 8,
1116 {10, 10, 6, 1150, 6, 3, HPT("6d8+3"),
1117 "1d12"}},
1118 {"otyugh",
1119 0, TRUE, TRUE, 'o', "5-10",
1120 {ISMEAN, CANDISEASE},
1121 0, 0,
1122 8,
1123 {10, 10, 6, 700, 7, 3, HPT("7d8"),
1124 "1d8/1d8/1d4+1"}},
1125 {"adult dragon",
1126 30, TRUE, FALSE, 'd', "15-16",
1127 {ISMEAN, CANBRANDOM, ISGREED, CANFRIGHTEN, CARRYGOLD,
1128 CARRYPOTION},
1129 0, 0,
1130 9,
1131 {10, 10, 6, 1000, 9, -1, HPT("45d1"),
1132 "1d6/1d6/2d6"}},
1133 {"invisible stalker",
1134 0, TRUE, TRUE, 'i', "13-14",
1135 {ISMEAN, ISINVIS},
1136 0, 0,
1137 10,
1138 {10, 10, 4, 1090, 8, 3, HPT("8d8"),
1139 "4d4"}},
1140 {"xorn",
1141 0, TRUE, TRUE, 'X', "8-10",
1142 {ISMEAN, CANINWALL, NOCOLD, NOFIRE, CANSURPRISE, NOBOLT},
1143 0, 0,
1144 10,
1145 {10, 10, 6, 1275, 7, -2, HPT("7d8+7"),
1146 "1d3/1d3/1d3/4d6"}},
1147 {"chimera",
1148 0, TRUE, FALSE, 'c', "2-4",
1149 {ISMEAN, CANBFIRE, NOFIRE},
1150 0, 0,
1151 12,
1152 {10, 10, 6, 1000, 9, 6, HPT("9d8"),
1153 "1d3/1d3/1d4/1d4/2d4/3d4"}},
1154 {"horned devil",
1155 5, TRUE, TRUE, 'H', "13-14",
1156 {ISMEAN, CANFRIGHTEN, CANINFEST, CANPOISON, MAGICHIT, CANSUMMON,
1157 NOFIRE, CANTELEPORT, CARRYGOLD, CARRYRING, CARRYSTICK},
1158 "wight", 2,
1159 6,
1160 {10, 10, 6, 1320, 7, -3, HPT("5d8+5"),
1161 "1d4/1d4/1d4+1/1d3"}},
1162 {"specter",
1163 0, TRUE, TRUE, 'S', "13-14",
1164 {ISMEAN, DOUBLEDRAIN, ISUNDEAD, TURNABLE},
1165 0, 0,
1166 10,
1167 {10, 10, 6, 1650, 7, 2, HPT("7d8+3"),
1168 "1d8"}},
1169 {"will-o-wisp", 100, TRUE, FALSE, 'W', "15-16",
1170 {ISMEAN, CANSURPRISE, ISFLY, CARRYGOLD, CARRYMISC, NOBOLT},
1171 0, 0,
1172 12,
1173 {10, 10, 5, 2000, 9, -8, HPT("9d8"),
1174 "2d8"}},
1175 {"lamia",
1176 0, TRUE, TRUE, 'L', "13-14",
1177 {ISMEAN, TAKEWISDOM},
1178 0, 0,
1179 9,
1180 {10, 10, 2, 1500, 9, 3, HPT("9d8"),
1181 "1d4/1d4"}},
1182 {"neo-otyugh",
1183 0, TRUE, TRUE, 'N', "10-12",
1184 {ISMEAN, CANDISEASE},
1185 0, 0,
1186 10,
1187 {12, 10, 6, 1500, 10, 0, HPT("12d8"),
1188 "2d6/2d6/1d3"}},
1189 {"barbed devil",
1190 0, TRUE, TRUE, 'B', "11-12",
1191 {TOUCHFEAR, CANSUMMON, ISMEAN, CANHOLD, TURNABLE, NOFIRE,
1192 CANTELEPORT},
1193 "ghast", 4,
1194 10,
1195 {10, 10, 6, 1425, 8, 0, HPT("8d8"),
1196 "2d4/2d4/3d4"}},
1197 {"vrock",
1198 10, TRUE, TRUE, 'V', "5-7",
1199 {ISMEAN, CANSUMMON, CANSEE, TURNABLE, CANTELEPORT, CARRYGOLD,
1200 CARRYRING, CARRYSTICK},
1201 "erinyes", 2,
1202 10,
1203 {10, 10, 6, 1500, 8, 0, HPT("8d8"),
1204 "1d4/1d4/1d8/1d8/1d6"}},
1205 {"shambling mound",
1206 25, TRUE, TRUE, 's', "5-7",
1207 {ISMEAN, CANSUFFOCATE, NOCOLD, NOFIRE, CANHOLD, CARRYGOLD,
1208 CARRYFOOD, CARRYRING},
1209 0, 0,
1210 10,
1211 {10, 10, 7, 1800, 9, 0, HPT("9d8"),
1212 "2d8/2d8"}},
1213 {"umber hulk",
1214 40, TRUE, TRUE, 'U', "8-10",
1215 {ISMEAN, CANHUH, CANINWALL, CANTUNNEL, CARRYSCROLL,
1216 CARRYPOTION, CARRYFOOD},
1217 0, 0,
1218 12,
1219 {10, 10, 6, 1700, 8, 2, HPT("8d8+8"),
1220 "3d4/3d4/2d5"}},
1221 {"ettin",
1222 0, TRUE, TRUE, 'e', "5-7",
1223 {ISMEAN, CANSHOOT, AREMANY},
1224 0, 0,
1225 14,
1226 {10, 10, 6, 1950, 10, 3, HPT("10d8"),
1227 "2d8/3d6"}},
1228 {"black pudding",
1229 30, TRUE, FALSE, 'P', "0",
1230 {ISMEAN, CANRUST, NOCOLD, BOLTDIVIDE, BLOWDIVIDE, ISSCAVENGE,
1231 NOSTAB, CARRYSCROLL, CARRYPOTION, CARRYRING},
1232 0, 0,
1233 14,
1234 {10, 10, 6, 2000, 10, 6, HPT("10d8"),
1235 "3d8"}},
1236 {"hezrou",
1237 15, TRUE, TRUE, 'h', "5-7",
1238 {ISMEAN, CANFRIGHTEN, CANSEE, CANSUMMON, TURNABLE, CANTELEPORT,
1239 CARRYPOTION, CARRYRING, CARRYSTICK},
1240 "wight", 3,
1241 12,
1242 {10, 10, 6, 2000, 9, -2, HPT("9d8"),
1243 "1d3/1d3/4d4"}},
1244 {"glabrezu",
1245 25, TRUE, FALSE, 'G', "8-10",
1246 {ISMEAN, CANFRIGHTEN, CANSEE, CANSUMMON, TURNABLE, CANTELEPORT,
1247 CARRYSCROLL, CARRYPOTION, CARRYGOLD},
1248 "wraith", 3,
1249 14,
1250 {10, 10, 6, 2400, 10, -4, HPT("10d8"),
1251 "2d6/2d6/1d3/1d3/1d4+1"}},
1252 {"bone devil",
1253 0, TRUE, TRUE, 'b', "11-12",
1254 {ISMEAN, CANFRIGHTEN, CANSEE, CANSUMMON, CANSURPRISE, CANCHILL,
1255 TURNABLE, NOFIRE, NOCOLD, CANTELEPORT},
1256 "ghast", 3,
1257 12,
1258 {10, 10, 6, 2800, 9, -1, HPT("9d8"),
1259 "2d4"}},
1260 {"white pudding",
1261 30, TRUE, FALSE, 'w', "0",
1262 {ISMEAN, CANDISSOLVE, NOCOLD, BOLTDIVIDE, BLOWDIVIDE,
1263 ISSCAVENGE, NOSTAB, CARRYRING, CARRYSCROLL,
1264 CARRYPOTION},
1265 0, 0,
1266 14,
1267 {10, 10, 6, 2200, 9, 8, HPT("10d8"),
1268 "7d4"}},
1269 {"vampire",
1270 20, TRUE, TRUE, 'v', "15-16",
1271 {ISMEAN, ISREGEN, CANSUCK, ISUNDEAD, TURNABLE, CARRYMISC},
1272 0, 0,
1273 12,
1274 {20, 10, 6, 3800, 8, 1, HPT("8d8+3"),
1275 "1d6+4"}},
1276 {"ghost",
1277 20, TRUE, FALSE, 'g', "13-14",
1278 {ISMEAN, CANFRIGHTEN, CANAGE, ISUNDEAD, TURNABLE, CARRYMISC,
1279 CMAGICHIT, CANINWALL},
1280 0, 0,
1281 10,
1282 {13, 10, 5, 5000, 12, 0, HPT("10d8"),
1283 "1d12"}},
1284 {"intellect devourer",
1285 0, TRUE, FALSE, 'D', "11-12",
1286 {ISMEAN, TAKEINTEL, CMAGICHIT, HALFDAMAGE, CANSURPRISE, NOFIRE,
1287 NOCOLD},
1288 0, 0,
1289 9,
1290 {10, 10, 4, 5000, 7, 4, HPT("6d8+6"),
1291 "1d4/1d4/1d4/1d4"}},
1292 {"ice devil",
1293 30, TRUE, FALSE, 'I', "13-14",
1294 {ISMEAN, CANSEE, ISREGEN, CANFRIGHTEN, CANSUMMON, CANBICE,
1295 NOCOLD, NOFIRE, TOUCHSLOW, CANTELEPORT, CARRYSCROLL, CARRYRING,
1296 CARRYSTICK},
1297 "bone devil", 2,
1298 16,
1299 {20, 10, 6, 4400, 11, -4, HPT("11d8"),
1300 "1d4/1d4/2d4/3d4"}},
1301 {"purple worm",
1302 70, TRUE, TRUE, 'p', "0",
1303 {ISMEAN, CANPOISON, CANINWALL, CANTUNNEL, CARRYFOOD, CARRYGOLD},
1304 0, 0,
1305 20,
1306 {10, 10, 6, 4900, 15, 6, HPT("15d8"),
1307 "2d12/2d4"}},
1308 {"ancient brass dragon",
1309 70, TRUE, FALSE, 'r', "13-14",
1310 {CANBSGAS, CANBFGAS, ISGREED, CANSEE, NOSLEEP, NOFEAR,
1311 CARRYGOLD, CARRYRING},
1312 0, 0,
1313 50,
1314 {10, 10, 6, 10000, 8, 2, HPT("0d8+64"),
1315 "1d4/1d4/4d4"}},
1316 {"pit fiend",
1317 100, TRUE, TRUE, 'f', "15-16",
1318 {ISMEAN, CANSEE, BMAGICHIT, CANFRIGHTEN, CANHOLD, CANSUMMON,
1319 CANBFIRE, NOFIRE, CANTELEPORT, CARRYSTICK, HASFIRE, ISFLY},
1320 "barbed devil", 3,
1321 18,
1322 {22, 10, 6, 10000, 13, -3, HPT("13d8"),
1323 "1d4+4/1d6+6"}},
1324 {"ancient white dragon",
1325 70, TRUE, TRUE, 'W', "8-9",
1326 {ISMEAN, CANBICE, ISGREED, CANSEE, NOCOLD, CARRYGOLD,
1327 CARRYRING},
1328 0, 0,
1329 50,
1330 {10, 10, 6, 15000, 7, 3, HPT("0d8+56"),
1331 "1d4/1d4/2d8"}},
1332 {"ancient black dragon",
1333 70, TRUE, TRUE, 'a', "8-10",
1334 {ISMEAN, CANBACID, NOACID, ISGREED, CANSEE, CARRYGOLD,
1335 CARRYSTICK},
1336 0, 0,
1337 50,
1338 {10, 10, 6, 20000, 8, 3, HPT("0d8+64"),
1339 "1d4/1d4/3d6"}},
1340 {"lich",
1341 60, TRUE, TRUE, 'l', "19-20",
1342 {ISMEAN, CANDRAIN, CANSEE, CANPARALYZE, CANFRIGHTEN, MAGICHIT,
1343 ISUNDEAD, TURNABLE, NOBOLT, CANMISSILE, CANSUMMON, CARRYGOLD,
1344 CARRYSCROLL, CARRYPOTION, CARRYRING, CARRYSTICK},
1345 "specter", 2,
1346 16,
1347 {10, 10, 6, 20000, 17, 0, HPT("11d8"),
1348 "1d10"}},
1349 {"titan",
1350 80, TRUE, FALSE, 't', "17-20",
1351 {ISMEAN, ISSHADOW, CANSEE, CANMISSILE, CARRYRING, CARRYSTICK,
1352 CANTELEPORT},
1353 0, 0,
1354 30,
1355 {13, 10, 5, 20000, 19, -3, HPT("22d8"),
1356 "8d6"}},
1357 {"ancient copper dragon",
1358 70, TRUE, FALSE, 'c', "13-14",
1359 {CANBACID, NOACID, CANBSLGAS, ISGREED, CANSEE, NOSLOW,
1360 CARRYGOLD, CARRYSTICK},
1361 0, 0,
1362 50,
1363 {10, 10, 6, 20000, 9, 1, HPT("0d8+72"),
1364 "1d4/1d4/5d4"}},
1365 {"ancient green dragon",
1366 50, TRUE, TRUE, 'E', "10-12",
1367 {ISMEAN, CANBGAS, ISGREED, CANSEE, NOGAS, CARRYGOLD,
1368 CARRYRING, CARRYSTICK},
1369 0, 0,
1370 50,
1371 {10, 10, 6, 20000, 9, 2, HPT("0d8+72"),
1372 "1d6/1d6/2d10"}},
1373 {"ancient bronze dragon",
1374 50, TRUE, FALSE, 'L', "15-16",
1375 {CANBCGAS, CANBBOLT, CANBFGAS, ISGREED, CANSEE, NOFEAR, NOBOLT,
1376 ISCLEAR, CARRYGOLD, CARRYRING, CARRYSTICK},
1377 0, 0,
1378 50,
1379 {10, 10, 6, 20000, 10, 0, HPT("0d8+80"),
1380 "1d6/1d6/4d6"}},
1381 {"ancient blue dragon",
1382 50, TRUE, TRUE, 'u', "12-14",
1383 {ISMEAN, CANBBOLT, ISGREED, CANSEE, NOBOLT, CARRYGOLD,
1384 CARRYSCROLL, CARRYRING, CARRYSTICK},
1385 0, 0,
1386 50,
1387 {10, 10, 6, 20000, 10, 2, HPT("0d8+80"),
1388 "1d6/1d6/3d8"}},
1389 {"ancient silver dragon",
1390 40, TRUE, FALSE, 'S', "15-16",
1391 {CANBICE, CANBPGAS, ISGREED, CANSEE, CANMISSILE, NOCOLD,
1392 NOPARALYZE, CARRYGOLD, CARRYSCROLL, CARRYRING, CARRYSTICK},
1393 0, 0,
1394 50,
1395 {10, 10, 6, 20000, 11, -1, HPT("0d8+88"),
1396 "1d6/1d6/5d6"}},
1397 {"frost giant",
1398 50, TRUE, TRUE, 'F', "5-10",
1399 {ISMEAN, NOCOLD, CARRYGOLD, AREMANY},
1400 0, 0,
1401 40,
1402 {25, 10, 5, 20000, 15, 4, HPT("10d8+4"),
1403 "4d6"}},
1404 {"ancient red dragon",
1405 40, TRUE, TRUE, 'R', "15-16",
1406 {ISMEAN, CANBFIRE, ISGREED, CANSEE, NOFIRE, CARRYGOLD,
1407 CARRYPOTION, CARRYRING, CARRYSTICK},
1408 0, 0,
1409 50,
1410 {10, 10, 6, 20000, 11, -1, HPT("0d8+88"),
1411 "1d8/1d8/3d10"}},
1412 {"ancient gold dragon",
1413 50, TRUE, FALSE, 'G', "17-18",
1414 {CANBFIRE, CANBGAS, ISGREED, CANSEE, CANMISSILE, NOFIRE, NOGAS,
1415 CARRYGOLD, CARRYPOTION, CARRYRING, CARRYSTICK, CANTELEPORT},
1416 0, 0,
1417 50,
1418 {10, 10, 6, 20000, 12, -2, HPT("0d8+96"),
1419 "1d8/1d8/6d6"}},
1420 {"fire giant",
1421 30, TRUE, TRUE, 'f', "6-10",
1422 {ISMEAN, CARRYGOLD, NOFIRE, AREMANY},
1423 0, 0,
1424 45,
1425 {27, 10, 5, 26000, 15, 4, HPT("11d8+5"),
1426 "5d6"}},
1427 {"storm giant",
1428 30, TRUE, TRUE, 's', "8-10",
1429 {ISMEAN, NOBOLT, CANBBOLT, CARRYRING},
1430 0, 0,
1431 50,
1432 {30, 10, 5, 30000, 15, 2, HPT("15d8+8"),
1433 "7d6"}},
1434 {"dwarven thief (Musty Doit)",
1435 50, TRUE, TRUE, 'm', "16",
1436 {ISMEAN, ISUNIQUE, ISINVIS, NOFIRE, NOGAS, NOSTAB, STEALGOLD,
1437 STEALMAGIC, CANPAIN, ISFLY, CARRYGOLD, CANSURPRISE, CANSEE,
1438 CARRYMDAGGER, CARRYMISC, CARRYPOTION, CANBSTAB, ISSCAVENGE,
1439 NODETECT},
1440 0, 0,
1441 0,
1442 {9, 18, 8, 300000, 22, -5, HPT("0d8+95"),
1443 "6d4+70/6d4+70"}},
1444 {"demon prince (Jubilex)",
1445 100, TRUE, FALSE, 'J', "18",
1446 {ISMEAN, ISUNIQUE, CANFRIGHTEN, ISREGEN, BMAGICHIT, ISSHADOW,
1447 CANHOLD, CANDISEASE, CANSUMMON, CANSEE, CANROT, CANINFEST,
1448 CANRUST, NOSTAB, CANTELEPORT, CARRYMISC, CANSMELL, CANSTINK,
1449 NOFIRE},
1450 "black pudding", 4,
1451 0,
1452 {18, 18, 5, 100000, 20, -7, HPT("0d8+88"),
1453 "4d10"}},
1454 {"arch devil (Geryon)",
1455 100, TRUE, FALSE, 'g', "16",
1456 {ISMEAN, ISUNIQUE, BMAGICHIT, CANSEE, ISSHADOW, CANFRIGHTEN,
1457 CANHUH, CANPOISON, CANSUMMON, NOFIRE, CANTELEPORT, NOFIRE,
1458 CARRYMISC, CARRYHORN},
1459 "ice devil", 5,
1460 0,
1461 {18, 18, 5, 110000, 30, -3, HPT("0d8+133"),
1462 "3d6/3d6/2d4"}},
1463 {"arch devil (Dispater)",
1464 100, TRUE, FALSE, 'd', "18",
1465 {ISMEAN, ISUNIQUE, CANSEE, CANFRIGHTEN, CANHUH, BMAGICHIT,
1466 CANSUMMON, CARRYSTICK, NOFIRE, CANTELEPORT, CARRYMISC},
1467 "ghost", 9,
1468 0,
1469 {18, 18, 5, 120000, 36, -2, HPT("0d8+144"),
1470 "4d6"}},
1471 {"demon prince (Yeenoghu)",
1472 100, TRUE, FALSE, 'Y', "16",
1473 {ISMEAN, ISREGEN, ISUNIQUE, MAGICHIT, CANSEE, ISSHADOW, CANHOLD,
1474 CARRYFLAIL, CANFRIGHTEN, CANPARALYZE, CANSUMMON, CANHUH,
1475 CANMISSILE, CANTELEPORT, CARRYMISC, NOFIRE},
1476 "lich", 5,
1477 0,
1478 {18, 18, 5, 130000, 23, -5, HPT("0d8+100"),
1479 "3d6/3d6"}},
1480 {"witch (Emori)",
1481 50, TRUE, TRUE, 'w', "18",
1482 {ISMEAN, CANMISSILE, ISINVIS, CANBBOLT, CANBFIRE, CANBICE,
1483 CANSEE, CANSUMMON, ISUNIQUE, CANSNORE, ISFLY, TAKEINTEL,
1484 CANDANCE, CANDISEASE, NOBOLT, NOCOLD, NOFIRE, CARRYCLOAK,
1485 ISCLEAR, CARRYSCROLL, CARRYSTICK, CANTELEPORT, CANSLOW},
1486 "shambling mound", 7,
1487 0,
1488 {21, 12, 6, 140000, 25, 0, HPT("0d8+102"),
1489 "1d4/1d4"}},
1490 {"cleric of Thoth (Heil)",
1491 100, TRUE, TRUE, 'h', "16",
1492 {ISMEAN, CANSEE, NOFEAR, ISREGEN, CANHOLD, CANBFIRE, ISUNIQUE,
1493 DOUBLEDRAIN, CANSUMMON, NOFIRE, TOUCHFEAR, CANDISEASE, CANSUCK,
1494 CANSEE, TAKEWISDOM, CARRYANKH, CARRYRING, ISINVIS, ISFLY},
1495 "vampire", 9,
1496 0,
1497 {25, 15, 6, 150000, 25, -8, HPT("0d8+116"),
1498 "0d6+11"}},
1499 {"magician (Tsoming Zen)",
1500 80, TRUE, FALSE, 'z', "18",
1501 {ISMEAN, ISUNIQUE, ISINVIS, ISREGEN, CANBFIRE, CANBICE,
1502 CANBBOLT, CANMISSILE, NOFIRE, CANHOLD, CANFRIGHTEN, CANDISEASE,
1503 CANPAIN, CANSUMMON, CANSEE, ISFLY, CANTELEPORT,
1504 CARRYSTAFF, CARRYSTICK, NOSLOW, NOBOLT, NOCOLD},
1505 "ancient black dragon", 5,
1506 0,
1507 {18, 16, 6, 160000, 21, -4, HPT("0d8+125"),
1508 "2d4+1/2d4+1/2d4+1/2d4+1"}},
1509 {"poet (Brian)",
1510 80, TRUE, TRUE, 'p', "16",
1511 {ISMEAN, ISUNIQUE, STEALGOLD, ISSHADOW, CANSUMMON, ISREGEN,
1512 CANDISEASE, NOCOLD, NOBOLT, NOFIRE, NOFEAR, CANTUNNEL, CANSEE,
1513 CANINWALL, ISCLEAR, CARRYMANDOLIN, CARRYPOTION, CARRYRING},
1514 "umber hulk", 6,
1515 0,
1516 {19, 18, 5, 170000, 20, -2, HPT("0d8+156"),
1517 "8d8+48/4d4+36"}},
1518 {"lesser god (Hruggek)",
1519 100, TRUE, FALSE, 'H', "17",
1520 {ISMEAN, CANSEE, ISUNIQUE, CANSUMMON, ISREGEN, CANFRIGHTEN,
1521 CANTELEPORT, CARRYMISC, CARRYMSTAR, CANSMELL, CANBLINK},
1522 "purple worm", 6,
1523 0,
1524 {19, 18, 5, 180000, 25, 0, HPT("0d8+221"),
1525 "2d8/2d8"}},
1526 {"lesser god (Kurtulmak)",
1527 100, TRUE, TRUE, 'K', "19",
1528 {ISMEAN, CANFRIGHTEN, CANPOISON, CANSEE, ISUNIQUE, CANSUMMON,
1529 CANTELEPORT, CARRYMISC, CANBLINK},
1530 "lich", 3,
1531 0,
1532 {19, 18, 5, 190000, 27, 0, HPT("0d8+219"),
1533 "2d12/1d6"}},
1534 {"demigod (Vaprak \"The Destroyer\")",
1535 100, TRUE, TRUE, 'v', "18",
1536 {ISMEAN, ISUNIQUE, ISREGEN, MAGICHIT, CANSEE, CANSUMMON,
1537 CANTELEPORT, CARRYMISC, CANSMELL},
1538 "troll", 9,
1539 0,
1540 {18, 18, 5, 200000, 26, 0, HPT("0d8+198"),
1541 "2d10/2d10/1d12"}},
1542 {"hero (Aklad)",
1543 100, TRUE, FALSE, 'k', "16",
1544 {ISMEAN, ISUNIQUE, CANSUMMON, ISREGEN, NOCOLD, NOBOLT, NOFIRE,
1545 NOPARALYZE, NOFEAR, CANSEE, ISCLEAR, CARRYAXE, CARRYRING,
1546 CARRYMISC, CANBLINK},
1547 "ancient green dragon", 4,
1548 0,
1549 {25, 16, 4, 210000, 25, -10, HPT("0d8+196"),
1550 "2d8+23/2d8+23/1d6+19/1d6+19"}},
1551 {"magician/thief (Nagrom)",
1552 100, TRUE, TRUE, 'N', "19",
1553 {ISMEAN, ISUNIQUE, STEALMAGIC, ISINVIS, CANSUMMON, ISREGEN,
1554 CANMISSILE, CANSEE, CARRYQUILL, CARRYSCROLL, CARRYRING, ISFLY,
1555 CANBSTAB, CANBFIRE, CANBBOLT, CANBICE, NOCOLD, NOBOLT, NOFIRE,
1556 CANSURPRISE, NODETECT, CANTELEPORT, CANSLOW,
1557 CARRYSTICK},
1558 "ancient blue dragon", 5,
1559 0,
1560 {18, 18, 8, 220000, 26, -2, HPT("0d8+150"),
1561 "1d10+3/1d4+3"}},
1562 {"platinum dragon (Bahamut)",
1563 100, TRUE, FALSE, 'P', "20",
1564 {ISUNIQUE, CANBICE, CANBGAS, CANBBOLT, CANBRANDOM, CANSEE,
1565 NOCOLD, NOBOLT, NOGAS, NOFIRE, NOFEAR, NOSLEEP, NOSLOW,
1566 NOPARALYZE, CANMISSILE, CANSONIC, CANFRIGHTEN, CANSUMMON,
1567 CARRYMISC, CANTELEPORT, ISFLY},
1568 "ancient gold dragon", 4,
1569 0,
1570 {18, 18, 5, 230000, 38, -3, HPT("0d8+168"),
1571 "2d6/2d6/6d8"}},
1572 {"arch devil (Baalzebul)",
1573 100, TRUE, FALSE, 'B', "18",
1574 {ISMEAN, ISSHADOW, ISUNIQUE, BMAGICHIT, CANHOLD, CANPOISON,
1575 CANFRIGHTEN, CANHUH, CANSUMMON, CANSEE, NOFIRE, CANTELEPORT,
1576 CARRYMISC, CARRYSTICK, CANDRAIN},
1577 "ice devil", 9,
1578 0,
1579 {18, 18, 5, 240000, 37, -5, HPT("0d8+166"),
1580 "2d6"}},
1581 {"chromatic dragon (Tiamat)",
1582 100, TRUE, FALSE, 'C', "18",
1583 {ISMEAN, ISUNIQUE, CANBFIRE, CANBACID, CANBBOLT, CANBICE,
1584 CANBGAS, CANBRANDOM, CANSEE, NOFIRE, NOBOLT, NOCOLD, NOACID,
1585 NOGAS, CANSUMMON, CANMISSILE, CANFRIGHTEN, CARRYMISC,
1586 CARRYRING, CANTELEPORT, ISFLY},
1587 "ancient red dragon", 6,
1588 0,
1589 {18, 18, 5, 250000, 29, 0, HPT("0d8+128"),
1590 "2d8/3d6/2d10/3d8/3d10/1d6"}},
1591 {"demon prince (Orcus)",
1592 100, TRUE, FALSE, 'O', "20",
1593 {ISMEAN, ISUNIQUE, BMAGICHIT, CANPOISON, CANFRIGHTEN, CANSEE,
1594 CANBBOLT, CANSUMMON, NOBOLT, CANTELEPORT, CARRYWAND, NOFIRE,
1595 CARRYMISC, ISFLY, CARRYSTICK},
1596 "vampire", 9,
1597 0,
1598 {18, 18, 5, 260000, 27, -6, HPT("0d8+120"),
1599 "1d10+3/2d4"}},
1600 {"arch devil (Asmodeus)",
1601 100, TRUE, FALSE, 'A', "20",
1602 {ISMEAN, ISUNIQUE, CANSEE, ISSHADOW, CANHOLD, BMAGICHIT,
1603 CANFRIGHTEN, CANHUH, TOUCHSLOW, CANSUMMON, NOFIRE,
1604 CANTELEPORT, CARRYROD, CARRYMISC, CARRYSTICK, CANDRAIN},
1605 "pit fiend", 5,
1606 0,
1607 {18, 18, 5, 270000, 45, -7, HPT("0d8+199"),
1608 "1d10+4"}},
1609 {"demon prince (Demogorgon)",
1610 100, TRUE, FALSE, 'D', "20",
1611 {ISMEAN, CANHUH, BMAGICHIT, DOUBLEDRAIN, CANINFEST, CANSEE,
1612 CANFRIGHTEN, ISUNIQUE, CANSUMMON, CANROT, CANTELEPORT, NOFIRE,
1613 CANDISEASE, CARRYMISC, CANSUCK, CARRYSTICK},
1614 "pit fiend", 9,
1615 0,
1616 {18, 18, 5, 280000, 45, -8, HPT("0d8+200"),
1617 "1d6/1d6"}},
1618 {"greater god (Maglubiyet)",
1619 100, TRUE, FALSE, 'M', "19",
1620 {ISMEAN, ISUNIQUE, CMAGICHIT, CANSEE, ISREGEN, CANSUMMON,
1621 CANTELEPORT, CARRYMISC, CANFRIGHTEN, CARRYSTICK},
1622 "lich", 6,
1623 0,
1624 {19, 18, 5, 290000, 45, -1, HPT("0d8+350"),
1625 "2d10/2d10"}},
1626 {"greater god (Gruumsh)",
1627 100, TRUE, FALSE, 'G', "19",
1628 {ISMEAN, ISUNIQUE, CMAGICHIT, CANSEE, ISREGEN, CANSUMMON,
1629 CANTELEPORT, CARRYMISC, CANFRIGHTEN, CARRYSTICK},
1630 "lich", 9,
1631 0,
1632 {19, 18, 5, 300000, 45, -1, HPT("0d8+350"),
1633 "3d10/3d10"}},
1634 {"lesser god (Thrym)",
1635 100, TRUE, FALSE, 'T', "16",
1636 {ISMEAN, NOCOLD, ISUNIQUE, ISREGEN, CMAGICHIT, CANSEE,
1637 CANSUMMON, CARRYMISC, CANTELEPORT, CANFRIGHTEN, CARRYSTICK},
1638 "frost giant", 9,
1639 0,
1640 {25, 18, 5, 310000, 45, -2, HPT("0d8+360"),
1641 "4d10/4d10"}},
1642 {"lesser god (Surtur)",
1643 100, TRUE, FALSE, 't', "19",
1644 {ISMEAN, NOFIRE, ISUNIQUE, ISREGEN, CMAGICHIT, CANSEE,
1645 CANFRIGHTEN, CANSUMMON, CANMISSILE, CANTELEPORT, CARRYMISC,
1646 CARRYSTICK, CARRYFOOD, CARRYSURTURRING},
1647 "fire giant", 9,
1648 0,
1649 {25, 18, 5, 320000, 45, -2, HPT("0d8+380"),
1650 "5d10/5d10"}},
1651 {"lesser god (Skoraeus Stonebones)",
1652 100, TRUE, FALSE, 'b', "19",
1653 {ISMEAN, ISUNIQUE, ISREGEN, CMAGICHIT, CANSEE, CANSUMMON, ISFLY,
1654 CANMISSILE, CANINWALL, CANTELEPORT, CARRYMISC, CARRYSTICK,
1655 CANFRIGHTEN, CARRYBAMULET},
1656 "storm giant", 9,
1657 0,
1658 {25, 25, 6, 330000, 45, -1, HPT("0d8+380"),
1659 "6d10/6d10"}},
1660 {"ruler of greater titans (Yendor)",
1661 100, TRUE, TRUE, 'y', "25",
1662 {ISMEAN, CANINWALL, ISUNIQUE, ISREGEN, CMAGICHIT,ISFLY,
1663 CANSUMMON, CANMISSILE, CANFRIGHTEN, CANBFIRE, NOFIRE,
1664 CANHOLD, CARRYYAMULET, CANSEE, CANDANCE, ISSHADOW,
1665 CANTELEPORT, CARRYMISC, CARRYRING, CARRYSTICK},
1666 "titan", 15,
1667 0,
1668 {25, 25, 6, 340000, 45, -6, HPT("0d8+400"),
1669 "7d10/7d10"}},
1670 {"the creator of liches (Vecna)",
1671 100, TRUE, TRUE, 'V', "25",
1672 {ISMEAN, CANINWALL, ISUNIQUE, ISREGEN, CMAGICHIT, CANSNORE,
1673 CANSUMMON, CANMISSILE, CANFRIGHTEN, CANBFIRE, NOFIRE, ISFLY,
1674 CANHOLD, CARRYEYE, CANSEE, CANDANCE, ISINVIS, HALFDAMAGE,
1675 CANTELEPORT, CARRYMISC, CARRYRING, CARRYSTICK, LOOKSTONE,
1676 CANSLOW, CANBLIND},
1677 "lich", 15,
1678 0,
1679 {25, 25, 6, 350000, 47, -8, HPT("0d8+450"),
1680 "6d10/6d10"}},
1681 {"quartermaster",
1682 0, FALSE, TRUE, 'q', "18",
1683 {CANSELL, ISCLEAR, CANTELEPORT, ISFLY, CANSEE, STEALMAGIC,
1684 NOFEAR, CANBSTAB},
1685 0, 0,
1686 50,
1687 {25, 18, 12, 20, 1, -4, HPT("1d8+1"),
1688 "1d10"}},
1689 };