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