diff options
author | dholland <dholland@NetBSD.org> | 2008-02-04 01:07:01 +0000 |
---|---|---|
committer | dholland <dholland@NetBSD.org> | 2008-02-04 01:07:01 +0000 |
commit | c015d2f9aa4fbe23c4e9e50742dcebee298b0287 (patch) | |
tree | e91ac487debab9f56e77d6b3e583915ffd2a5852 /larn/tok.c | |
parent | 350aac765d3e94494f9b3db3a16f3b09d454bd5b (diff) | |
download | bsdgames-darwin-c015d2f9aa4fbe23c4e9e50742dcebee298b0287.tar.gz bsdgames-darwin-c015d2f9aa4fbe23c4e9e50742dcebee298b0287.tar.zst bsdgames-darwin-c015d2f9aa4fbe23c4e9e50742dcebee298b0287.zip |
More assorted cleanup merged from larn 12.2.
Diffstat (limited to 'larn/tok.c')
-rw-r--r-- | larn/tok.c | 150 |
1 files changed, 66 insertions, 84 deletions
@@ -1,9 +1,9 @@ -/* $NetBSD: tok.c,v 1.9 2008/02/03 20:11:05 dholland Exp $ */ +/* $NetBSD: tok.c,v 1.10 2008/02/04 01:07:01 dholland Exp $ */ /* tok.c Larn is copyrighted 1986 by Noah Morgan. */ #include <sys/cdefs.h> #ifndef lint -__RCSID("$NetBSD: tok.c,v 1.9 2008/02/03 20:11:05 dholland Exp $"); +__RCSID("$NetBSD: tok.c,v 1.10 2008/02/04 01:07:01 dholland Exp $"); #endif /* not lint */ #include <sys/types.h> @@ -16,6 +16,9 @@ __RCSID("$NetBSD: tok.c,v 1.9 2008/02/03 20:11:05 dholland Exp $"); #include "header.h" #include "extern.h" +/* Keystrokes (roughly) between checkpoints */ +#define CHECKPOINT_INTERVAL 400 + static char lastok = 0; int yrepcount = 0; #ifndef FLUSHNO @@ -53,9 +56,9 @@ yylex() lflush(); while (1) { c[BYTESIN]++; + /* check for periodic checkpointing */ if (ckpflag) - if ((c[BYTESIN] % 400) == 0) { /* check for periodic - * checkpointing */ + if ((c[BYTESIN] % CHECKPOINT_INTERVAL) == 0) { #ifndef DOCHECKPOINTS savegame(ckpfile); #else @@ -133,6 +136,8 @@ sethard(hard) int hard; { int j, k, i; + struct monst *mp; + j = c[HARDGAME]; hashewon(); if (restorflag == 0) { /* don't set c[HARDGAME] if restoring game */ @@ -144,16 +149,17 @@ sethard(hard) if ((k = c[HARDGAME]) != 0) for (j = 0; j <= MAXMONST + 8; j++) { - i = ((6 + k) * monster[j].hitpoints + 1) / 6; - monster[j].hitpoints = (i < 0) ? 32767 : i; - i = ((6 + k) * monster[j].damage + 1) / 5; - monster[j].damage = (i > 127) ? 127 : i; - i = (10 * monster[j].gold) / (10 + k); - monster[j].gold = (i > 32767) ? 32767 : i; - i = monster[j].armorclass - k; - monster[j].armorclass = (i < -127) ? -127 : i; - i = (7 * monster[j].experience) / (7 + k) + 1; - monster[j].experience = (i <= 0) ? 1 : i; + mp = &monster[j]; + i = ((6 + k) * mp->hitpoints + 1) / 6; + mp->hitpoints = (i < 0) ? 32767 : i; + i = ((6 + k) * mp->damage + 1) / 5; + mp->damage = (i > 127) ? 127 : i; + i = (10 * mp->gold) / (10 + k); + mp->gold = (i > 32767) ? 32767 : i; + i = mp->armorclass - k; + mp->armorclass = (i < -127) ? -127 : i; + i = (7 * mp->experience) / (7 + k) + 1; + mp->experience = (i <= 0) ? 1 : i; } } @@ -166,8 +172,9 @@ readopts() const char *i; int j, k; int flag; - flag = 1; /* set to 0 if he specifies a name for his - * character */ + + flag = 1; /* set to 0 if a name is specified */ + if (lopen(optsfile) < 0) { strcpy(logname, loginname); return; /* user name if no character name */ @@ -178,76 +185,51 @@ readopts() break; /* check for EOF */ while ((*i == ' ') || (*i == '\t')) i++; /* eat leading whitespace */ - switch (*i) { - case 'b': - if (strcmp(i, "bold-objects") == 0) - boldon = 1; - break; - - case 'e': - if (strcmp(i, "enable-checkpointing") == 0) - ckpflag = 1; - break; - - case 'i': - if (strcmp(i, "inverse-objects") == 0) - boldon = 0; - break; - - case 'f': - if (strcmp(i, "female") == 0) - sex = 0; /* male or female */ - break; - case 'm': - if (strcmp(i, "monster:") == 0) { /* name favorite monster */ - if ((i = lgetw()) == 0) - break; - strlcpy(usermonster[usermpoint], i, MAXMNAME); - if (usermpoint >= MAXUM) - break; /* defined all of em */ - if (isalpha(j = usermonster[usermpoint][0])) { - for (k = 1; k < MAXMONST + 8; k++) /* find monster */ - if (monstnamelist[k] == j) { - monster[k].name = &usermonster[usermpoint++][0]; - break; - } - } - } else if (strcmp(i, "male") == 0) - sex = 1; - break; - - case 'n': - if (strcmp(i, "name:") == 0) { /* defining players name */ - if ((i = lgetw()) == 0) - break; - strlcpy(logname, i, LOGNAMESIZE); - flag = 0; - } else if (strcmp(i, "no-introduction") == 0) - nowelcome = 1; - else if (strcmp(i, "no-beep") == 0) - nobeep = 1; - break; - - case 'p': - if (strcmp(i, "process-name:") == 0) { - if ((i = lgetw()) == 0) - break; - strlcpy(psname, i, PSNAMESIZE); - } else if (strcmp(i, "play-day-play") == 0) { - /* bypass time restrictions: ignored */ + if (strcmp(i, "bold-objects") == 0) + boldon = 1; + else if (strcmp(i, "enable-checkpointing") == 0) + ckpflag = 1; + else if (strcmp(i, "inverse-objects") == 0) + boldon = 0; + else if (strcmp(i, "female") == 0) + sex = 0; /* male or female */ + else if (strcmp(i, "monster:") == 0) { /* name favorite monster */ + if ((i = lgetw()) == 0) + break; + strlcpy(usermonster[usermpoint], i, MAXMNAME); + if (usermpoint >= MAXUM) + continue; /* defined all of em */ + if (isalpha(j = usermonster[usermpoint][0])) { + for (k = 1; k < MAXMONST + 8; k++) /* find monster */ + if (monstnamelist[k] == j) { + monster[k].name = &usermonster[usermpoint++][0]; + break; + } } - break; - - case 's': - if (strcmp(i, "savefile:") == 0) { /* defining savefilename */ - if ((i = lgetw()) == 0) - break; - strcpy(savefilename, i); - flag = 0; - } - break; - }; + } else if (strcmp(i, "male") == 0) + sex = 1; + else if (strcmp(i, "name:") == 0) { /* defining players name */ + if ((i = lgetw()) == 0) + break; + strlcpy(logname, i, LOGNAMESIZE); + flag = 0; + } else if (strcmp(i, "no-introduction") == 0) + nowelcome = 1; + else if (strcmp(i, "no-beep") == 0) + nobeep = 1; + else if (strcmp(i, "process-name:") == 0) { + if ((i = lgetw()) == 0) + break; + strlcpy(psname, i, PSNAMESIZE); + } else if (strcmp(i, "play-day-play") == 0) { + /* bypass time restrictions: ignored */ + } else if (strcmp(i, "savefile:") == 0) { /* defining savefilename */ + if ((i = lgetw()) == 0) + break; + strcpy(savefilename, i); + flag = 0; + } } if (flag) strcpy(logname, loginname); |