diff options
Diffstat (limited to 'games/larn/data.c')
-rw-r--r-- | games/larn/data.c | 664 |
1 files changed, 0 insertions, 664 deletions
diff --git a/games/larn/data.c b/games/larn/data.c deleted file mode 100644 index 9c9a5425244..00000000000 --- a/games/larn/data.c +++ /dev/null @@ -1,664 +0,0 @@ -/* $OpenBSD: data.c,v 1.8 2000/06/29 07:55:40 pjanzen Exp $ */ -/* $NetBSD: data.c,v 1.9 1997/10/25 01:40:47 thorpej 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[] = "$OpenBSD: data.c,v 1.8 2000/06/29 07:55:40 pjanzen Exp $"; -#endif -#endif /* not lint */ - -/* data.c Larn is copyrighted 1986 by Noah Morgan. */ -/* #define NODEFS */ -#include "header.h" -#include "extern.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 "; -u_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 - -u_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 */ -u_char item[MAXX][MAXY]; /* objects in maze if any */ -u_char know[MAXX][MAXY]; /* 1 or 0 if here before */ -u_char mitem[MAXX][MAXY]; /* monster item array */ -u_char moved[MAXX][MAXY]; /* monster movement flags */ -u_char stealth[MAXX][MAXY]; /* 0=sleeping 1=awake monst */ -u_char iven[26]; /* inventory for player */ -short ivenarg[26]; /* inventory for player */ -char lastmonst[40]; /* this has the name of the current monster */ -u_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; -u_char nosignal = 0; /* set to 1 to disable the signals from doing - * anything */ -u_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[LOGIN_NAME_MAX]; /* player's login name */ -char logname[LOGNAMESIZE]; /* player's name storage for scoring */ -u_char sex = 1; /* default is a man 0=woman */ -u_char boldon = 1; /* 1=bold objects 0=inverse objects */ -u_char ckpflag = 0; /* 1 if checkpointing of game, 0 otherwise */ -u_char cheat = 0; /* 1 if the player has fudged save file */ -short level = 0; /* cavelevel player is on = c[CAVELEVEL]*/ -u_char wizard = 0; /* the wizard mode flag */ -short lastnum = 0; /* the monster last hitting player */ -short hitflag = 0; /* flag if player has been hit when running */ -short hit2flag = 0; /* flag 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 */ -#ifdef MACRORND -unsigned long randx = 33601; /* the random number seed */ -#endif -time_t initialtime = 0;/* time playing began */ -long gltime = 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 - */ -u_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 - */ -u_char spelknow[SPNUM] = {0}; -u_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!" -}; - -/* - * 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 - */ -u_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 - */ -u_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}; - -u_char nlpts[] = {0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 5, 6, 7}; -u_char nch[] = {0, 0, 0, 1, 1, 1, 2, 2, 3, 4}; -u_char nplt[] = {0, 0, 0, 0, 1, 1, 2, 2, 3, 4}; -u_char ndgg[] = {0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 4, 5}; -u_char nsw[] = {0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3}; |