summaryrefslogtreecommitdiffstats
path: root/larn/tok.c
diff options
context:
space:
mode:
authordholland <dholland@NetBSD.org>2008-02-04 01:07:01 +0000
committerdholland <dholland@NetBSD.org>2008-02-04 01:07:01 +0000
commitc015d2f9aa4fbe23c4e9e50742dcebee298b0287 (patch)
treee91ac487debab9f56e77d6b3e583915ffd2a5852 /larn/tok.c
parent350aac765d3e94494f9b3db3a16f3b09d454bd5b (diff)
downloadbsdgames-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.c150
1 files changed, 66 insertions, 84 deletions
diff --git a/larn/tok.c b/larn/tok.c
index 6ca1f672..1a9b8bca 100644
--- a/larn/tok.c
+++ b/larn/tok.c
@@ -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);