Annotation of 43BSDReno/games/larn/header.h, revision 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.