Commit | Line | Data |
---|---|---|
ad9c78b7 KB |
1 | /* |
2 | * Copyright (c) 1988 Regents of the University of California. | |
3 | * All rights reserved. | |
4 | * | |
5 | * Redistribution and use in source and binary forms are permitted | |
6 | * provided that the above copyright notice and this paragraph are | |
7 | * duplicated in all such forms and that any documentation, | |
8 | * advertising materials, and other materials related to such | |
9 | * distribution and use acknowledge that the software was developed | |
10 | * by the University of California, Berkeley. The name of the | |
11 | * University may not be used to endorse or promote products derived | |
12 | * from this software without specific prior written permission. | |
13 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR | |
14 | * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED | |
15 | * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. | |
16 | */ | |
17 | ||
18 | #ifndef lint | |
f9ab636d | 19 | static char sccsid[] = "@(#)data.c 5.2 (Berkeley) %G%"; |
ad9c78b7 KB |
20 | #endif /* not lint */ |
21 | ||
22 | /* data.c Larn is copyrighted 1986 by Noah Morgan. */ | |
23 | #define NODEFS | |
24 | #include "header.h" | |
25 | ||
26 | /* | |
27 | class[c[LEVEL]-1] gives the correct name of the players experience level | |
28 | */ | |
29 | static char aa1[] = " mighty evil master"; | |
30 | static char aa2[] = "apprentice demi-god"; | |
31 | static char aa3[] = " minor demi-god "; | |
32 | static char aa4[] = " major demi-god "; | |
33 | static char aa5[] = " minor deity "; | |
34 | static char aa6[] = " major deity "; | |
35 | static char aa7[] = " novice guardian "; | |
36 | static char aa8[] = "apprentice guardian"; | |
37 | static char aa9[] = " The Creator "; | |
38 | char *class[]= | |
39 | { " novice explorer ", "apprentice explorer", " practiced explorer",/* -3*/ | |
40 | " expert explorer ", " novice adventurer", " adventurer ",/* -6*/ | |
41 | "apprentice conjurer", " conjurer ", " master conjurer ",/* -9*/ | |
42 | " apprentice mage ", " mage ", " experienced mage ",/* -12*/ | |
43 | " master mage ", " apprentice warlord", " novice warlord ",/* -15*/ | |
44 | " expert warlord ", " master warlord ", " apprentice gorgon ",/* -18*/ | |
45 | " gorgon ", " practiced gorgon ", " master gorgon ",/* -21*/ | |
46 | " demi-gorgon ", " evil master ", " great evil master ",/* -24*/ | |
47 | aa1 , aa1 , aa1 ,/* -27*/ | |
48 | aa1 , aa1 , aa1 ,/* -30*/ | |
49 | aa1 , aa1 , aa1 ,/* -33*/ | |
50 | aa1 , aa1 , aa1 ,/* -36*/ | |
51 | aa1 , aa1 , aa1 ,/* -39*/ | |
52 | aa2 , aa2 , aa2 ,/* -42*/ | |
53 | aa2 , aa2 , aa2 ,/* -45*/ | |
54 | aa2 , aa2 , aa2 ,/* -48*/ | |
55 | aa3 , aa3 , aa3 ,/* -51*/ | |
56 | aa3 , aa3 , aa3 ,/* -54*/ | |
57 | aa3 , aa3 , aa3 ,/* -57*/ | |
58 | aa4 , aa4 , aa4 ,/* -60*/ | |
59 | aa4 , aa4 , aa4 ,/* -63*/ | |
60 | aa4 , aa4 , aa4 ,/* -66*/ | |
61 | aa5 , aa5 , aa5 ,/* -69*/ | |
62 | aa5 , aa5 , aa5 ,/* -72*/ | |
63 | aa5 , aa5 , aa5 ,/* -75*/ | |
64 | aa6 , aa6 , aa6 ,/* -78*/ | |
65 | aa6 , aa6 , aa6 ,/* -81*/ | |
66 | aa6 , aa6 , aa6 ,/* -84*/ | |
67 | aa7 , aa7 , aa7 ,/* -87*/ | |
68 | aa8 , aa8 , aa8 ,/* -90*/ | |
69 | aa8 , aa8 , aa8 ,/* -93*/ | |
70 | " earth guardian ", " air guardian ", " fire guardian ",/* -96*/ | |
71 | " water guardian ", " time guardian ", " ethereal guardian ",/* -99*/ | |
72 | aa9 , aa9 , aa9 ,/* -102*/ | |
73 | }; | |
74 | ||
75 | /* | |
76 | table of experience needed to be a certain level of player | |
77 | skill[c[LEVEL]] is the experience required to attain the next level | |
78 | */ | |
79 | #define MEG 1000000 | |
80 | long skill[] = { | |
81 | 0, 10, 20, 40, 80, 160, 320, 640, 1280, 2560, 5120, /* 1-11 */ | |
82 | 10240, 20480, 40960, 100000, 200000, 400000, 700000, 1*MEG, /* 12-19 */ | |
83 | 2*MEG,3*MEG,4*MEG,5*MEG,6*MEG,8*MEG,10*MEG, /* 20-26 */ | |
84 | 12*MEG,14*MEG,16*MEG,18*MEG,20*MEG,22*MEG,24*MEG,26*MEG,28*MEG, /* 27-35 */ | |
85 | 30*MEG,32*MEG,34*MEG,36*MEG,38*MEG,40*MEG,42*MEG,44*MEG,46*MEG, /* 36-44 */ | |
86 | 48*MEG,50*MEG,52*MEG,54*MEG,56*MEG,58*MEG,60*MEG,62*MEG,64*MEG, /* 45-53 */ | |
87 | 66*MEG,68*MEG,70*MEG,72*MEG,74*MEG,76*MEG,78*MEG,80*MEG,82*MEG, /* 54-62 */ | |
88 | 84*MEG,86*MEG,88*MEG,90*MEG,92*MEG,94*MEG,96*MEG,98*MEG,100*MEG, /* 63-71 */ | |
89 | 105*MEG,110*MEG,115*MEG,120*MEG, 125*MEG, 130*MEG, 135*MEG, 140*MEG, /* 72-79 */ | |
90 | 145*MEG,150*MEG,155*MEG,160*MEG, 165*MEG, 170*MEG, 175*MEG, 180*MEG, /* 80-87 */ | |
91 | 185*MEG,190*MEG,195*MEG,200*MEG, 210*MEG, 220*MEG, 230*MEG, 240*MEG, /* 88-95 */ | |
92 | 250*MEG,260*MEG,270*MEG,280*MEG, 290*MEG, 300*MEG /* 96-101*/ | |
93 | }; | |
94 | #undef MEG | |
95 | ||
96 | char *lpbuf,*lpnt,*inbuffer,*lpend; /* input/output pointers to the buffers */ | |
97 | struct cel *cell; /* pointer to the dungeon storage */ | |
98 | short hitp[MAXX][MAXY]; /* monster hp on level */ | |
99 | short iarg[MAXX][MAXY]; /* arg for the item array */ | |
100 | char item[MAXX][MAXY]; /* objects in maze if any */ | |
101 | char know[MAXX][MAXY]; /* 1 or 0 if here before */ | |
102 | char mitem[MAXX][MAXY]; /* monster item array */ | |
103 | char moved[MAXX][MAXY]; /* monster movement flags */ | |
104 | char stealth[MAXX][MAXY]; /* 0=sleeping 1=awake monst*/ | |
105 | char iven[26]; /* inventory for player */ | |
106 | short ivenarg[26]; /* inventory for player */ | |
107 | char lastmonst[40]; /* this has the name of the current monster */ | |
f9ab636d | 108 | char beenhere[MAXLEVEL+MAXVLEVEL]={0}; /* 1 if have been on this level */ |
ad9c78b7 KB |
109 | char VERSION=VER; /* this is the present version # of the program */ |
110 | char SUBVERSION=SUBVER; | |
111 | char nosignal=0; /* set to 1 to disable the signals from doing anything */ | |
112 | char predostuff=0; /* 2 means that the trap handling routines must do a | |
113 | showplayer() after a trap. 0 means don't showplayer() | |
114 | 0 - we are in create player screen | |
115 | 1 - we are in welcome screen | |
116 | 2 - we are in the normal game */ | |
117 | char loginname[20]; /* players login name */ | |
118 | char logname[LOGNAMESIZE]; /* players name storage for scoring */ | |
119 | char sex=1; /* default is a man 0=woman */ | |
120 | char boldon=1; /* 1=bold objects 0=inverse objects */ | |
121 | char ckpflag=0; /* 1 if want checkpointing of game, 0 otherwise */ | |
122 | char cheat=0; /* 1 if the player has fudged save file */ | |
123 | char level=0; /* cavelevel player is on = c[CAVELEVEL] */ | |
124 | char wizard=0; /* the wizard mode flag */ | |
125 | short lastnum=0; /* the number of the monster last hitting player */ | |
126 | short hitflag=0; /* flag for if player has been hit when running */ | |
127 | short hit2flag=0; /* flag for if player has been hit when running */ | |
128 | short hit3flag=0; /* flag for if player has been hit flush input */ | |
129 | short playerx,playery; /* the room on the present level of the player */ | |
130 | short lastpx,lastpy; /* 0 --- MAXX-1 or 0 --- MAXY-1 */ | |
131 | short oldx,oldy; | |
132 | short lasthx=0,lasthy=0; /* location of monster last hit by player */ | |
133 | short nobeep=0; /* true if program is not to beep */ | |
134 | unsigned long randx=33601; /* the random number seed */ | |
135 | long initialtime=0; /* time playing began */ | |
136 | long gtime=0; /* the clock for the game */ | |
137 | long outstanding_taxes=0; /* present tax bill from score file */ | |
138 | long c[100],cbak[100]; /* the character description arrays */ | |
139 | int enable_scroll=0; /* constant for enabled/disabled scrolling regn */ | |
140 | char aborted[] = " aborted"; | |
141 | struct sphere *spheres=0; /*pointer to linked list for spheres of annihilation*/ | |
142 | char *levelname[]= | |
143 | { " H"," 1"," 2"," 3"," 4"," 5"," 6"," 7"," 8"," 9","10","V1","V2","V3" }; | |
144 | ||
145 | char objnamelist[]=" ATOP%^F&^+M=%^$$f*OD#~][[)))(((||||||||{?!BC}o:@.<<<<EVV))([[]]](^ [H*** ^^ S tsTLc............................................"; | |
146 | char monstnamelist[]=" BGHJKOScjtAELNQRZabhiCTYdegmvzFWflorXV pqsyUkMwDDPxnDDuD ..............................................................."; | |
147 | char *objectname[]= | |
148 | { 0,"a holy altar","a handsome jewel encrusted throne","the orb","a pit", | |
149 | "a staircase leading upwards","an elevator going up","a bubbling fountain", | |
150 | "a great marble statue","a teleport trap","the college of Larn", | |
151 | "a mirror","the DND store","a staircase going down","an elevator going down", | |
152 | "the bank of Larn","the 5th branch of the Bank of Larn", | |
153 | "a dead fountain","gold","an open door","a closed door", | |
154 | "a wall","The Eye of Larn","plate mail","chain mail","leather armor", | |
155 | "a sword of slashing","Bessman's flailing hammer","a sunsword", | |
156 | "a two handed sword","a spear","a dagger", | |
157 | "ring of extra regeneration","a ring of regeneration","a ring of protection", | |
158 | "an energy ring","a ring of dexterity","a ring of strength", | |
159 | "a ring of cleverness","a ring of increase damage","a belt of striking", | |
160 | "a magic scroll","a magic potion","a book","a chest", | |
161 | "an amulet of invisibility","an orb of dragon slaying", | |
162 | "a scarab of negate spirit","a cube of undead control", | |
163 | "device of theft prevention","a brilliant diamond","a ruby", | |
164 | "an enchanting emerald","a sparkling sapphire","the dungeon entrance", | |
165 | "a volcanic shaft leaning downward","the base of a volcanic shaft", | |
166 | "a battle axe","a longsword","a flail","ring mail","studded leather armor", | |
167 | "splint mail","plate armor","stainless plate armor","a lance of death", | |
168 | "an arrow trap","an arrow trap","a shield","your home", | |
169 | "gold","gold","gold","a dart trap", | |
170 | "a dart trap","a trapdoor","a trapdoor","the local trading post", | |
171 | "a teleport trap", "a massive throne", | |
172 | "a sphere of annihilation","a handsome jewel encrusted throne", | |
173 | "the Larn Revenue Service","a fortune cookie","","","","","","", | |
174 | "","","","","","","","","","","","","","","","","","","","" | |
175 | }; | |
176 | ||
177 | \f | |
178 | /* | |
179 | * for the monster data | |
180 | * | |
181 | * array to do rnd() to create monsters <= a given level | |
182 | */ | |
183 | char monstlevel[] = { 5, 11, 17, 22, 27, 33, 39, 42, 46, 50, 53, 56, 59 }; | |
184 | ||
185 | struct monst monster[] = { | |
186 | /* NAME LV AC DAM ATT DEF GEN INT GOLD HP EXP | |
187 | ----------------------------------------------------------------- */ | |
188 | { "", 0, 0, 0, 0, 0, 0, 3, 0, 0, 0 }, | |
189 | { "bat", 1, 0, 1, 0, 0, 0, 3, 0, 1, 1 }, | |
190 | { "gnome", 1, 10, 1, 0, 0, 0, 8, 30, 2, 2 }, | |
191 | { "hobgoblin", 1, 14, 2, 0, 0, 0, 5, 25, 3, 2 }, | |
192 | { "jackal", 1, 17, 1, 0, 0, 0, 4, 0, 1, 1 }, | |
193 | { "kobold", 1, 20, 1, 0, 0, 0, 7, 10, 1, 1 }, | |
194 | ||
195 | { "orc", 2, 12, 1, 0, 0, 0, 9, 40, 4, 2 }, | |
196 | { "snake", 2, 15, 1, 0, 0, 0, 3, 0, 3, 1 }, | |
197 | { "giant centipede",2, 14, 0, 4, 0, 0, 3, 0, 1, 2 }, | |
198 | { "jaculi", 2, 20, 1, 0, 0, 0, 3, 0, 2, 1 }, | |
199 | { "troglodyte", 2, 10, 2, 0, 0, 0, 5, 80, 4, 3 }, | |
200 | { "giant ant", 2, 8, 1, 4, 0, 0, 4, 0, 5, 5 }, | |
201 | ||
202 | /* NAME LV AC DAM ATT DEF GEN INT GOLD HP EXP | |
203 | ----------------------------------------------------------------- */ | |
204 | ||
205 | { "floating eye", 3, 8, 1, 0, 0, 0, 3, 0, 5, 2 }, | |
206 | { "leprechaun", 3, 3, 0, 8, 0, 0, 3,1500, 13, 45 }, | |
207 | { "nymph", 3, 3, 0, 14, 0, 0, 9, 0, 18, 45 }, | |
208 | { "quasit", 3, 5, 3, 0, 0, 0, 3, 0, 10, 15 }, | |
209 | { "rust monster", 3, 4, 0, 1, 0, 0, 3, 0, 18, 25 }, | |
210 | { "zombie", 3, 12, 2, 0, 0, 0, 3, 0, 6, 7 }, | |
211 | ||
212 | { "assassin bug", 4, 9, 3, 0, 0, 0, 3, 0, 20, 15 }, | |
213 | { "bugbear", 4, 5, 4, 15, 0, 0, 5, 40, 20, 35 }, | |
214 | { "hell hound", 4, 5, 2, 2, 0, 0, 6, 0, 16, 35 }, | |
215 | { "ice lizard", 4, 11, 2, 10, 0, 0, 6, 50, 16, 25 }, | |
216 | { "centaur", 4, 6, 4, 0, 0, 0, 10, 40, 24, 45 }, | |
217 | ||
218 | /* NAME LV AC DAM ATT DEF GEN INT GOLD HP EXP | |
219 | ----------------------------------------------------------------- */ | |
220 | ||
221 | { "troll", 5, 4, 5, 0, 0, 0, 9, 80, 50, 300 }, | |
222 | { "yeti", 5, 6, 4, 0, 0, 0, 5, 50, 35, 100 }, | |
223 | { "white dragon", 5, 2, 4, 5, 0, 0, 16, 500, 55, 1000}, | |
224 | { "elf", 5, 8, 1, 0, 0, 0, 15, 50, 22, 35 }, | |
225 | { "gelatinous cube",5, 9, 1, 0, 0, 0, 3, 0, 22, 45 }, | |
226 | ||
227 | { "metamorph", 6, 7, 3, 0, 0, 0, 3, 0, 30, 40 }, | |
228 | { "vortex", 6, 4, 3, 0, 0, 0, 3, 0, 30, 55 }, | |
229 | { "ziller", 6, 15, 3, 0, 0, 0, 3, 0, 30, 35 }, | |
230 | { "violet fungi", 6, 12, 3, 0, 0, 0, 3, 0, 38, 100 }, | |
231 | { "wraith", 6, 3, 1, 6, 0, 0, 3, 0, 30, 325 }, | |
232 | { "forvalaka", 6, 2, 5, 0, 0, 0, 7, 0, 50, 280 }, | |
233 | ||
234 | /* NAME LV AC DAM ATT DEF GEN INT GOLD HP EXP | |
235 | ----------------------------------------------------------------- */ | |
236 | ||
237 | { "lama nobe", 7, 7, 3, 0, 0, 0, 6, 0, 35, 80 }, | |
238 | { "osequip", 7, 4, 3, 16, 0, 0, 4, 0, 35, 100 }, | |
239 | { "rothe", 7, 15, 5, 0, 0, 0, 3, 100, 50, 250 }, | |
240 | { "xorn", 7, 0, 6, 0, 0, 0, 13, 0, 60, 300 }, | |
241 | { "vampire", 7, 3, 4, 6, 0, 0, 17, 0, 50, 1000}, | |
242 | { "invisible stalker",7,3, 6, 0, 0, 0, 5, 0, 50, 350 }, | |
243 | ||
244 | { "poltergeist", 8, 1, 4, 0, 0, 0, 3, 0, 50, 450 }, | |
245 | { "disenchantress", 8, 3, 0, 9, 0, 0, 3, 0, 50, 500 }, | |
246 | { "shambling mound",8, 2, 5, 0, 0, 0, 6, 0, 45, 400 }, | |
247 | { "yellow mold", 8, 12, 4, 0, 0, 0, 3, 0, 35, 250 }, | |
248 | { "umber hulk", 8, 3, 7, 11, 0, 0, 14, 0, 65, 600 }, | |
249 | ||
250 | /* NAME LV AC DAM ATT DEF GEN INT GOLD HP EXP | |
251 | ----------------------------------------------------------------- */ | |
252 | ||
253 | { "gnome king", 9, -1, 10, 0, 0, 0, 18, 2000, 100,3000 }, | |
254 | { "mimic", 9, 5, 6, 0, 0, 0, 8, 0, 55, 99 }, | |
255 | { "water lord", 9, -10, 15, 7, 0, 0, 20, 0, 150,15000 }, | |
256 | { "bronze dragon", 9, 2, 9, 3, 0, 0, 16, 300, 80, 4000 }, | |
257 | { "green dragon", 9, 3, 8, 10, 0, 0, 15, 200, 70, 2500 }, | |
258 | { "purple worm", 9, -1, 11, 0, 0, 0, 3, 100, 120,15000 }, | |
259 | { "xvart", 9, -2, 12, 0, 0, 0, 13, 0, 90, 1000 }, | |
260 | ||
261 | { "spirit naga", 10, -20,12, 12, 0, 0, 23, 0, 95, 20000 }, | |
262 | { "silver dragon", 10, -1, 12, 3, 0, 0, 20, 700, 100,10000 }, | |
263 | { "platinum dragon",10, -5, 15, 13, 0, 0, 22, 1000, 130,24000 }, | |
264 | { "green urchin", 10, -3, 12, 0, 0, 0, 3, 0, 85, 5000 }, | |
265 | { "red dragon", 10, -2, 13, 3, 0, 0, 19, 800, 110,14000 }, | |
266 | ||
267 | { "type I demon lord", 12,-30, 18, 0, 0, 0, 20, 0, 140,50000 }, | |
268 | { "type II demon lord", 13,-30, 18, 0, 0, 0, 21, 0, 160,75000 }, | |
269 | { "type III demon lord",14,-30, 18, 0, 0, 0, 22, 0, 180,100000 }, | |
270 | { "type IV demon lord", 15,-35, 20, 0, 0, 0, 23, 0, 200,125000 }, | |
271 | { "type V demon lord", 16,-40, 22, 0, 0, 0, 24, 0, 220,150000 }, | |
272 | { "type VI demon lord", 17,-45, 24, 0, 0, 0, 25, 0, 240,175000 }, | |
273 | { "type VII demon lord",18,-70, 27, 6, 0, 0, 26, 0, 260,200000 }, | |
274 | { "demon prince", 25,-127,30, 6, 0, 0, 28, 0, 345,300000 } | |
275 | ||
276 | /* NAME LV AC DAM ATT DEF GEN INT GOLD HP EXP | |
277 | --------------------------------------------------------------------- */ | |
278 | }; | |
279 | ||
280 | /* name array for scrolls */ | |
281 | ||
282 | char *scrollname[] = { | |
283 | "\0enchant armor", | |
284 | "\0enchant weapon", | |
285 | "\0enlightenment", | |
286 | "\0blank paper", | |
287 | "\0create monster", | |
288 | "\0create artifact", | |
289 | "\0aggravate monsters", | |
290 | "\0time warp", | |
291 | "\0teleportation", | |
292 | "\0expanded awareness", | |
293 | "\0haste monsters", | |
294 | "\0monster healing", | |
295 | "\0spirit protection", | |
296 | "\0undead protection", | |
297 | "\0stealth", | |
298 | "\0magic mapping", | |
299 | "\0hold monsters", | |
300 | "\0gem perfection", | |
301 | "\0spell extension", | |
302 | "\0identify", | |
303 | "\0remove curse", | |
304 | "\0annihilation", | |
305 | "\0pulverization", | |
306 | "\0life protection", | |
307 | "\0 ", | |
308 | "\0 ", | |
309 | "\0 ", | |
310 | "\0 " | |
311 | }; | |
312 | ||
313 | /* name array for magic potions */ | |
314 | char *potionname[] = { | |
315 | "\0sleep", | |
316 | "\0healing", | |
317 | "\0raise level", | |
318 | "\0increase ability", | |
319 | "\0wisdom", | |
320 | "\0strength", | |
321 | "\0raise charisma", | |
322 | "\0dizziness", | |
323 | "\0learning", | |
324 | "\0gold detection", | |
325 | "\0monster detection", | |
326 | "\0forgetfulness", | |
327 | "\0water", | |
328 | "\0blindness", | |
329 | "\0confusion", | |
330 | "\0heroism", | |
331 | "\0sturdiness", | |
332 | "\0giant strength", | |
333 | "\0fire resistance", | |
334 | "\0treasure finding", | |
335 | "\0instant healing", | |
336 | " cure dianthroritis", | |
337 | "\0poison", | |
338 | "\0see invisible", | |
339 | "\0 ", | |
340 | "\0 ", | |
341 | "\0 ", | |
342 | "\0 ", | |
343 | "\0 ", | |
344 | "\0 ", | |
345 | "\0 ", | |
346 | "\0 ", | |
347 | "\0 ", | |
348 | "\0 ", | |
349 | "\0 " | |
350 | }; | |
351 | ||
352 | \f | |
353 | /* | |
354 | spell data | |
355 | */ | |
f9ab636d | 356 | char spelknow[SPNUM]={0}; |
ad9c78b7 KB |
357 | char splev[] = { 1, 4, 9, 14, 18, 22, 26, 29, 32, 35, 37, 37, 37, 37, 37 }; |
358 | ||
359 | char *spelcode[]={ | |
360 | "pro", "mle", "dex", "sle", "chm", "ssp", | |
361 | "web", "str", "enl", "hel", "cbl", "cre", "pha", "inv", | |
362 | "bal", "cld", "ply", "can", "has", "ckl", "vpr", | |
363 | "dry", "lit", "drl", "glo", "flo", "fgr", | |
364 | "sca", "hld", "stp", "tel", "mfi", /* 31 */ | |
365 | "sph", "gen", "sum", "wtw", "alt", "per" | |
366 | }; | |
367 | ||
368 | char *spelname[]={ | |
369 | "protection", "magic missile", "dexterity", | |
370 | "sleep", "charm monster", "sonic spear", | |
371 | ||
372 | "web", "strength", "enlightenment", | |
373 | "healing", "cure blindness", "create monster", | |
374 | "phantasmal forces", "invisibility", | |
375 | ||
376 | "fireball", "cold", "polymorph", | |
377 | "cancellation", "haste self", "cloud kill", | |
378 | "vaporize rock", | |
379 | ||
380 | "dehydration", "lightning", "drain life", | |
381 | "invulnerability", "flood", "finger of death", | |
382 | ||
383 | "scare monster", "hold monster", "time stop", | |
384 | "teleport away", "magic fire", | |
385 | ||
386 | "sphere of annihilation", "genocide", "summon demon", | |
387 | "walk through walls", "alter reality", "permanence", | |
388 | "" | |
389 | }; | |
390 | ||
391 | char *speldescript[]={ | |
392 | /* 1 */ | |
393 | "generates a +2 protection field", | |
394 | "creates and hurls a magic missile equivalent to a + 1 magic arrow", | |
395 | "adds +2 to the casters dexterity", | |
396 | "causes some monsters to go to sleep", | |
397 | "some monsters may be awed at your magnificence", | |
398 | "causes your hands to emit a screeching sound toward what they point", | |
399 | /* 7 */ | |
400 | "causes strands of sticky thread to entangle an enemy", | |
401 | "adds +2 to the casters strength for a short term", | |
402 | "the caster becomes aware of things around him", | |
403 | "restores some hp to the caster", | |
404 | "restores sight to one so unfortunate as to be blinded", | |
405 | "creates a monster near the caster appropriate for the location", | |
406 | "creates illusions, and if believed, monsters die", | |
407 | "the caster becomes invisible", | |
408 | /* 15 */ | |
409 | "makes a ball of fire that burns on what it hits", | |
410 | "sends forth a cone of cold which freezes what it touches", | |
411 | "you can find out what this does for yourself", | |
412 | "negates the ability of a monster to use his special abilities", | |
413 | "speeds up the casters movements", | |
414 | "creates a fog of poisonous gas which kills all that is within it", | |
415 | "this changes rock to air", | |
416 | /* 22 */ | |
417 | "dries up water in the immediate vicinity", | |
418 | "you finger will emit a lightning bolt when this spell is cast", | |
419 | "subtracts hit points from both you and a monster", | |
420 | "this globe helps to protect the player from physical attack", | |
421 | "this creates an avalanche of H2O to flood the immediate chamber", | |
422 | "this is a holy spell and calls upon your god to back you up", | |
423 | /* 28 */ | |
424 | "terrifies the monster so that hopefully he wont hit the magic user", | |
425 | "the monster is frozen in his tracks if this is successful", | |
426 | "all movement in the caverns ceases for a limited duration", | |
427 | "moves a particular monster around in the dungeon (hopefully away from you)", | |
428 | "this causes a curtain of fire to appear all around you", | |
429 | /* 33 */ | |
430 | "anything caught in this sphere is instantly killed. Warning -- dangerous", | |
431 | "eliminates a species of monster from the game -- use sparingly", | |
432 | "summons a demon who hopefully helps you out", | |
433 | "allows the player to walk through walls for a short period of time", | |
434 | "god only knows what this will do", | |
435 | "makes a character spell permanent, i. e. protection, strength, etc.", | |
436 | "" | |
437 | }; | |
438 | ||
439 | char spelweird[MAXMONST+8][SPNUM] = { | |
440 | /* p m d s c s w s e h c c p i b c p c h c v d l d g f f s h s t m s g s w a p */ | |
441 | /* r l e l h s e t n e b r h n a l l a a k p r i r l l g c l t e f p e u t l e */ | |
442 | /* o e x e m p b r l l l e a v l d y n s l r y t l o o r a d p l i h n m w t r */ | |
443 | ||
444 | ||
445 | /* bat */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
446 | /* gnome */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,5, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
447 | /* hobgoblin */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
448 | /* jackal */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
449 | /* kobold */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,5, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
450 | ||
451 | /* orc */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 4,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
452 | /* snake */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
453 | /*giant centipede */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
454 | /* jaculi */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
455 | /* troglodyte */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
456 | ||
457 | /* giant ant */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
458 | /* floating eye */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
459 | /* leprechaun */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
460 | /* nymph */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
461 | /* quasit */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
462 | ||
463 | /* rust monster */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 4,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
464 | /* zombie */ { 0,0,0,8,0,4, 0,0,0,0,0,0,0,0, 0,0,0,0,0,4,0, 4,0,0,0,0,4, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
465 | /* assassin bug */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
466 | /* bugbear */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,5, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
467 | /* hell hound */ { 0,6,0,0,0,0, 12,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
468 | ||
469 | /* ice lizard */ { 0,0,0,0,0,0, 11,0,0,0,0,0,0,0, 0,15,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
470 | /* centaur */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
471 | /* troll */ { 0,7,0,0,0,0, 0,0,0,0,0,0,0,5, 0,0,0,0,0,0,0, 4,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
472 | /* yeti */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,15,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
473 | /* white dragon */ { 0,0,0,0,0,0, 0,0,0,0,0,0,14,0, 0,15,0,0,0,0,0, 4,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
474 | ||
475 | /* elf */ { 0,0,0,0,0,0, 0,0,0,0,0,0,14,5, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
476 | /*gelatinous cube */ { 0,0,0,0,0,0, 2,0,0,0,0,0,0,0, 0,0,0,0,0,4,0, 0,0,0,0,0,4, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
477 | /* metamorph */ { 0,13,0,0,0,0, 2,0,0,0,0,0,0,0, 0,0,0,0,0,4,0, 4,0,0,0,0,4, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
478 | /* vortex */ { 0,13,0,0,0,10, 1,0,0,0,0,0,0,0, 0,0,0,0,0,4,0, 4,0,0,0,4,4, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
479 | /* ziller */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
480 | ||
481 | /* violet fungi */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
482 | /* wraith */ { 0,0,0,8,0,4, 0,0,0,0,0,0,0,0, 0,0,0,0,0,4,0, 4,0,0,0,0,4, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
483 | /* forvalaka */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,5, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
484 | /* lama nobe */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
485 | /* osequip */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
486 | ||
487 | /* rothe */ { 0,7,0,0,0,0, 0,0,0,0,0,0,0,5, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
488 | /* xorn */ { 0,7,0,0,0,0, 0,0,0,0,0,0,0,5, 0,0,0,0,0,0,0, 4,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
489 | /* vampire */ { 0,0,0,8,0,4, 0,0,0,0,0,0,0,0, 0,0,0,0,0,4,0, 0,0,0,0,0,4, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
490 | /*invisible staker*/ { 0,0,0,0,0,0, 1,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
491 | /* poltergeist */ { 0,13,0,8,0,4, 1,0,0,0,0,0,0,0, 0,4,0,0,0,4,0, 4,0,0,0,4,4, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
492 | ||
493 | /* disenchantress */ { 0,0,0,8,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
494 | /*shambling mound */ { 0,0,0,0,0,10, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
495 | /* yellow mold */ { 0,0,0,8,0,0, 1,0,0,0,0,0,4,0, 0,0,0,0,0,4,0, 0,0,0,0,0,4, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
496 | /* umber hulk */ { 0,7,0,0,0,0, 0,0,0,0,0,0,0,5, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
497 | /* gnome king */ { 0,7,0,0,3,0, 0,0,0,0,0,0,0,5, 0,0,9,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
498 | ||
499 | /* mimic */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
500 | /* water lord */ { 0,13,0,8,3,4, 1,0,0,0,0,0,0,0, 0,0,9,0,0,4,0, 0,0,0,0,16,4, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
501 | /* bronze dragon */ { 0,7,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
502 | /* green dragon */ { 0,7,0,0,0,0, 11,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
503 | /* purple worm */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
504 | ||
505 | /* xvart */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
506 | /* spirit naga */ { 0,13,0,8,3,4, 1,0,0,0,0,0,0,5, 0,4,9,0,0,4,0, 4,0,0,0,4,4, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
507 | /* silver dragon */ { 0,6,0,9,0,0, 12,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
508 | /*platinum dragon */ { 0,7,0,9,0,0, 11,0,0,0,0,0,14,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
509 | /* green urchin */ { 0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
510 | /* red dragon */ { 0,6,0,0,0,0, 12,0,0,0,0,0,0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,0 }, | |
511 | ||
512 | /* p m d s c s w s e h c c p i b c p c h c v d l d g f f s h s t m s g s w a p */ | |
513 | /* r l e l h s e t n e b r h n a l l a a k p r i r l l g c l t e f p e u t l e */ | |
514 | /* o e x e m p b r l l l e a v l d y n s l r y t l o o r a d p l i h n m w t r */ | |
515 | ||
516 | /* demon lord */ { 0,7,0,4,3,0, 1,0,0,0,0,0,14,5, 0,0,4,0,0,4,0, 4,0,0,0,4,4, 0,0,0,0,0, 9,0,0,0,0,0 }, | |
517 | /* demon lord */ { 0,7,0,4,3,0, 1,0,0,0,0,0,14,5, 0,0,4,0,0,4,0, 4,0,0,0,4,4, 0,0,0,0,0, 9,0,0,0,0,0 }, | |
518 | /* demon lord */ { 0,7,0,4,3,0, 1,0,0,0,0,0,14,5, 0,0,4,0,0,4,0, 4,0,0,0,4,4, 0,0,0,0,0, 9,0,0,0,0,0 }, | |
519 | /* demon lord */ { 0,7,0,4,3,0, 1,0,0,0,0,0,14,5, 0,0,4,0,0,4,0, 4,0,0,0,4,4, 0,0,0,0,0, 9,0,0,0,0,0 }, | |
520 | /* demon lord */ { 0,7,0,4,3,0, 1,0,0,0,0,0,14,5, 0,0,4,0,0,4,0, 4,0,0,0,4,4, 0,0,0,0,0, 9,0,0,0,0,0 }, | |
521 | /* demon lord */ { 0,7,0,4,3,0, 1,0,0,0,0,0,14,5, 0,0,4,0,0,4,0, 4,0,0,0,4,4, 0,0,0,0,0, 9,0,0,0,0,0 }, | |
522 | /* demon lord */ { 0,7,0,4,3,0, 1,0,0,0,0,0,14,5, 0,0,4,0,0,4,0, 4,0,0,0,4,4, 0,0,0,0,0, 9,0,0,0,0,0 }, | |
523 | /* demon prince */ { 0,7,0,4,3,9, 1,0,0,0,0,0,14,5, 0,0,4,0,0,4,0, 4,0,0,0,4,4, 4,0,0,0,4, 9,0,0,0,0,0 } | |
524 | ||
525 | }; | |
526 | ||
527 | char *spelmes[] = { "", | |
528 | /* 1 */ "the web had no effect on the %s", | |
529 | /* 2 */ "the %s changed shape to avoid the web", | |
530 | /* 3 */ "the %s isn't afraid of you", | |
531 | /* 4 */ "the %s isn't affected", | |
532 | /* 5 */ "the %s can see you with his infravision", | |
533 | /* 6 */ "the %s vaporizes your missile", | |
534 | /* 7 */ "your missile bounces off the %s", | |
535 | /* 8 */ "the %s doesn't sleep", | |
536 | /* 9 */ "the %s resists", | |
537 | /* 10 */ "the %s can't hear the noise", | |
538 | /* 11 */ "the %s's tail cuts it free of the web", | |
539 | /* 12 */ "the %s burns through the web", | |
540 | /* 13 */ "your missiles pass right through the %s", | |
541 | /* 14 */ "the %s sees through your illusions", | |
542 | /* 15 */ "the %s loves the cold!", | |
543 | /* 16 */ "the %s loves the water!" | |
544 | }; | |
545 | ||
546 | char to_lower[]= /* tolower[character] = lower case converted character */ | |
547 | { | |
548 | 0000,0001,0002,0003,0004,0005,0006,0007,0010,0011,0012,0013,0014,0015,0016,0017, /* NUL-SI*/ | |
549 | 0020,0021,0022,0023,0024,0025,0026,0027,0030,0031,0032,0033,0034,0035,0036,0037, /* DLE-US*/ | |
550 | 0040,0041,0042,0043,0044,0045,0046,0047,0050,0051,0052,0053,0054,0055,0056,0057, /* SP-/ */ | |
551 | 0060,0061,0062,0063,0064,0065,0066,0067,0070,0071,0072,0073,0074,0075,0076,0077, /* 0-? */ | |
552 | 0100,0141,0142,0143,0144,0145,0146,0147,0150,0151,0152,0153,0154,0155,0156,0157, /* @-O */ | |
553 | 0160,0161,0162,0163,0164,0165,0166,0167,0170,0171,0172,0133,0134,0135,0136,0137, /* P-_ */ | |
554 | 0140,0141,0142,0143,0144,0145,0146,0147,0150,0151,0152,0153,0154,0155,0156,0157, /* `-o */ | |
555 | 0160,0161,0162,0163,0164,0165,0166,0167,0170,0171,0172,0173,0174,0175,0176,0177, /* p-DEL */ | |
556 | }; | |
557 | ||
558 | char to_upper[]= /* toupper[character] = upper case converted character */ | |
559 | { | |
560 | 0000,0001,0002,0003,0004,0005,0006,0007,0010,0011,0012,0013,0014,0015,0016,0017, /* NUL-SI*/ | |
561 | 0020,0021,0022,0023,0024,0025,0026,0027,0030,0031,0032,0033,0034,0035,0036,0037, /* DLE-US*/ | |
562 | 0040,0041,0042,0043,0044,0045,0046,0047,0050,0051,0052,0053,0054,0055,0056,0057, /* SP-/ */ | |
563 | 0060,0061,0062,0063,0064,0065,0066,0067,0070,0071,0072,0073,0074,0075,0076,0077, /* 0-? */ | |
564 | 0100,0101,0102,0103,0104,0105,0106,0107,0110,0111,0112,0113,0114,0115,0116,0117, /* @-O */ | |
565 | 0120,0121,0122,0123,0124,0125,0126,0127,0130,0131,0132,0133,0134,0135,0136,0137, /* P-_ */ | |
566 | 0140,0101,0102,0103,0104,0105,0106,0107,0110,0111,0112,0113,0114,0115,0116,0117, /* `-o */ | |
567 | 0120,0121,0122,0123,0124,0125,0126,0127,0130,0131,0132,0173,0174,0175,0176,0177, /* p-DEL */ | |
568 | }; | |
569 | ||
570 | char is_digit[]= /* isdigit[character] = TRUE || FALSE */ | |
571 | { | |
572 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* NUL-SI*/ | |
573 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* DLE-US*/ | |
574 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* SP-/ */ | |
575 | 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, /* 0-? */ | |
576 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* @-O */ | |
577 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* P-_ */ | |
578 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* `-o */ | |
579 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* p-DEL */ | |
580 | }; | |
581 | ||
582 | char is_alpha[]= /* isalpha[character] = TRUE || FALSE */ | |
583 | { | |
584 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* NUL-SI*/ | |
585 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* DLE-US*/ | |
586 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* SP-/ */ | |
587 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0-? */ | |
588 | 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* @-O */ | |
589 | 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* P-_ */ | |
590 | 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* `-o */ | |
591 | 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* p-DEL */ | |
592 | }; | |
593 | ||
594 | /* | |
595 | * function to create scroll numbers with appropriate probability of | |
596 | * occurrence | |
597 | * | |
598 | * 0 - armor 1 - weapon 2 - enlightenment 3 - paper | |
599 | * 4 - create monster 5 - create item 6 - aggravate 7 - time warp | |
600 | * 8 - teleportation 9 - expanded awareness 10 - haste monst | |
601 | * 11 - heal monster 12 - spirit protection 13 - undead protection | |
602 | * 14 - stealth 15 - magic mapping 16 - hold monster | |
603 | * 17 - gem perfection 18 - spell extension 19 - identify | |
604 | * 20 - remove curse 21 - annihilation 22 - pulverization | |
605 | * 23 - life protection | |
606 | */ | |
607 | char scprob[]= { 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, | |
608 | 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, | |
609 | 9, 9, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, | |
610 | 15, 15, 16, 16, 16, 17, 17, 18, 18, 19, 19, 19, 20, 20, 20, 20, 21, 22, | |
611 | 22, 22, 23 }; | |
612 | ||
613 | /* | |
614 | * function to return a potion number created with appropriate probability | |
615 | * of occurrence | |
616 | * | |
617 | * 0 - sleep 1 - healing 2 - raise level | |
618 | * 3 - increase ability 4 - gain wisdom 5 - gain strength | |
619 | * 6 - charismatic character 7 - dizziness 8 - learning | |
620 | * 9 - gold detection 10 - monster detection 11 - forgetfulness | |
621 | * 12 - water 13 - blindness 14 - confusion | |
622 | * 15 - heroism 16 - sturdiness 17 - giant strength | |
623 | * 18 - fire resistance 19 - treasure finding 20 - instant healing | |
624 | * 21 - cure dianthroritis 22 - poison 23 - see invisible | |
625 | */ | |
626 | char potprob[] = { 0, 0, 1, 1, 1, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 20, 22, 22, 23, 23 }; | |
627 | ||
628 | char nlpts[] = { 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 5, 6, 7 }; | |
629 | char nch[] = { 0, 0, 0, 1, 1, 1, 2, 2, 3, 4 }; | |
630 | char nplt[] = { 0, 0, 0, 0, 1, 1, 2, 2, 3, 4 }; | |
631 | char ndgg[] = { 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 4, 5 }; | |
632 | char nsw[] = { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3 }; |