Mercurial > hg > early-roguelike
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 }; |