diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 1995-10-18 08:53:40 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 1995-10-18 08:53:40 +0000 |
commit | d6583bb2a13f329cf0332ef2570eb8bb8fc0e39c (patch) | |
tree | ece253b876159b39c620e62b6c9b1174642e070e /games/larn/data.c |
initial import of NetBSD tree
Diffstat (limited to 'games/larn/data.c')
-rw-r--r-- | games/larn/data.c | 661 |
1 files changed, 661 insertions, 0 deletions
diff --git a/games/larn/data.c b/games/larn/data.c new file mode 100644 index 00000000000..e0e7d43fa43 --- /dev/null +++ b/games/larn/data.c @@ -0,0 +1,661 @@ +/* $NetBSD: data.c,v 1.5 1995/03/23 08:33:17 cgd Exp $ */ + +/*- + * Copyright (c) 1988 The Regents of the University of California. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef lint +#if 0 +static char sccsid[] = "@(#)data.c 5.3 (Berkeley) 5/13/91"; +#else +static char rcsid[] = "$NetBSD: data.c,v 1.5 1995/03/23 08:33:17 cgd Exp $"; +#endif +#endif /* not lint */ + +/* data.c Larn is copyrighted 1986 by Noah Morgan. */ +#define NODEFS +#include "header.h" + +/* + class[c[LEVEL]-1] gives the correct name of the players experience level + */ +static char aa1[] = " mighty evil master"; +static char aa2[] = "apprentice demi-god"; +static char aa3[] = " minor demi-god "; +static char aa4[] = " major demi-god "; +static char aa5[] = " minor deity "; +static char aa6[] = " major deity "; +static char aa7[] = " novice guardian "; +static char aa8[] = "apprentice guardian"; +static char aa9[] = " The Creator "; +char *class[]= +{ " novice explorer ", "apprentice explorer", " practiced explorer",/* -3*/ + " expert explorer ", " novice adventurer", " adventurer ",/* -6*/ + "apprentice conjurer", " conjurer ", " master conjurer ",/* -9*/ + " apprentice mage ", " mage ", " experienced mage ",/* -12*/ + " master mage ", " apprentice warlord", " novice warlord ",/* -15*/ + " expert warlord ", " master warlord ", " apprentice gorgon ",/* -18*/ + " gorgon ", " practiced gorgon ", " master gorgon ",/* -21*/ + " demi-gorgon ", " evil master ", " great evil master ",/* -24*/ + aa1 , aa1 , aa1 ,/* -27*/ + aa1 , aa1 , aa1 ,/* -30*/ + aa1 , aa1 , aa1 ,/* -33*/ + aa1 , aa1 , aa1 ,/* -36*/ + aa1 , aa1 , aa1 ,/* -39*/ + aa2 , aa2 , aa2 ,/* -42*/ + aa2 , aa2 , aa2 ,/* -45*/ + aa2 , aa2 , aa2 ,/* -48*/ + aa3 , aa3 , aa3 ,/* -51*/ + aa3 , aa3 , aa3 ,/* -54*/ + aa3 , aa3 , aa3 ,/* -57*/ + aa4 , aa4 , aa4 ,/* -60*/ + aa4 , aa4 , aa4 ,/* -63*/ + aa4 , aa4 , aa4 ,/* -66*/ + aa5 , aa5 , aa5 ,/* -69*/ + aa5 , aa5 , aa5 ,/* -72*/ + aa5 , aa5 , aa5 ,/* -75*/ + aa6 , aa6 , aa6 ,/* -78*/ + aa6 , aa6 , aa6 ,/* -81*/ + aa6 , aa6 , aa6 ,/* -84*/ + aa7 , aa7 , aa7 ,/* -87*/ + aa8 , aa8 , aa8 ,/* -90*/ + aa8 , aa8 , aa8 ,/* -93*/ + " earth guardian ", " air guardian ", " fire guardian ",/* -96*/ + " water guardian ", " time guardian ", " ethereal guardian ",/* -99*/ + aa9 , aa9 , aa9 ,/* -102*/ +}; + +/* + table of experience needed to be a certain level of player + skill[c[LEVEL]] is the experience required to attain the next level + */ +#define MEG 1000000 +long skill[] = { +0, 10, 20, 40, 80, 160, 320, 640, 1280, 2560, 5120, /* 1-11 */ +10240, 20480, 40960, 100000, 200000, 400000, 700000, 1*MEG, /* 12-19 */ +2*MEG,3*MEG,4*MEG,5*MEG,6*MEG,8*MEG,10*MEG, /* 20-26 */ +12*MEG,14*MEG,16*MEG,18*MEG,20*MEG,22*MEG,24*MEG,26*MEG,28*MEG, /* 27-35 */ +30*MEG,32*MEG,34*MEG,36*MEG,38*MEG,40*MEG,42*MEG,44*MEG,46*MEG, /* 36-44 */ +48*MEG,50*MEG,52*MEG,54*MEG,56*MEG,58*MEG,60*MEG,62*MEG,64*MEG, /* 45-53 */ +66*MEG,68*MEG,70*MEG,72*MEG,74*MEG,76*MEG,78*MEG,80*MEG,82*MEG, /* 54-62 */ +84*MEG,86*MEG,88*MEG,90*MEG,92*MEG,94*MEG,96*MEG,98*MEG,100*MEG, /* 63-71 */ +105*MEG,110*MEG,115*MEG,120*MEG, 125*MEG, 130*MEG, 135*MEG, 140*MEG, /* 72-79 */ +145*MEG,150*MEG,155*MEG,160*MEG, 165*MEG, 170*MEG, 175*MEG, 180*MEG, /* 80-87 */ +185*MEG,190*MEG,195*MEG,200*MEG, 210*MEG, 220*MEG, 230*MEG, 240*MEG, /* 88-95 */ +250*MEG,260*MEG,270*MEG,280*MEG, 290*MEG, 300*MEG /* 96-101*/ +}; +#undef MEG + +char *lpbuf,*lpnt,*inbuffer,*lpend; /* input/output pointers to the buffers */ +struct cel *cell; /* pointer to the dungeon storage */ +short hitp[MAXX][MAXY]; /* monster hp on level */ +short iarg[MAXX][MAXY]; /* arg for the item array */ +char item[MAXX][MAXY]; /* objects in maze if any */ +char know[MAXX][MAXY]; /* 1 or 0 if here before */ +char mitem[MAXX][MAXY]; /* monster item array */ +char moved[MAXX][MAXY]; /* monster movement flags */ +char stealth[MAXX][MAXY]; /* 0=sleeping 1=awake monst*/ +char iven[26]; /* inventory for player */ +short ivenarg[26]; /* inventory for player */ +char lastmonst[40]; /* this has the name of the current monster */ +char beenhere[MAXLEVEL+MAXVLEVEL]={0}; /* 1 if have been on this level */ +char VERSION=VER; /* this is the present version # of the program */ +char SUBVERSION=SUBVER; +char nosignal=0; /* set to 1 to disable the signals from doing anything */ +char predostuff=0; /* 2 means that the trap handling routines must do a + showplayer() after a trap. 0 means don't showplayer() + 0 - we are in create player screen + 1 - we are in welcome screen + 2 - we are in the normal game */ +char loginname[20]; /* players login name */ +char logname[LOGNAMESIZE]; /* players name storage for scoring */ +char sex=1; /* default is a man 0=woman */ +char boldon=1; /* 1=bold objects 0=inverse objects */ +char ckpflag=0; /* 1 if want checkpointing of game, 0 otherwise */ +char cheat=0; /* 1 if the player has fudged save file */ +char level=0; /* cavelevel player is on = c[CAVELEVEL] */ +char wizard=0; /* the wizard mode flag */ +short lastnum=0; /* the number of the monster last hitting player */ +short hitflag=0; /* flag for if player has been hit when running */ +short hit2flag=0; /* flag for if player has been hit when running */ +short hit3flag=0; /* flag for if player has been hit flush input */ +short playerx,playery; /* the room on the present level of the player */ +short lastpx,lastpy; /* 0 --- MAXX-1 or 0 --- MAXY-1 */ +short oldx,oldy; +short lasthx=0,lasthy=0; /* location of monster last hit by player */ +short nobeep=0; /* true if program is not to beep */ +unsigned long randx=33601; /* the random number seed */ +long initialtime=0; /* time playing began */ +long gtime=0; /* the clock for the game */ +long outstanding_taxes=0; /* present tax bill from score file */ +long c[100],cbak[100]; /* the character description arrays */ +int enable_scroll=0; /* constant for enabled/disabled scrolling regn */ +char aborted[] = " aborted"; +struct sphere *spheres=0; /*pointer to linked list for spheres of annihilation*/ +char *levelname[]= +{ " H"," 1"," 2"," 3"," 4"," 5"," 6"," 7"," 8"," 9","10","V1","V2","V3" }; + +char objnamelist[]=" ATOP%^F&^+M=%^$$f*OD#~][[)))(((||||||||{?!BC}o:@.<<<<EVV))([[]]](^ [H*** ^^ S tsTLc............................................"; +char monstnamelist[]=" BGHJKOScjtAELNQRZabhiCTYdegmvzFWflorXV pqsyUkMwDDPxnDDuD ..............................................................."; +char *objectname[]= +{ 0,"a holy altar","a handsome jewel encrusted throne","the orb","a pit", + "a staircase leading upwards","an elevator going up","a bubbling fountain", + "a great marble statue","a teleport trap","the college of Larn", + "a mirror","the DND store","a staircase going down","an elevator going down", + "the bank of Larn","the 5th branch of the Bank of Larn", + "a dead fountain","gold","an open door","a closed door", + "a wall","The Eye of Larn","plate mail","chain mail","leather armor", + "a sword of slashing","Bessman's flailing hammer","a sunsword", + "a two handed sword","a spear","a dagger", + "ring of extra regeneration","a ring of regeneration","a ring of protection", + "an energy ring","a ring of dexterity","a ring of strength", + "a ring of cleverness","a ring of increase damage","a belt of striking", + "a magic scroll","a magic potion","a book","a chest", + "an amulet of invisibility","an orb of dragon slaying", + "a scarab of negate spirit","a cube of undead control", + "device of theft prevention","a brilliant diamond","a ruby", + "an enchanting emerald","a sparkling sapphire","the dungeon entrance", + "a volcanic shaft leaning downward","the base of a volcanic shaft", + "a battle axe","a longsword","a flail","ring mail","studded leather armor", + "splint mail","plate armor","stainless plate armor","a lance of death", + "an arrow trap","an arrow trap","a shield","your home", + "gold","gold","gold","a dart trap", + "a dart trap","a trapdoor","a trapdoor","the local trading post", + "a teleport trap", "a massive throne", + "a sphere of annihilation","a handsome jewel encrusted throne", + "the Larn Revenue Service","a fortune cookie","","","","","","", + "","","","","","","","","","","","","","","","","","","","" + }; + + +/* + * for the monster data + * + * array to do rnd() to create monsters <= a given level + */ +char monstlevel[] = { 5, 11, 17, 22, 27, 33, 39, 42, 46, 50, 53, 56, 59 }; + +struct monst monster[] = { +/* NAME LV AC DAM ATT DEF GEN INT GOLD HP EXP +----------------------------------------------------------------- */ +{ "", 0, 0, 0, 0, 0, 0, 3, 0, 0, 0 }, +{ "bat", 1, 0, 1, 0, 0, 0, 3, 0, 1, 1 }, +{ "gnome", 1, 10, 1, 0, 0, 0, 8, 30, 2, 2 }, +{ "hobgoblin", 1, 14, 2, 0, 0, 0, 5, 25, 3, 2 }, +{ "jackal", 1, 17, 1, 0, 0, 0, 4, 0, 1, 1 }, +{ "kobold", 1, 20, 1, 0, 0, 0, 7, 10, 1, 1 }, + +{ "orc", 2, 12, 1, 0, 0, 0, 9, 40, 4, 2 }, +{ "snake", 2, 15, 1, 0, 0, 0, 3, 0, 3, 1 }, +{ "giant centipede",2, 14, 0, 4, 0, 0, 3, 0, 1, 2 }, +{ "jaculi", 2, 20, 1, 0, 0, 0, 3, 0, 2, 1 }, +{ "troglodyte", 2, 10, 2, 0, 0, 0, 5, 80, 4, 3 }, +{ "giant ant", 2, 8, 1, 4, 0, 0, 4, 0, 5, 5 }, + +/* NAME LV AC DAM ATT DEF GEN INT GOLD HP EXP +----------------------------------------------------------------- */ + +{ "floating eye", 3, 8, 1, 0, 0, 0, 3, 0, 5, 2 }, +{ "leprechaun", 3, 3, 0, 8, 0, 0, 3,1500, 13, 45 }, +{ "nymph", 3, 3, 0, 14, 0, 0, 9, 0, 18, 45 }, +{ "quasit", 3, 5, 3, 0, 0, 0, 3, 0, 10, 15 }, +{ "rust monster", 3, 4, 0, 1, 0, 0, 3, 0, 18, 25 }, +{ "zombie", 3, 12, 2, 0, 0, 0, 3, 0, 6, 7 }, + +{ "assassin bug", 4, 9, 3, 0, 0, 0, 3, 0, 20, 15 }, +{ "bugbear", 4, 5, 4, 15, 0, 0, 5, 40, 20, 35 }, +{ "hell hound", 4, 5, 2, 2, 0, 0, 6, 0, 16, 35 }, +{ "ice lizard", 4, 11, 2, 10, 0, 0, 6, 50, 16, 25 }, +{ "centaur", 4, 6, 4, 0, 0, 0, 10, 40, 24, 45 }, + +/* NAME LV AC DAM ATT DEF GEN INT GOLD HP EXP +----------------------------------------------------------------- */ + +{ "troll", 5, 4, 5, 0, 0, 0, 9, 80, 50, 300 }, +{ "yeti", 5, 6, 4, 0, 0, 0, 5, 50, 35, 100 }, +{ "white dragon", 5, 2, 4, 5, 0, 0, 16, 500, 55, 1000}, +{ "elf", 5, 8, 1, 0, 0, 0, 15, 50, 22, 35 }, +{ "gelatinous cube",5, 9, 1, 0, 0, 0, 3, 0, 22, 45 }, + +{ "metamorph", 6, 7, 3, 0, 0, 0, 3, 0, 30, 40 }, +{ "vortex", 6, 4, 3, 0, 0, 0, 3, 0, 30, 55 }, +{ "ziller", 6, 15, 3, 0, 0, 0, 3, 0, 30, 35 }, +{ "violet fungi", 6, 12, 3, 0, 0, 0, 3, 0, 38, 100 }, +{ "wraith", 6, 3, 1, 6, 0, 0, 3, 0, 30, 325 }, +{ "forvalaka", 6, 2, 5, 0, 0, 0, 7, 0, 50, 280 }, + +/* NAME LV AC DAM ATT DEF GEN INT GOLD HP EXP +----------------------------------------------------------------- */ + +{ "lama nobe", 7, 7, 3, 0, 0, 0, 6, 0, 35, 80 }, +{ "osequip", 7, 4, 3, 16, 0, 0, 4, 0, 35, 100 }, +{ "rothe", 7, 15, 5, 0, 0, 0, 3, 100, 50, 250 }, +{ "xorn", 7, 0, 6, 0, 0, 0, 13, 0, 60, 300 }, +{ "vampire", 7, 3, 4, 6, 0, 0, 17, 0, 50, 1000}, +{ "invisible stalker",7,3, 6, 0, 0, 0, 5, 0, 50, 350 }, + +{ "poltergeist", 8, 1, 4, 0, 0, 0, 3, 0, 50, 450 }, +{ "disenchantress", 8, 3, 0, 9, 0, 0, 3, 0, 50, 500 }, +{ "shambling mound",8, 2, 5, 0, 0, 0, 6, 0, 45, 400 }, +{ "yellow mold", 8, 12, 4, 0, 0, 0, 3, 0, 35, 250 }, +{ "umber hulk", 8, 3, 7, 11, 0, 0, 14, 0, 65, 600 }, + +/* NAME LV AC DAM ATT DEF GEN INT GOLD HP EXP +----------------------------------------------------------------- */ + +{ "gnome king", 9, -1, 10, 0, 0, 0, 18, 2000, 100,3000 }, +{ "mimic", 9, 5, 6, 0, 0, 0, 8, 0, 55, 99 }, +{ "water lord", 9, -10, 15, 7, 0, 0, 20, 0, 150,15000 }, +{ "bronze dragon", 9, 2, 9, 3, 0, 0, 16, 300, 80, 4000 }, +{ "green dragon", 9, 3, 8, 10, 0, 0, 15, 200, 70, 2500 }, +{ "purple worm", 9, -1, 11, 0, 0, 0, 3, 100, 120,15000 }, +{ "xvart", 9, -2, 12, 0, 0, 0, 13, 0, 90, 1000 }, + +{ "spirit naga", 10, -20,12, 12, 0, 0, 23, 0, 95, 20000 }, +{ "silver dragon", 10, -1, 12, 3, 0, 0, 20, 700, 100,10000 }, +{ "platinum dragon",10, -5, 15, 13, 0, 0, 22, 1000, 130,24000 }, +{ "green urchin", 10, -3, 12, 0, 0, 0, 3, 0, 85, 5000 }, +{ "red dragon", 10, -2, 13, 3, 0, 0, 19, 800, 110,14000 }, + +{ "type I demon lord", 12,-30, 18, 0, 0, 0, 20, 0, 140,50000 }, +{ "type II demon lord", 13,-30, 18, 0, 0, 0, 21, 0, 160,75000 }, +{ "type III demon lord",14,-30, 18, 0, 0, 0, 22, 0, 180,100000 }, +{ "type IV demon lord", 15,-35, 20, 0, 0, 0, 23, 0, 200,125000 }, +{ "type V demon lord", 16,-40, 22, 0, 0, 0, 24, 0, 220,150000 }, +{ "type VI demon lord", 17,-45, 24, 0, 0, 0, 25, 0, 240,175000 }, +{ "type VII demon lord",18,-70, 27, 6, 0, 0, 26, 0, 260,200000 }, +{ "demon prince", 25,-127,30, 6, 0, 0, 28, 0, 345,300000 } + +/* NAME LV AC DAM ATT DEF GEN INT GOLD HP EXP +--------------------------------------------------------------------- */ + }; + +/* name array for scrolls */ + +char *scrollname[] = {"","","","","","","","","","","","","","", + "","","","","","","","","","","","","",""}; + +char *scrollhide[] = { +" enchant armor", +" enchant weapon", +" enlightenment", +" blank paper", +" create monster", +" create artifact", +" aggravate monsters", +" time warp", +" teleportation", +" expanded awareness", +" haste monsters", +" monster healing", +" spirit protection", +" undead protection", +" stealth", +" magic mapping", +" hold monsters", +" gem perfection", +" spell extension", +" identify", +" remove curse", +" annihilation", +" pulverization", +" life protection", +" ", +" ", +" ", +" " + }; + +char *potionname[] = {"","","","","","","","","","","","","","", + "","","","","","","","","","","","","","", + "","","","","","",""}; + +/* name array for magic potions */ +char *potionhide[] = { +" sleep", +" healing", +" raise level", +" increase ability", +" wisdom", +" strength", +" raise charisma", +" dizziness", +" learning", +" gold detection", +" monster detection", +" forgetfulness", +" water", +" blindness", +" confusion", +" heroism", +" sturdiness", +" giant strength", +" fire resistance", +" treasure finding", +" instant healing", +" cure dianthroritis", +" poison", +" see invisible", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" " + }; + + +/* + spell data + */ +char spelknow[SPNUM]={0}; +char splev[] = { 1, 4, 9, 14, 18, 22, 26, 29, 32, 35, 37, 37, 37, 37, 37 }; + +char *spelcode[]={ + "pro", "mle", "dex", "sle", "chm", "ssp", + "web", "str", "enl", "hel", "cbl", "cre", "pha", "inv", + "bal", "cld", "ply", "can", "has", "ckl", "vpr", + "dry", "lit", "drl", "glo", "flo", "fgr", + "sca", "hld", "stp", "tel", "mfi", /* 31 */ + "sph", "gen", "sum", "wtw", "alt", "per" + }; + +char *spelname[]={ + "protection", "magic missile", "dexterity", + "sleep", "charm monster", "sonic spear", + + "web", "strength", "enlightenment", + "healing", "cure blindness", "create monster", + "phantasmal forces", "invisibility", + + "fireball", "cold", "polymorph", + "cancellation", "haste self", "cloud kill", + "vaporize rock", + + "dehydration", "lightning", "drain life", + "invulnerability", "flood", "finger of death", + + "scare monster", "hold monster", "time stop", + "teleport away", "magic fire", + + "sphere of annihilation", "genocide", "summon demon", + "walk through walls", "alter reality", "permanence", + "" + }; + +char *speldescript[]={ +/* 1 */ + "generates a +2 protection field", + "creates and hurls a magic missile equivalent to a + 1 magic arrow", + "adds +2 to the casters dexterity", + "causes some monsters to go to sleep", + "some monsters may be awed at your magnificence", + "causes your hands to emit a screeching sound toward what they point", +/* 7 */ + "causes strands of sticky thread to entangle an enemy", + "adds +2 to the casters strength for a short term", + "the caster becomes aware of things around him", + "restores some hp to the caster", + "restores sight to one so unfortunate as to be blinded", + "creates a monster near the caster appropriate for the location", + "creates illusions, and if believed, monsters die", + "the caster becomes invisible", +/* 15 */ + "makes a ball of fire that burns on what it hits", + "sends forth a cone of cold which freezes what it touches", + "you can find out what this does for yourself", + "negates the ability of a monster to use his special abilities", + "speeds up the casters movements", + "creates a fog of poisonous gas which kills all that is within it", + "this changes rock to air", +/* 22 */ + "dries up water in the immediate vicinity", + "you finger will emit a lightning bolt when this spell is cast", + "subtracts hit points from both you and a monster", + "this globe helps to protect the player from physical attack", + "this creates an avalanche of H2O to flood the immediate chamber", + "this is a holy spell and calls upon your god to back you up", +/* 28 */ + "terrifies the monster so that hopefully he wont hit the magic user", + "the monster is frozen in his tracks if this is successful", + "all movement in the caverns ceases for a limited duration", + "moves a particular monster around in the dungeon (hopefully away from you)", + "this causes a curtain of fire to appear all around you", +/* 33 */ + "anything caught in this sphere is instantly killed. Warning -- dangerous", + "eliminates a species of monster from the game -- use sparingly", + "summons a demon who hopefully helps you out", + "allows the player to walk through walls for a short period of time", + "god only knows what this will do", + "makes a character spell permanent, i. e. protection, strength, etc.", + "" + }; + +char spelweird[MAXMONST+8][SPNUM] = { +/* 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 */ +/* 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 */ +/* 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 */ + + +/* 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 }, +/* 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 }, +/* 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 }, +/* 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 }, +/* 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 }, + +/* 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 }, +/* 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 }, +/*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 }, +/* 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 }, +/* 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 }, + +/* 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 }, +/* 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 }, +/* 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 }, +/* 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 }, +/* 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 }, + +/* 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 }, +/* 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 }, +/* 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 }, +/* 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 }, +/* 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 }, + +/* 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 }, +/* 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 }, +/* 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 }, +/* 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 }, +/* 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 }, + +/* 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 }, +/*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 }, +/* 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 }, +/* 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 }, +/* 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 }, + +/* 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 }, +/* 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 }, +/* 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 }, +/* 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 }, +/* 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 }, + +/* 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 }, +/* 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 }, +/* 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 }, +/*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 }, +/* 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 }, + +/* 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 }, +/*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 }, +/* 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 }, +/* 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 }, +/* 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 }, + +/* 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 }, +/* 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 }, +/* 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 }, +/* 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 }, +/* 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 }, + +/* 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 }, +/* 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 }, +/* 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 }, +/*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 }, +/* 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 }, +/* 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 }, + +/* 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 */ +/* 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 */ +/* 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 */ + +/* 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 }, +/* 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 }, +/* 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 }, +/* 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 }, +/* 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 }, +/* 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 }, +/* 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 }, +/* 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 } + + }; + +char *spelmes[] = { "", +/* 1 */ "the web had no effect on the %s", +/* 2 */ "the %s changed shape to avoid the web", +/* 3 */ "the %s isn't afraid of you", +/* 4 */ "the %s isn't affected", +/* 5 */ "the %s can see you with his infravision", +/* 6 */ "the %s vaporizes your missile", +/* 7 */ "your missile bounces off the %s", +/* 8 */ "the %s doesn't sleep", +/* 9 */ "the %s resists", +/* 10 */ "the %s can't hear the noise", +/* 11 */ "the %s's tail cuts it free of the web", +/* 12 */ "the %s burns through the web", +/* 13 */ "your missiles pass right through the %s", +/* 14 */ "the %s sees through your illusions", +/* 15 */ "the %s loves the cold!", +/* 16 */ "the %s loves the water!" + }; + +char to_lower[]= /* tolower[character] = lower case converted character */ + { + 0000,0001,0002,0003,0004,0005,0006,0007,0010,0011,0012,0013,0014,0015,0016,0017, /* NUL-SI*/ + 0020,0021,0022,0023,0024,0025,0026,0027,0030,0031,0032,0033,0034,0035,0036,0037, /* DLE-US*/ + 0040,0041,0042,0043,0044,0045,0046,0047,0050,0051,0052,0053,0054,0055,0056,0057, /* SP-/ */ + 0060,0061,0062,0063,0064,0065,0066,0067,0070,0071,0072,0073,0074,0075,0076,0077, /* 0-? */ + 0100,0141,0142,0143,0144,0145,0146,0147,0150,0151,0152,0153,0154,0155,0156,0157, /* @-O */ + 0160,0161,0162,0163,0164,0165,0166,0167,0170,0171,0172,0133,0134,0135,0136,0137, /* P-_ */ + 0140,0141,0142,0143,0144,0145,0146,0147,0150,0151,0152,0153,0154,0155,0156,0157, /* `-o */ + 0160,0161,0162,0163,0164,0165,0166,0167,0170,0171,0172,0173,0174,0175,0176,0177, /* p-DEL */ + }; + +char to_upper[]= /* toupper[character] = upper case converted character */ + { + 0000,0001,0002,0003,0004,0005,0006,0007,0010,0011,0012,0013,0014,0015,0016,0017, /* NUL-SI*/ + 0020,0021,0022,0023,0024,0025,0026,0027,0030,0031,0032,0033,0034,0035,0036,0037, /* DLE-US*/ + 0040,0041,0042,0043,0044,0045,0046,0047,0050,0051,0052,0053,0054,0055,0056,0057, /* SP-/ */ + 0060,0061,0062,0063,0064,0065,0066,0067,0070,0071,0072,0073,0074,0075,0076,0077, /* 0-? */ + 0100,0101,0102,0103,0104,0105,0106,0107,0110,0111,0112,0113,0114,0115,0116,0117, /* @-O */ + 0120,0121,0122,0123,0124,0125,0126,0127,0130,0131,0132,0133,0134,0135,0136,0137, /* P-_ */ + 0140,0101,0102,0103,0104,0105,0106,0107,0110,0111,0112,0113,0114,0115,0116,0117, /* `-o */ + 0120,0121,0122,0123,0124,0125,0126,0127,0130,0131,0132,0173,0174,0175,0176,0177, /* p-DEL */ + }; + +char is_digit[]= /* isdigit[character] = TRUE || FALSE */ + { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* NUL-SI*/ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* DLE-US*/ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* SP-/ */ + 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, /* 0-? */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* @-O */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* P-_ */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* `-o */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* p-DEL */ + }; + +char is_alpha[]= /* isalpha[character] = TRUE || FALSE */ + { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* NUL-SI*/ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* DLE-US*/ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* SP-/ */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0-? */ + 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* @-O */ + 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* P-_ */ + 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* `-o */ + 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* p-DEL */ + }; + +/* + * function to create scroll numbers with appropriate probability of + * occurrence + * + * 0 - armor 1 - weapon 2 - enlightenment 3 - paper + * 4 - create monster 5 - create item 6 - aggravate 7 - time warp + * 8 - teleportation 9 - expanded awareness 10 - haste monst + * 11 - heal monster 12 - spirit protection 13 - undead protection + * 14 - stealth 15 - magic mapping 16 - hold monster + * 17 - gem perfection 18 - spell extension 19 - identify + * 20 - remove curse 21 - annihilation 22 - pulverization + * 23 - life protection + */ +char scprob[]= { 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, + 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, + 9, 9, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, + 15, 15, 16, 16, 16, 17, 17, 18, 18, 19, 19, 19, 20, 20, 20, 20, 21, 22, + 22, 22, 23 }; + +/* + * function to return a potion number created with appropriate probability + * of occurrence + * + * 0 - sleep 1 - healing 2 - raise level + * 3 - increase ability 4 - gain wisdom 5 - gain strength + * 6 - charismatic character 7 - dizziness 8 - learning + * 9 - gold detection 10 - monster detection 11 - forgetfulness + * 12 - water 13 - blindness 14 - confusion + * 15 - heroism 16 - sturdiness 17 - giant strength + * 18 - fire resistance 19 - treasure finding 20 - instant healing + * 21 - cure dianthroritis 22 - poison 23 - see invisible + */ +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 }; + +char nlpts[] = { 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 5, 6, 7 }; +char nch[] = { 0, 0, 0, 1, 1, 1, 2, 2, 3, 4 }; +char nplt[] = { 0, 0, 0, 0, 1, 1, 2, 2, 3, 4 }; +char ndgg[] = { 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 4, 5 }; +char nsw[] = { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3 }; |