|
|
1.1 ! root 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 ! 19: static char sccsid[] = "@(#)data.c 5.2 (Berkeley) 7/22/88"; ! 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 */ ! 108: char beenhere[MAXLEVEL+MAXVLEVEL]={0}; /* 1 if have been on this level */ ! 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: ! 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: ! 353: /* ! 354: spell data ! 355: */ ! 356: char spelknow[SPNUM]={0}; ! 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 };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.