📄 header.h
字号:
/* 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 NODEFSextern 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -