5c10491064
Also, remove the function gettokstr(), which is not used. From larn 12.2.
665 lines
31 KiB
C
665 lines
31 KiB
C
/* $NetBSD: data.c,v 1.13 2008/02/03 20:11:04 dholland 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. 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.
|
|
*/
|
|
|
|
#include <sys/cdefs.h>
|
|
#ifndef lint
|
|
#if 0
|
|
static char sccsid[] = "@(#)data.c 5.3 (Berkeley) 5/13/91";
|
|
#else
|
|
__RCSID("$NetBSD: data.c,v 1.13 2008/02/03 20:11:04 dholland 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 ";
|
|
const 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[20]; /* players login name */
|
|
char logname[LOGNAMESIZE]; /* players 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 want 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 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 */
|
|
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 */
|
|
const 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 ...............................................................";
|
|
const 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 */
|
|
|
|
const char *scrollname[] = {"", "", "", "", "", "", "", "", "", "", "", "", "", "",
|
|
"", "", "", "", "", "", "", "", "", "", "", "", "", ""};
|
|
|
|
const 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",
|
|
" ",
|
|
" ",
|
|
" ",
|
|
" "
|
|
};
|
|
|
|
const char *potionname[] = {"", "", "", "", "", "", "", "", "", "", "", "", "", "",
|
|
"", "", "", "", "", "", "", "", "", "", "", "", "", "",
|
|
"", "", "", "", "", "", ""};
|
|
|
|
/* name array for magic potions */
|
|
const 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};
|
|
|
|
const 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"
|
|
};
|
|
|
|
const 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",
|
|
""
|
|
};
|
|
|
|
const char *speldescript[] = {
|
|
/* 1 */
|
|
"generates a +2 protection field",
|
|
"creates and hurls a magic missile equivalent to a +1 magic arrow",
|
|
"adds +2 to the caster's 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 caster's strength for a short term",
|
|
"the caster becomes aware of things in the vicinity",
|
|
"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 its special abilities",
|
|
"speeds up the caster's 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",
|
|
"your 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 it won't hit the magic user",
|
|
"the monster is frozen in its 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}
|
|
|
|
};
|
|
|
|
const 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};
|