/*- * 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. * * @(#)data.c 5.3 (Berkeley) 5/13/91 * $FreeBSD: src/games/larn/data.c,v 1.5 1999/11/30 03:48:59 billf Exp $ */ /* 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 "; 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 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 */ #ifdef MACRORND unsigned long randx = 33601; /* the random number seed */ #endif time_t 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 = NULL; /* 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:@.<<<