freebsd-nq/games/larn/header.h
Jordan K. Hubbard 554eb505f8 Bring in the 4.4 Lite games directory, modulo man page changes and segregation
of the x11 based games.  I'm not going to tag the originals with bsd_44_lite
and do this in two stages since it's just not worth it for this collection,
and I've got directory renames to deal with that way.  Bleah.
Submitted by:	jkh
1994-09-04 04:03:31 +00:00

436 lines
12 KiB
C

/* header.h Larn is copyrighted 1986 by Noah Morgan. */
#define MAXLEVEL 11
/* max # levels in the dungeon */
#define MAXVLEVEL 3
/* max # of levels in the temple of the luran */
#define MAXX 67
#define MAXY 17
#define SCORESIZE 10
/* this is the number of people on a scoreboard max */
#define MAXPLEVEL 100
/* maximum player level allowed */
#define MAXMONST 56
/* maximum # monsters in the dungeon */
#define SPNUM 38
/* maximum number of spells in existance */
#define MAXSCROLL 28
/* maximum number of scrolls that are possible */
#define MAXPOTION 35
/* maximum number of potions that are possible */
#define TIMELIMIT 30000
/* the maximum number of moves before the game is called */
#define TAXRATE 1/20
/* the tax rate for the LRS */
#define MAXOBJ 93
/* the maximum number of objects n < MAXOBJ */
/* this is the structure definition of the monster data */
struct monst
{
char *name;
char level;
short armorclass;
char damage;
char attack;
char defense;
char genocided;
char intelligence; /* monsters intelligence -- used to choose movement */
short gold;
short hitpoints;
unsigned long experience;
};
/* this is the structure definition for the items in the dnd store */
struct _itm
{
short price;
char **mem;
char obj;
char arg;
char qty;
};
/* this is the structure that holds the entire dungeon specifications */
struct cel
{
short hitp; /* monster's hit points */
char mitem; /* the monster ID */
char item; /* the object's ID */
short iarg; /* the object's argument */
char know; /* have we been here before*/
};
/* this is the structure for maintaining & moving the spheres of annihilation */
struct sphere
{
struct sphere *p; /* pointer to next structure */
char x,y,lev; /* location of the sphere */
char dir; /* direction sphere is going in */
char lifetime; /* duration of the sphere */
};
/* defines for the character attribute array c[] */
#define STRENGTH 0 /* characters physical strength not due to objects */
#define INTELLIGENCE 1
#define WISDOM 2
#define CONSTITUTION 3
#define DEXTERITY 4
#define CHARISMA 5
#define HPMAX 6
#define HP 7
#define GOLD 8
#define EXPERIENCE 9
#define LEVEL 10
#define REGEN 11
#define WCLASS 12
#define AC 13
#define BANKACCOUNT 14
#define SPELLMAX 15
#define SPELLS 16
#define ENERGY 17
#define ECOUNTER 18
#define MOREDEFENSES 19
#define WEAR 20
#define PROTECTIONTIME 21
#define WIELD 22
#define AMULET 23
#define REGENCOUNTER 24
#define MOREDAM 25
#define DEXCOUNT 26
#define STRCOUNT 27
#define BLINDCOUNT 28
#define CAVELEVEL 29
#define CONFUSE 30
#define ALTPRO 31
#define HERO 32
#define CHARMCOUNT 33
#define INVISIBILITY 34
#define CANCELLATION 35
#define HASTESELF 36
#define EYEOFLARN 37
#define AGGRAVATE 38
#define GLOBE 39
#define TELEFLAG 40
#define SLAYING 41
#define NEGATESPIRIT 42
#define SCAREMONST 43
#define AWARENESS 44
#define HOLDMONST 45
#define TIMESTOP 46
#define HASTEMONST 47
#define CUBEofUNDEAD 48
#define GIANTSTR 49
#define FIRERESISTANCE 50
#define BESSMANN 51
#define NOTHEFT 52
#define HARDGAME 53
#define CPUTIME 54
#define BYTESIN 55
#define BYTESOUT 56
#define MOVESMADE 57
#define MONSTKILLED 58
#define SPELLSCAST 59
#define LANCEDEATH 60
#define SPIRITPRO 61
#define UNDEADPRO 62
#define SHIELD 63
#define STEALTH 64
#define ITCHING 65
#define LAUGHING 66
#define DRAINSTRENGTH 67
#define CLUMSINESS 68
#define INFEEBLEMENT 69
#define HALFDAM 70
#define SEEINVISIBLE 71
#define FILLROOM 72
#define RANDOMWALK 73
#define SPHCAST 74 /* nz if an active sphere of annihilation */
#define WTW 75 /* walk through walls */
#define STREXTRA 76 /* character strength due to objects or enchantments */
#define TMP 77 /* misc scratch space */
#define LIFEPROT 78 /* life protection counter */
/* defines for the objects in the game */
#define OALTAR 1
#define OTHRONE 2
#define OORB 3
#define OPIT 4
#define OSTAIRSUP 5
#define OELEVATORUP 6
#define OFOUNTAIN 7
#define OSTATUE 8
#define OTELEPORTER 9
#define OSCHOOL 10
#define OMIRROR 11
#define ODNDSTORE 12
#define OSTAIRSDOWN 13
#define OELEVATORDOWN 14
#define OBANK2 15
#define OBANK 16
#define ODEADFOUNTAIN 17
#define OMAXGOLD 70
#define OGOLDPILE 18
#define OOPENDOOR 19
#define OCLOSEDDOOR 20
#define OWALL 21
#define OTRAPARROW 66
#define OTRAPARROWIV 67
#define OLARNEYE 22
#define OPLATE 23
#define OCHAIN 24
#define OLEATHER 25
#define ORING 60
#define OSTUDLEATHER 61
#define OSPLINT 62
#define OPLATEARMOR 63
#define OSSPLATE 64
#define OSHIELD 68
#define OELVENCHAIN 92
#define OSWORDofSLASHING 26
#define OHAMMER 27
#define OSWORD 28
#define O2SWORD 29
#define OSPEAR 30
#define ODAGGER 31
#define OBATTLEAXE 57
#define OLONGSWORD 58
#define OFLAIL 59
#define OLANCE 65
#define OVORPAL 90
#define OSLAYER 91
#define ORINGOFEXTRA 32
#define OREGENRING 33
#define OPROTRING 34
#define OENERGYRING 35
#define ODEXRING 36
#define OSTRRING 37
#define OCLEVERRING 38
#define ODAMRING 39
#define OBELT 40
#define OSCROLL 41
#define OPOTION 42
#define OBOOK 43
#define OCHEST 44
#define OAMULET 45
#define OORBOFDRAGON 46
#define OSPIRITSCARAB 47
#define OCUBEofUNDEAD 48
#define ONOTHEFT 49
#define ODIAMOND 50
#define ORUBY 51
#define OEMERALD 52
#define OSAPPHIRE 53
#define OENTRANCE 54
#define OVOLDOWN 55
#define OVOLUP 56
#define OHOME 69
#define OKGOLD 71
#define ODGOLD 72
#define OIVDARTRAP 73
#define ODARTRAP 74
#define OTRAPDOOR 75
#define OIVTRAPDOOR 76
#define OTRADEPOST 77
#define OIVTELETRAP 78
#define ODEADTHRONE 79
#define OANNIHILATION 80 /* sphere of annihilation */
#define OTHRONE2 81
#define OLRS 82 /* Larn Revenue Service */
#define OCOOKIE 83
#define OURN 84
#define OBRASSLAMP 85
#define OHANDofFEAR 86 /* hand of fear */
#define OSPHTAILSMAN 87 /* tailsman of the sphere */
#define OWWAND 88 /* wand of wonder */
#define OPSTAFF 89 /* staff of power */
/* used up to 92 */
/* defines for the monsters as objects */
#define BAT 1
#define GNOME 2
#define HOBGOBLIN 3
#define JACKAL 4
#define KOBOLD 5
#define ORC 6
#define SNAKE 7
#define CENTIPEDE 8
#define JACULI 9
#define TROGLODYTE 10
#define ANT 11
#define EYE 12
#define LEPRECHAUN 13
#define NYMPH 14
#define QUASIT 15
#define RUSTMONSTER 16
#define ZOMBIE 17
#define ASSASSINBUG 18
#define BUGBEAR 19
#define HELLHOUND 20
#define ICELIZARD 21
#define CENTAUR 22
#define TROLL 23
#define YETI 24
#define WHITEDRAGON 25
#define ELF 26
#define CUBE 27
#define METAMORPH 28
#define VORTEX 29
#define ZILLER 30
#define VIOLETFUNGI 31
#define WRAITH 32
#define FORVALAKA 33
#define LAMANOBE 34
#define OSEQUIP 35
#define ROTHE 36
#define XORN 37
#define VAMPIRE 38
#define INVISIBLESTALKER 39
#define POLTERGEIST 40
#define DISENCHANTRESS 41
#define SHAMBLINGMOUND 42
#define YELLOWMOLD 43
#define UMBERHULK 44
#define GNOMEKING 45
#define MIMIC 46
#define WATERLORD 47
#define BRONZEDRAGON 48
#define GREENDRAGON 49
#define PURPLEWORM 50
#define XVART 51
#define SPIRITNAGA 52
#define SILVERDRAGON 53
#define PLATINUMDRAGON 54
#define GREENURCHIN 55
#define REDDRAGON 56
#define DEMONLORD 57
#define DEMONPRINCE 64
#define NULL 0
#define BUFBIG 4096 /* size of the output buffer */
#define MAXIBUF 4096 /* size of the input buffer */
#define LOGNAMESIZE 40 /* max size of the players name */
#define PSNAMESIZE 40 /* max size of the process name */
#ifndef NODEFS
extern char VERSION,SUBVERSION;
extern char aborted[],alpha[],beenhere[],boldon,cheat,ckpfile[],ckpflag;
extern char *class[],course[],diagfile[],fortfile[],helpfile[];
extern char *inbuffer,is_alpha[],is_digit[];
extern char item[MAXX][MAXY],iven[],know[MAXX][MAXY],larnlevels[],lastmonst[];
extern char level,*levelname[],logfile[],loginname[],logname[],*lpbuf,*lpend;
extern char *lpnt,moved[MAXX][MAXY],mitem[MAXX][MAXY],monstlevel[];
extern char monstnamelist[],nch[],ndgg[],nlpts[],nomove,nosignal,nowelcome;
extern char nplt[],nsw[],*objectname[];
extern char objnamelist[],optsfile[],*potionname[],playerids[],potprob[];
extern char predostuff,psname[],restorflag,savefilename[],scorefile[],scprob[];
extern char screen[MAXX][MAXY],*scrollname[],sex,*spelcode[],*speldescript[];
extern char spelknow[],*spelname[],*spelmes[],spelweird[MAXMONST+8][SPNUM];
extern char splev[],stealth[MAXX][MAXY],to_lower[],to_upper[],wizard;
extern short diroffx[],diroffy[],hitflag,hit2flag,hit3flag,hitp[MAXX][MAXY];
extern short iarg[MAXX][MAXY],ivenarg[],lasthx,lasthy,lastnum,lastpx,lastpy;
extern short nobeep,oldx,oldy,playerx,playery;
extern int dayplay,enable_scroll,srcount,yrepcount,userid,wisid,lfd,fd;
extern long initialtime,outstanding_taxes,skill[],gtime,c[],cbak[];
extern unsigned long randx;
extern struct cel *cell;
extern struct monst monster[];
extern struct sphere *spheres;
extern struct _itm itm[];
char *fortune(),*getenv(),*getlogin(),*lgetw(),*lgetl(),*ctime();
char *tmcapcnv(),*tgetstr(),*tgoto();
long paytaxes(),lgetc(),lrint(),time();
unsigned long readnum();
void *malloc();
/* macro to create scroll #'s with probability of occurrence */
#define newscroll() (scprob[rund(81)])
/* macro to return a potion # created with probability of occurrence */
#define newpotion() (potprob[rund(41)])
/* macro to return the + points on created leather armor */
#define newleather() (nlpts[rund(c[HARDGAME]?13:15)])
/* macro to return the + points on chain armor */
#define newchain() (nch[rund(10)])
/* macro to return + points on plate armor */
#define newplate() (nplt[rund(c[HARDGAME]?4:12)])
/* macro to return + points on new daggers */
#define newdagger() (ndgg[rund(13)])
/* macro to return + points on new swords */
#define newsword() (nsw[rund(c[HARDGAME]?6:13)])
/* macro to destroy object at present location */
#define forget() (item[playerx][playery]=know[playerx][playery]=0)
/* macro to wipe out a monster at a location */
#define disappear(x,y) (mitem[x][y]=know[x][y]=0)
#ifdef VT100
/* macro to turn on bold display for the terminal */
#define setbold() (lprcat(boldon?"\33[1m":"\33[7m"))
/* macro to turn off bold display for the terminal */
#define resetbold() (lprcat("\33[m"))
/* macro to setup the scrolling region for the terminal */
#define setscroll() (lprcat("\33[20;24r"))
/* macro to clear the scrolling region for the terminal */
#define resetscroll() (lprcat("\33[;24r"))
/* macro to clear the screen and home the cursor */
#define clear() (lprcat("\33[2J\33[f"), cbak[SPELLS]= -50)
#define cltoeoln() lprcat("\33[K")
#else VT100
/* defines below are for use in the termcap mode only */
#define ST_START 1
#define ST_END 2
#define BOLD 3
#define END_BOLD 4
#define CLEAR 5
#define CL_LINE 6
#define CL_DOWN 14
#define CURSOR 15
/* macro to turn on bold display for the terminal */
#define setbold() (*lpnt++ = ST_START)
/* macro to turn off bold display for the terminal */
#define resetbold() (*lpnt++ = ST_END)
/* macro to setup the scrolling region for the terminal */
#define setscroll() enable_scroll=1
/* macro to clear the scrolling region for the terminal */
#define resetscroll() enable_scroll=0
/* macro to clear the screen and home the cursor */
#define clear() (*lpnt++ =CLEAR, cbak[SPELLS]= -50)
/* macro to clear to end of line */
#define cltoeoln() (*lpnt++ = CL_LINE)
#endif VT100
/* macro to output one byte to the output buffer */
#define lprc(ch) ((lpnt>=lpend)?(*lpnt++ =(ch), lflush()):(*lpnt++ =(ch)))
/* macro to seed the random number generator */
#define srand(x) (randx=x)
#ifdef MACRORND
/* macros to generate random numbers 1<=rnd(N)<=N 0<=rund(N)<=N-1 */
#define rnd(x) ((((randx=randx*1103515245+12345)>>7)%(x))+1)
#define rund(x) ((((randx=randx*1103515245+12345)>>7)%(x)) )
#endif MACRORND
/* macros for miscellaneous data conversion */
#define min(x,y) (((x)>(y))?(y):(x))
#define max(x,y) (((x)>(y))?(x):(y))
#define isalpha(x) (is_alpha[x])
#define isdigit(x) (is_digit[x])
#define tolower(x) (to_lower[x])
#define toupper(x) (to_upper[x])
#define lcc(x) (to_lower[x])
#define ucc(x) (to_upper[x])
#endif NODEFS