Annotation of 43BSDReno/games/larn/header.h, revision 1.1.1.1

1.1       root        1: /*     header.h                Larn is copyrighted 1986 by Noah Morgan. */
                      2: 
                      3: #define MAXLEVEL 11
                      4:        /*      max # levels in the dungeon                     */
                      5: #define MAXVLEVEL 3
                      6:        /*      max # of levels in the temple of the luran      */
                      7: #define MAXX 67
                      8: #define MAXY 17
                      9: 
                     10: #define SCORESIZE 10
                     11:        /*      this is the number of people on a scoreboard max */
                     12: #define MAXPLEVEL 100
                     13:        /*      maximum player level allowed            */
                     14: #define MAXMONST 56
                     15:        /*      maximum # monsters in the dungeon       */
                     16: #define SPNUM 38
                     17:        /*      maximum number of spells in existance   */
                     18: #define MAXSCROLL 28
                     19:        /*      maximum number of scrolls that are possible     */
                     20: #define MAXPOTION 35
                     21:        /*      maximum number of potions that are possible     */
                     22: #define TIMELIMIT 30000
                     23:        /*      the maximum number of moves before the game is called */
                     24: #define TAXRATE 1/20
                     25:        /*      the tax rate for the LRS */
                     26: #define MAXOBJ 93
                     27:        /* the maximum number of objects   n < MAXOBJ */
                     28: 
                     29: /*     this is the structure definition of the monster data    */
                     30: struct monst
                     31:        {
                     32:        char    *name;
                     33:        char    level;
                     34:        short   armorclass;
                     35:        char    damage;
                     36:        char    attack;
                     37:        char    defense;
                     38:        char    genocided;
                     39:        char    intelligence; /* monsters intelligence -- used to choose movement */
                     40:        short   gold;
                     41:        short   hitpoints;
                     42:        unsigned long experience;
                     43:        };
                     44: 
                     45: /*     this is the structure definition for the items in the dnd store */
                     46: struct _itm
                     47:        {
                     48:        short   price;
                     49:        char    **mem;
                     50:        char    obj;
                     51:        char    arg;
                     52:        char    qty;
                     53:        };
                     54: 
                     55: /*     this is the structure that holds the entire dungeon specifications      */
                     56: struct cel
                     57:        {
                     58:        short   hitp;   /*      monster's hit points    */
                     59:        char    mitem;  /*      the monster ID                  */
                     60:        char    item;   /*      the object's ID                 */
                     61:        short   iarg;   /*      the object's argument   */
                     62:        char    know;   /*      have we been here before*/
                     63:        };
                     64: 
                     65: /* this is the structure for maintaining & moving the spheres of annihilation */
                     66: struct sphere
                     67:        {
                     68:        struct sphere *p;       /* pointer to next structure */
                     69:        char x,y,lev;           /* location of the sphere */
                     70:        char dir;                       /* direction sphere is going in */
                     71:        char lifetime;          /* duration of the sphere */
                     72:        };
                     73: 
                     74: /*     defines for the character attribute array       c[]     */
                     75: #define STRENGTH 0             /* characters physical strength not due to objects */
                     76: #define INTELLIGENCE 1
                     77: #define WISDOM 2
                     78: #define CONSTITUTION 3
                     79: #define DEXTERITY 4
                     80: #define CHARISMA 5
                     81: #define HPMAX 6
                     82: #define HP 7
                     83: #define GOLD 8
                     84: #define EXPERIENCE 9
                     85: #define LEVEL 10
                     86: #define REGEN 11
                     87: #define WCLASS 12
                     88: #define AC 13
                     89: #define BANKACCOUNT 14
                     90: #define SPELLMAX 15
                     91: #define SPELLS 16
                     92: #define ENERGY 17
                     93: #define ECOUNTER 18
                     94: #define MOREDEFENSES 19
                     95: #define WEAR 20
                     96: #define PROTECTIONTIME 21
                     97: #define WIELD 22
                     98: #define AMULET 23
                     99: #define REGENCOUNTER 24
                    100: #define MOREDAM 25
                    101: #define DEXCOUNT 26
                    102: #define STRCOUNT 27
                    103: #define BLINDCOUNT 28
                    104: #define CAVELEVEL 29
                    105: #define CONFUSE 30
                    106: #define ALTPRO 31
                    107: #define HERO 32
                    108: #define CHARMCOUNT 33
                    109: #define INVISIBILITY 34
                    110: #define CANCELLATION 35
                    111: #define HASTESELF 36
                    112: #define EYEOFLARN 37
                    113: #define AGGRAVATE 38
                    114: #define GLOBE 39
                    115: #define TELEFLAG 40
                    116: #define SLAYING 41
                    117: #define NEGATESPIRIT 42
                    118: #define SCAREMONST 43
                    119: #define AWARENESS 44
                    120: #define HOLDMONST 45
                    121: #define TIMESTOP 46
                    122: #define HASTEMONST 47
                    123: #define CUBEofUNDEAD 48
                    124: #define GIANTSTR 49
                    125: #define FIRERESISTANCE 50
                    126: #define BESSMANN 51
                    127: #define NOTHEFT 52
                    128: #define HARDGAME 53
                    129: #define CPUTIME 54
                    130: #define BYTESIN 55
                    131: #define BYTESOUT 56
                    132: #define MOVESMADE 57
                    133: #define MONSTKILLED 58
                    134: #define SPELLSCAST 59
                    135: #define LANCEDEATH 60
                    136: #define SPIRITPRO 61
                    137: #define UNDEADPRO 62
                    138: #define SHIELD 63
                    139: #define STEALTH 64
                    140: #define ITCHING 65
                    141: #define LAUGHING 66
                    142: #define DRAINSTRENGTH 67
                    143: #define CLUMSINESS 68
                    144: #define INFEEBLEMENT 69
                    145: #define HALFDAM 70
                    146: #define SEEINVISIBLE 71
                    147: #define FILLROOM 72
                    148: #define RANDOMWALK 73
                    149: #define SPHCAST 74     /* nz if an active sphere of annihilation */
                    150: #define WTW 75         /* walk through walls */
                    151: #define STREXTRA 76    /* character strength due to objects or enchantments */
                    152: #define TMP 77 /* misc scratch space */
                    153: #define LIFEPROT 78 /* life protection counter */
                    154: 
                    155: /*     defines for the objects in the game             */
                    156: 
                    157: #define OALTAR 1
                    158: #define OTHRONE 2
                    159: #define OORB 3
                    160: #define OPIT 4
                    161: #define OSTAIRSUP 5
                    162: #define OELEVATORUP 6
                    163: #define OFOUNTAIN 7
                    164: #define OSTATUE 8
                    165: #define OTELEPORTER 9
                    166: #define OSCHOOL 10
                    167: #define OMIRROR 11
                    168: #define ODNDSTORE 12
                    169: #define OSTAIRSDOWN 13
                    170: #define OELEVATORDOWN 14
                    171: #define OBANK2 15
                    172: #define OBANK 16
                    173: #define ODEADFOUNTAIN 17
                    174: #define OMAXGOLD 70
                    175: #define OGOLDPILE 18
                    176: #define OOPENDOOR 19
                    177: #define OCLOSEDDOOR 20
                    178: #define OWALL 21
                    179: #define OTRAPARROW 66
                    180: #define OTRAPARROWIV 67
                    181: 
                    182: #define OLARNEYE 22
                    183: 
                    184: #define OPLATE 23
                    185: #define OCHAIN 24
                    186: #define OLEATHER 25
                    187: #define ORING 60
                    188: #define OSTUDLEATHER 61
                    189: #define OSPLINT 62
                    190: #define OPLATEARMOR 63
                    191: #define OSSPLATE 64
                    192: #define OSHIELD 68
                    193: #define OELVENCHAIN 92
                    194: 
                    195: #define OSWORDofSLASHING 26
                    196: #define OHAMMER 27
                    197: #define OSWORD 28
                    198: #define O2SWORD 29
                    199: #define OSPEAR 30
                    200: #define ODAGGER 31
                    201: #define OBATTLEAXE 57
                    202: #define OLONGSWORD 58
                    203: #define OFLAIL 59
                    204: #define OLANCE 65
                    205: #define OVORPAL 90
                    206: #define OSLAYER 91
                    207: 
                    208: #define ORINGOFEXTRA 32
                    209: #define OREGENRING 33
                    210: #define OPROTRING 34
                    211: #define OENERGYRING 35
                    212: #define ODEXRING 36
                    213: #define OSTRRING 37
                    214: #define OCLEVERRING 38
                    215: #define ODAMRING 39
                    216: 
                    217: #define OBELT 40
                    218: 
                    219: #define OSCROLL 41
                    220: #define OPOTION 42
                    221: #define OBOOK 43
                    222: #define OCHEST 44             
                    223: #define OAMULET 45
                    224: 
                    225: #define OORBOFDRAGON 46
                    226: #define OSPIRITSCARAB 47
                    227: #define OCUBEofUNDEAD 48
                    228: #define ONOTHEFT 49
                    229: 
                    230: #define ODIAMOND 50
                    231: #define ORUBY 51
                    232: #define OEMERALD 52
                    233: #define OSAPPHIRE 53
                    234: 
                    235: #define OENTRANCE 54
                    236: #define OVOLDOWN 55
                    237: #define OVOLUP 56
                    238: #define OHOME 69
                    239: 
                    240: #define OKGOLD 71
                    241: #define ODGOLD 72
                    242: #define OIVDARTRAP 73
                    243: #define ODARTRAP 74
                    244: #define OTRAPDOOR 75
                    245: #define OIVTRAPDOOR 76
                    246: #define OTRADEPOST 77
                    247: #define OIVTELETRAP 78
                    248: #define ODEADTHRONE 79
                    249: #define OANNIHILATION 80               /* sphere of annihilation */
                    250: #define OTHRONE2 81
                    251: #define OLRS 82                                /* Larn Revenue Service */
                    252: #define OCOOKIE 83
                    253: #define OURN 84
                    254: #define OBRASSLAMP 85
                    255: #define OHANDofFEAR 86         /* hand of fear */
                    256: #define OSPHTAILSMAN 87                /* tailsman of the sphere */
                    257: #define OWWAND 88                      /* wand of wonder */
                    258: #define OPSTAFF 89                     /* staff of power */
                    259: /* used up to 92 */
                    260: 
                    261: /*     defines for the monsters as objects             */
                    262: 
                    263: #define BAT 1 
                    264: #define GNOME 2 
                    265: #define HOBGOBLIN 3 
                    266: #define JACKAL 4 
                    267: #define KOBOLD 5 
                    268: #define ORC 6 
                    269: #define SNAKE 7
                    270: #define CENTIPEDE 8
                    271: #define JACULI 9 
                    272: #define TROGLODYTE 10 
                    273: #define ANT 11 
                    274: #define EYE 12 
                    275: #define LEPRECHAUN 13
                    276: #define NYMPH 14 
                    277: #define QUASIT 15 
                    278: #define RUSTMONSTER 16 
                    279: #define ZOMBIE 17 
                    280: #define ASSASSINBUG 18 
                    281: #define BUGBEAR 19 
                    282: #define HELLHOUND 20 
                    283: #define ICELIZARD 21 
                    284: #define CENTAUR 22 
                    285: #define TROLL 23 
                    286: #define YETI 24 
                    287: #define WHITEDRAGON 25 
                    288: #define ELF 26 
                    289: #define CUBE 27 
                    290: #define METAMORPH 28 
                    291: #define VORTEX 29 
                    292: #define ZILLER 30 
                    293: #define VIOLETFUNGI 31 
                    294: #define WRAITH 32 
                    295: #define FORVALAKA 33 
                    296: #define LAMANOBE 34 
                    297: #define OSEQUIP 35 
                    298: #define ROTHE 36 
                    299: #define XORN 37 
                    300: #define VAMPIRE 38 
                    301: #define INVISIBLESTALKER 39 
                    302: #define POLTERGEIST 40 
                    303: #define DISENCHANTRESS 41 
                    304: #define SHAMBLINGMOUND 42 
                    305: #define YELLOWMOLD 43
                    306: #define UMBERHULK 44
                    307: #define GNOMEKING 45
                    308: #define MIMIC 46
                    309: #define WATERLORD 47
                    310: #define BRONZEDRAGON 48
                    311: #define GREENDRAGON 49
                    312: #define PURPLEWORM 50
                    313: #define XVART 51
                    314: #define SPIRITNAGA 52
                    315: #define SILVERDRAGON 53
                    316: #define PLATINUMDRAGON 54
                    317: #define GREENURCHIN 55
                    318: #define REDDRAGON 56
                    319: #define DEMONLORD 57
                    320: #define DEMONPRINCE 64
                    321: 
                    322: #define NULL 0
                    323: #define BUFBIG 4096                    /* size of the output buffer */
                    324: #define MAXIBUF        4096                    /* size of the input buffer */
                    325: #define LOGNAMESIZE 40                 /* max size of the players name */
                    326: #define PSNAMESIZE 40                  /* max size of the process name */
                    327: 
                    328: #ifndef NODEFS
                    329: extern char VERSION,SUBVERSION;
                    330: extern char aborted[],alpha[],beenhere[],boldon,cheat,ckpfile[],ckpflag;
                    331: extern char *class[],course[],diagfile[],fortfile[],helpfile[];
                    332: extern char *inbuffer,is_alpha[],is_digit[];
                    333: extern char item[MAXX][MAXY],iven[],know[MAXX][MAXY],larnlevels[],lastmonst[];
                    334: extern char level,*levelname[],logfile[],loginname[],logname[],*lpbuf,*lpend;
                    335: extern char *lpnt,moved[MAXX][MAXY],mitem[MAXX][MAXY],monstlevel[];
                    336: extern char monstnamelist[],nch[],ndgg[],nlpts[],nomove,nosignal,nowelcome;
                    337: extern char nplt[],nsw[],*objectname[];
                    338: extern char objnamelist[],optsfile[],*potionname[],playerids[],potprob[];
                    339: extern char predostuff,psname[],restorflag,savefilename[],scorefile[],scprob[];
                    340: extern char screen[MAXX][MAXY],*scrollname[],sex,*spelcode[],*speldescript[];
                    341: extern char spelknow[],*spelname[],*spelmes[],spelweird[MAXMONST+8][SPNUM];
                    342: extern char splev[],stealth[MAXX][MAXY],to_lower[],to_upper[],wizard;
                    343: extern short diroffx[],diroffy[],hitflag,hit2flag,hit3flag,hitp[MAXX][MAXY];
                    344: extern short iarg[MAXX][MAXY],ivenarg[],lasthx,lasthy,lastnum,lastpx,lastpy;
                    345: extern short nobeep,oldx,oldy,playerx,playery;
                    346: extern int dayplay,enable_scroll,srcount,yrepcount,userid,wisid,lfd,fd;
                    347: extern long initialtime,outstanding_taxes,skill[],gtime,c[],cbak[];
                    348: extern unsigned long randx;
                    349: extern struct cel *cell;
                    350: extern struct monst monster[];
                    351: extern struct sphere *spheres;
                    352: extern struct _itm itm[];
                    353: 
                    354: char *fortune(),*malloc(),*getenv(),*getlogin(),*lgetw(),*lgetl(),*ctime();
                    355: char *tmcapcnv(),*tgetstr(),*tgoto();
                    356: long paytaxes(),lgetc(),lrint(),time();
                    357: unsigned long readnum();
                    358: 
                    359:        /* macro to create scroll #'s with probability of occurrence */
                    360: #define newscroll() (scprob[rund(81)])
                    361:        /* macro to return a potion # created with probability of occurrence */
                    362: #define newpotion() (potprob[rund(41)])
                    363:        /* macro to return the + points on created leather armor */
                    364: #define newleather() (nlpts[rund(c[HARDGAME]?13:15)])
                    365:        /* macro to return the + points on chain armor */
                    366: #define newchain() (nch[rund(10)])
                    367:        /* macro to return + points on plate armor */
                    368: #define newplate() (nplt[rund(c[HARDGAME]?4:12)])
                    369:        /* macro to return + points on new daggers */
                    370: #define newdagger() (ndgg[rund(13)])
                    371:        /* macro to return + points on new swords */
                    372: #define newsword() (nsw[rund(c[HARDGAME]?6:13)])
                    373:        /* macro to destroy object at present location */
                    374: #define forget() (item[playerx][playery]=know[playerx][playery]=0)
                    375:        /* macro to wipe out a monster at a location */
                    376: #define disappear(x,y) (mitem[x][y]=know[x][y]=0)
                    377: 
                    378: #ifdef VT100
                    379:        /* macro to turn on bold display for the terminal */
                    380: #define setbold() (lprcat(boldon?"\33[1m":"\33[7m"))
                    381:        /* macro to turn off bold display for the terminal */
                    382: #define resetbold() (lprcat("\33[m"))
                    383:        /* macro to setup the scrolling region for the terminal */
                    384: #define setscroll() (lprcat("\33[20;24r"))
                    385:        /* macro to clear the scrolling region for the terminal */
                    386: #define resetscroll() (lprcat("\33[;24r"))
                    387:        /* macro to clear the screen and home the cursor */
                    388: #define clear() (lprcat("\33[2J\33[f"), cbak[SPELLS]= -50)
                    389: #define cltoeoln() lprcat("\33[K")
                    390: #else VT100
                    391:        /* defines below are for use in the termcap mode only */
                    392: #define ST_START 1
                    393: #define ST_END   2
                    394: #define BOLD     3
                    395: #define END_BOLD 4
                    396: #define CLEAR    5
                    397: #define CL_LINE  6
                    398: #define CL_DOWN 14
                    399: #define CURSOR  15
                    400:        /* macro to turn on bold display for the terminal */
                    401: #define setbold() (*lpnt++ = ST_START)
                    402:        /* macro to turn off bold display for the terminal */
                    403: #define resetbold() (*lpnt++ = ST_END)
                    404:        /* macro to setup the scrolling region for the terminal */
                    405: #define setscroll() enable_scroll=1
                    406:        /* macro to clear the scrolling region for the terminal */
                    407: #define resetscroll() enable_scroll=0
                    408:        /* macro to clear the screen and home the cursor */
                    409: #define clear() (*lpnt++ =CLEAR, cbak[SPELLS]= -50)
                    410:        /* macro to clear to end of line */
                    411: #define cltoeoln() (*lpnt++ = CL_LINE)
                    412: #endif VT100
                    413: 
                    414:        /* macro to output one byte to the output buffer */
                    415: #define lprc(ch) ((lpnt>=lpend)?(*lpnt++ =(ch), lflush()):(*lpnt++ =(ch)))
                    416: 
                    417:        /* macro to seed the random number generator */
                    418: #define srand(x) (randx=x)
                    419: #ifdef MACRORND
                    420:        /* macros to generate random numbers   1<=rnd(N)<=N   0<=rund(N)<=N-1 */
                    421: #define rnd(x)  ((((randx=randx*1103515245+12345)>>7)%(x))+1)
                    422: #define rund(x) ((((randx=randx*1103515245+12345)>>7)%(x))  )
                    423: #endif MACRORND
                    424:        /* macros for miscellaneous data conversion */
                    425: #define min(x,y) (((x)>(y))?(y):(x))
                    426: #define max(x,y) (((x)>(y))?(x):(y))
                    427: #define isalpha(x) (is_alpha[x])
                    428: #define isdigit(x) (is_digit[x])
                    429: #define tolower(x) (to_lower[x])
                    430: #define toupper(x) (to_upper[x])
                    431: #define lcc(x) (to_lower[x])
                    432: #define ucc(x) (to_upper[x])
                    433: #endif NODEFS
                    434: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.