KNFify (with indent)
This commit is contained in:
parent
36b47bd3b7
commit
31c7a7bec5
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: battlestar.c,v 1.5 1997/10/10 11:39:12 lukem Exp $ */
|
||||
/* $NetBSD: battlestar.c,v 1.6 1997/10/11 02:06:55 lukem Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1993
|
||||
@ -37,15 +37,15 @@
|
||||
#ifndef lint
|
||||
__COPYRIGHT("@(#) Copyright (c) 1983, 1993\n\
|
||||
The Regents of the University of California. All rights reserved.\n");
|
||||
#endif /* not lint */
|
||||
#endif /* not lint */
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)battlestar.c 8.2 (Berkeley) 4/28/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: battlestar.c,v 1.5 1997/10/10 11:39:12 lukem Exp $");
|
||||
__RCSID("$NetBSD: battlestar.c,v 1.6 1997/10/11 02:06:55 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
* Battlestar - a stellar-tropical adventure game
|
||||
@ -56,27 +56,27 @@ __RCSID("$NetBSD: battlestar.c,v 1.5 1997/10/10 11:39:12 lukem Exp $");
|
||||
|
||||
#include "extern.h"
|
||||
|
||||
int main __P((int, char *[]));
|
||||
int main __P((int, char *[]));
|
||||
|
||||
int
|
||||
main(argc,argv)
|
||||
int argc;
|
||||
char **argv;
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char **argv;
|
||||
{
|
||||
char mainbuf[LINELENGTH];
|
||||
char *next;
|
||||
char mainbuf[LINELENGTH];
|
||||
char *next;
|
||||
|
||||
initialize(argc < 2 || strcmp(argv[1], "-r"));
|
||||
start:
|
||||
news();
|
||||
beenthere[position]++;
|
||||
if (notes[LAUNCHED])
|
||||
crash(); /* decrements fuel & crash */
|
||||
crash(); /* decrements fuel & crash */
|
||||
if (matchlight) {
|
||||
puts("Your match splutters out.");
|
||||
matchlight = 0;
|
||||
}
|
||||
if (!notes[CANTSEE] || testbit(inven,LAMPON) ||
|
||||
if (!notes[CANTSEE] || testbit(inven, LAMPON) ||
|
||||
testbit(location[position].objects, LAMPON)) {
|
||||
writedes();
|
||||
printobjs();
|
||||
@ -85,16 +85,16 @@ start:
|
||||
whichway(location[position]);
|
||||
run:
|
||||
next = getcom(mainbuf, sizeof mainbuf, ">-: ",
|
||||
"Please type in something.");
|
||||
"Please type in something.");
|
||||
for (wordcount = 0; next && wordcount < 20; wordcount++)
|
||||
next = getword(next, words[wordcount], -1);
|
||||
parse();
|
||||
switch (cypher()) {
|
||||
case -1:
|
||||
goto run;
|
||||
case 0:
|
||||
goto start;
|
||||
default:
|
||||
exit(0);
|
||||
case -1:
|
||||
goto run;
|
||||
case 0:
|
||||
goto start;
|
||||
default:
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: com1.c,v 1.5 1997/10/10 11:39:16 lukem Exp $ */
|
||||
/* $NetBSD: com1.c,v 1.6 1997/10/11 02:06:58 lukem Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1993
|
||||
@ -38,15 +38,15 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)com1.c 8.2 (Berkeley) 4/28/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: com1.c,v 1.5 1997/10/10 11:39:16 lukem Exp $");
|
||||
__RCSID("$NetBSD: com1.c,v 1.6 1997/10/11 02:06:58 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif /* not lint */
|
||||
|
||||
#include "extern.h"
|
||||
|
||||
int
|
||||
move(thataway, token)
|
||||
int thataway, token;
|
||||
int thataway, token;
|
||||
{
|
||||
wordnumber++;
|
||||
if ((!notes[CANTMOVE] && !notes[LAUNCHED]) ||
|
||||
@ -56,26 +56,27 @@ move(thataway, token)
|
||||
position = thataway;
|
||||
newway(token);
|
||||
ourtime++;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
puts("You can't go this way.");
|
||||
newway(token);
|
||||
whichway(location[position]);
|
||||
return(0);
|
||||
return (0);
|
||||
}
|
||||
else if (notes[CANTMOVE] && !notes[LAUNCHED])
|
||||
puts("You aren't able to move; you better drop something.");
|
||||
else
|
||||
puts("You are out of fuel; now you will rot in space forever!");
|
||||
return(1);
|
||||
if (notes[CANTMOVE] && !notes[LAUNCHED])
|
||||
puts("You aren't able to move; you better drop something.");
|
||||
else
|
||||
puts("You are out of fuel; now you will rot in space forever!");
|
||||
return (1);
|
||||
}
|
||||
|
||||
void
|
||||
convert(tothis) /* Converts day to night and vice versa. */
|
||||
int tothis; /* Day objects are permanent. Night objects are added*/
|
||||
{ /* at dusk, and subtracted at dawn. */
|
||||
convert(tothis) /* Converts day to night and vice versa. */
|
||||
int tothis; /* Day objects are permanent. Night objects
|
||||
* are added */
|
||||
{ /* at dusk, and subtracted at dawn. */
|
||||
struct objs *p;
|
||||
int i, j;
|
||||
int i, j;
|
||||
|
||||
if (tothis == TONIGHT) {
|
||||
for (i = 1; i <= NUMOFROOMS; i++)
|
||||
@ -97,10 +98,10 @@ convert(tothis) /* Converts day to night and vice versa. */
|
||||
void
|
||||
news()
|
||||
{
|
||||
int n;
|
||||
int hurt;
|
||||
int n;
|
||||
int hurt;
|
||||
|
||||
if (ourtime > 30 && position < 32){
|
||||
if (ourtime > 30 && position < 32) {
|
||||
puts("An explosion of shuddering magnitude splinters bulkheads and");
|
||||
puts("ruptures the battlestar's hull. You are sucked out into the");
|
||||
puts("frozen void of space and killed.");
|
||||
@ -108,7 +109,7 @@ news()
|
||||
}
|
||||
if (ourtime > 20 && position < 32)
|
||||
puts("Explosions rock the battlestar.");
|
||||
if (ourtime > snooze){
|
||||
if (ourtime > snooze) {
|
||||
puts("You drop from exhaustion...");
|
||||
zzz();
|
||||
}
|
||||
@ -135,92 +136,91 @@ news()
|
||||
rythmn = ourtime - ourtime % CYCLE;
|
||||
}
|
||||
if (!wiz && !tempwiz)
|
||||
if ((testbit(inven,TALISMAN) || testbit(wear,TALISMAN)) && (testbit(inven,MEDALION) || testbit(wear,MEDALION)) && (testbit(inven,AMULET) || testbit(wear,AMULET))){
|
||||
if ((testbit(inven, TALISMAN) || testbit(wear, TALISMAN)) && (testbit(inven, MEDALION) || testbit(wear, MEDALION)) && (testbit(inven, AMULET) || testbit(wear, AMULET))) {
|
||||
tempwiz = 1;
|
||||
puts("The three amulets glow and reenforce each other in power.\nYou are now a wizard.");
|
||||
}
|
||||
if (testbit(location[position].objects, ELF)) {
|
||||
printf("%s\n", objdes[ELF]);
|
||||
fight(ELF, rnd(30));
|
||||
}
|
||||
if (testbit(location[position].objects,ELF)){
|
||||
printf("%s\n",objdes[ELF]);
|
||||
fight(ELF,rnd(30));
|
||||
if (testbit(location[position].objects, DARK)) {
|
||||
printf("%s\n", objdes[DARK]);
|
||||
fight(DARK, 100);
|
||||
}
|
||||
if (testbit(location[position].objects,DARK)){
|
||||
printf("%s\n",objdes[DARK]);
|
||||
fight(DARK,100);
|
||||
if (testbit(location[position].objects, WOODSMAN)) {
|
||||
printf("%s\n", objdes[WOODSMAN]);
|
||||
fight(WOODSMAN, 50);
|
||||
}
|
||||
if (testbit(location[position].objects,WOODSMAN)){
|
||||
printf("%s\n",objdes[WOODSMAN]);
|
||||
fight(WOODSMAN,50);
|
||||
}
|
||||
switch(position){
|
||||
|
||||
case 267:
|
||||
case 257: /* entering a cave */
|
||||
case 274:
|
||||
case 246:
|
||||
notes[CANTSEE] = 1;
|
||||
break;
|
||||
case 160:
|
||||
case 216: /* leaving a cave */
|
||||
case 230:
|
||||
case 231:
|
||||
case 232:
|
||||
notes[CANTSEE] = 0;
|
||||
break;
|
||||
switch (position) {
|
||||
|
||||
case 267:
|
||||
case 257: /* entering a cave */
|
||||
case 274:
|
||||
case 246:
|
||||
notes[CANTSEE] = 1;
|
||||
break;
|
||||
case 160:
|
||||
case 216: /* leaving a cave */
|
||||
case 230:
|
||||
case 231:
|
||||
case 232:
|
||||
notes[CANTSEE] = 0;
|
||||
break;
|
||||
}
|
||||
if (testbit(location[position].objects, GIRL))
|
||||
meetgirl = 1;
|
||||
if (meetgirl && CYCLE * 1.5 - ourtime < 10){
|
||||
setbit(location[GARDEN].objects,GIRLTALK);
|
||||
setbit(location[GARDEN].objects,LAMPON);
|
||||
setbit(location[GARDEN].objects,ROPE);
|
||||
if (meetgirl && CYCLE * 1.5 - ourtime < 10) {
|
||||
setbit(location[GARDEN].objects, GIRLTALK);
|
||||
setbit(location[GARDEN].objects, LAMPON);
|
||||
setbit(location[GARDEN].objects, ROPE);
|
||||
}
|
||||
if (position == DOCK && (beenthere[position] || ourtime > CYCLE)){
|
||||
if (position == DOCK && (beenthere[position] || ourtime > CYCLE)) {
|
||||
clearbit(location[DOCK].objects, GIRL);
|
||||
clearbit(location[DOCK].objects,MAN);
|
||||
clearbit(location[DOCK].objects, MAN);
|
||||
}
|
||||
if (meetgirl && ourtime - CYCLE * 1.5 > 10){
|
||||
clearbit(location[GARDEN].objects,GIRLTALK);
|
||||
clearbit(location[GARDEN].objects,LAMPON);
|
||||
clearbit(location[GARDEN].objects,ROPE);
|
||||
if (meetgirl && ourtime - CYCLE * 1.5 > 10) {
|
||||
clearbit(location[GARDEN].objects, GIRLTALK);
|
||||
clearbit(location[GARDEN].objects, LAMPON);
|
||||
clearbit(location[GARDEN].objects, ROPE);
|
||||
meetgirl = 0;
|
||||
}
|
||||
if (testbit(location[position].objects,CYLON)){
|
||||
if (testbit(location[position].objects, CYLON)) {
|
||||
puts("Oh my God, you're being shot at by an alien spacecraft!");
|
||||
printf("The targeting computer says we have %d seconds to attack!\n",
|
||||
ourclock);
|
||||
fflush(stdout);
|
||||
sleep(1);
|
||||
if (!visual()){
|
||||
if (!visual()) {
|
||||
hurt = rnd(NUMOFINJURIES);
|
||||
injuries[hurt] = 1;
|
||||
puts("Laser blasts sear the cockpit, and the alien veers off in a victory roll.");
|
||||
puts("The viper shudders under a terrible explosion.");
|
||||
printf("I'm afraid you have suffered %s.\n", ouch[hurt]);
|
||||
}
|
||||
else
|
||||
clearbit(location[position].objects,CYLON);
|
||||
} else
|
||||
clearbit(location[position].objects, CYLON);
|
||||
}
|
||||
if (injuries[SKULL] && injuries[INCISE] && injuries[NECK]){
|
||||
if (injuries[SKULL] && injuries[INCISE] && injuries[NECK]) {
|
||||
puts("I'm afraid you have suffered fatal injuries.");
|
||||
die();
|
||||
}
|
||||
for (n=0; n < NUMOFINJURIES; n++)
|
||||
if (injuries[n] == 1){
|
||||
for (n = 0; n < NUMOFINJURIES; n++)
|
||||
if (injuries[n] == 1) {
|
||||
injuries[n] = 2;
|
||||
if (WEIGHT > 5)
|
||||
WEIGHT -= 5;
|
||||
else
|
||||
WEIGHT = 0;
|
||||
}
|
||||
if (injuries[ARM] == 2){
|
||||
if (injuries[ARM] == 2) {
|
||||
CUMBER -= 5;
|
||||
injuries[ARM]++;
|
||||
}
|
||||
if (injuries[RIBS] == 2){
|
||||
if (injuries[RIBS] == 2) {
|
||||
CUMBER -= 2;
|
||||
injuries[RIBS]++;
|
||||
}
|
||||
if (injuries[SPINE] == 2){
|
||||
if (injuries[SPINE] == 2) {
|
||||
WEIGHT = 0;
|
||||
injuries[SPINE]++;
|
||||
}
|
||||
@ -233,16 +233,16 @@ news()
|
||||
void
|
||||
crash()
|
||||
{
|
||||
int hurt1,hurt2;
|
||||
int hurt1, hurt2;
|
||||
|
||||
fuel--;
|
||||
if (!location[position].flyhere ||
|
||||
(testbit(location[position].objects,LAND) && fuel <= 0)){
|
||||
(testbit(location[position].objects, LAND) && fuel <= 0)) {
|
||||
if (!location[position].flyhere)
|
||||
puts("You're flying too low. We're going to crash!");
|
||||
else{
|
||||
else {
|
||||
puts("You're out of fuel. We'll have to crash land!");
|
||||
if (!location[position].down){
|
||||
if (!location[position].down) {
|
||||
puts("Your viper strikes the ground and explodes into firey fragments.");
|
||||
puts("Thick black smoke billows up from the wreckage.");
|
||||
die();
|
||||
@ -250,16 +250,16 @@ crash()
|
||||
position = location[position].down;
|
||||
}
|
||||
notes[LAUNCHED] = 0;
|
||||
setbit(location[position].objects,CRASH);
|
||||
ourtime += rnd(CYCLE/4);
|
||||
setbit(location[position].objects, CRASH);
|
||||
ourtime += rnd(CYCLE / 4);
|
||||
puts("The viper explodes into the ground and you lose consciousness...");
|
||||
zzz();
|
||||
hurt1 = rnd(NUMOFINJURIES - 2) + 2;
|
||||
hurt2 = rnd(NUMOFINJURIES - 2) + 2;
|
||||
injuries[hurt1] = 1;
|
||||
injuries[hurt2] = 1;
|
||||
injuries[0] = 1; /* abrasions */
|
||||
injuries[1] = 1; /* lacerations */
|
||||
injuries[0] = 1;/* abrasions */
|
||||
injuries[1] = 1;/* lacerations */
|
||||
printf("I'm afraid you have suffered %s and %s.\n",
|
||||
ouch[hurt1], ouch[hurt2]);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: com2.c,v 1.5 1997/10/10 11:39:19 lukem Exp $ */
|
||||
/* $NetBSD: com2.c,v 1.6 1997/10/11 02:07:00 lukem Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1993
|
||||
@ -38,116 +38,116 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)com2.c 8.2 (Berkeley) 4/28/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: com2.c,v 1.5 1997/10/10 11:39:19 lukem Exp $");
|
||||
__RCSID("$NetBSD: com2.c,v 1.6 1997/10/11 02:07:00 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif /* not lint */
|
||||
|
||||
#include "extern.h"
|
||||
|
||||
int
|
||||
wearit() /* synonyms = {sheathe, sheath} */
|
||||
{
|
||||
int n;
|
||||
int firstnumber, value;
|
||||
wearit()
|
||||
{ /* synonyms = {sheathe, sheath} */
|
||||
int n;
|
||||
int firstnumber, value;
|
||||
|
||||
firstnumber = wordnumber;
|
||||
while(wordtype[++wordnumber] == ADJS);
|
||||
while(wordnumber <= wordcount){
|
||||
while (wordtype[++wordnumber] == ADJS);
|
||||
while (wordnumber <= wordcount) {
|
||||
value = wordvalue[wordnumber];
|
||||
for (n=0; objsht[value][n]; n++);
|
||||
switch(value){
|
||||
|
||||
case -1:
|
||||
puts("Wear what?");
|
||||
return(firstnumber);
|
||||
for (n = 0; objsht[value][n]; n++);
|
||||
switch (value) {
|
||||
|
||||
default:
|
||||
printf("You can't wear%s%s!\n",(objsht[value][n-1] == 's' ? " " : " a "),objsht[value]);
|
||||
return(firstnumber);
|
||||
case -1:
|
||||
puts("Wear what?");
|
||||
return (firstnumber);
|
||||
|
||||
case KNIFE:
|
||||
/* case SHIRT: */
|
||||
case ROBE:
|
||||
case LEVIS: /* wearable things */
|
||||
case SWORD:
|
||||
case MAIL:
|
||||
case HELM:
|
||||
case SHOES:
|
||||
case PAJAMAS:
|
||||
case COMPASS:
|
||||
case LASER:
|
||||
case AMULET:
|
||||
case TALISMAN:
|
||||
case MEDALION:
|
||||
case ROPE:
|
||||
case RING:
|
||||
case BRACELET:
|
||||
case GRENADE:
|
||||
default:
|
||||
printf("You can't wear%s%s!\n", (objsht[value][n - 1] == 's' ? " " : " a "), objsht[value]);
|
||||
return (firstnumber);
|
||||
|
||||
if (testbit(inven,value)){
|
||||
clearbit(inven,value);
|
||||
setbit(wear,value);
|
||||
carrying -= objwt[value];
|
||||
encumber -= objcumber[value];
|
||||
ourtime++;
|
||||
printf("You are now wearing %s %s.\n",
|
||||
(objsht[value][n-1] == 's' ? "the"
|
||||
: "a"), objsht[value]);
|
||||
}
|
||||
else if (testbit(wear,value))
|
||||
case KNIFE:
|
||||
/* case SHIRT: */
|
||||
case ROBE:
|
||||
case LEVIS: /* wearable things */
|
||||
case SWORD:
|
||||
case MAIL:
|
||||
case HELM:
|
||||
case SHOES:
|
||||
case PAJAMAS:
|
||||
case COMPASS:
|
||||
case LASER:
|
||||
case AMULET:
|
||||
case TALISMAN:
|
||||
case MEDALION:
|
||||
case ROPE:
|
||||
case RING:
|
||||
case BRACELET:
|
||||
case GRENADE:
|
||||
|
||||
if (testbit(inven, value)) {
|
||||
clearbit(inven, value);
|
||||
setbit(wear, value);
|
||||
carrying -= objwt[value];
|
||||
encumber -= objcumber[value];
|
||||
ourtime++;
|
||||
printf("You are now wearing %s %s.\n",
|
||||
(objsht[value][n - 1] == 's' ? "the"
|
||||
: "a"), objsht[value]);
|
||||
} else
|
||||
if (testbit(wear, value))
|
||||
printf("You are already wearing the %s.\n",
|
||||
objsht[value]);
|
||||
else
|
||||
else
|
||||
printf("You aren't holding the %s.\n",
|
||||
objsht[value]);
|
||||
if (wordnumber < wordcount - 1 &&
|
||||
wordvalue[++wordnumber] == AND)
|
||||
wordnumber++;
|
||||
else
|
||||
return(firstnumber);
|
||||
} /* end switch */
|
||||
} /* end while */
|
||||
if (wordnumber < wordcount - 1 &&
|
||||
wordvalue[++wordnumber] == AND)
|
||||
wordnumber++;
|
||||
else
|
||||
return (firstnumber);
|
||||
} /* end switch */
|
||||
} /* end while */
|
||||
puts("Don't be ridiculous.");
|
||||
return(firstnumber);
|
||||
return (firstnumber);
|
||||
}
|
||||
|
||||
int
|
||||
put() /* synonyms = {buckle, strap, tie} */
|
||||
{
|
||||
if (wordvalue[wordnumber + 1] == ON){
|
||||
put()
|
||||
{ /* synonyms = {buckle, strap, tie} */
|
||||
if (wordvalue[wordnumber + 1] == ON) {
|
||||
wordvalue[++wordnumber] = PUTON;
|
||||
return(cypher());
|
||||
return (cypher());
|
||||
}
|
||||
if (wordvalue[wordnumber + 1] == DOWN){
|
||||
if (wordvalue[wordnumber + 1] == DOWN) {
|
||||
wordvalue[++wordnumber] = DROP;
|
||||
return(cypher());
|
||||
return (cypher());
|
||||
}
|
||||
puts("I don't understand what you want to put.");
|
||||
return(-1);
|
||||
return (-1);
|
||||
|
||||
}
|
||||
|
||||
int
|
||||
draw() /* synonyms = {pull, carry} */
|
||||
{
|
||||
return(take(wear));
|
||||
draw()
|
||||
{ /* synonyms = {pull, carry} */
|
||||
return (take(wear));
|
||||
}
|
||||
|
||||
int
|
||||
use()
|
||||
{
|
||||
while (wordtype[++wordnumber] == ADJS && wordnumber < wordcount);
|
||||
if (wordvalue[wordnumber] == AMULET && testbit(inven,AMULET) &&
|
||||
position != FINAL){
|
||||
if (wordvalue[wordnumber] == AMULET && testbit(inven, AMULET) &&
|
||||
position != FINAL) {
|
||||
puts("The amulet begins to glow.");
|
||||
if (testbit(inven,MEDALION)){
|
||||
if (testbit(inven, MEDALION)) {
|
||||
puts("The medallion comes to life too.");
|
||||
if (position == 114){
|
||||
if (position == 114) {
|
||||
location[position].down = 160;
|
||||
whichway(location[position]);
|
||||
puts("The waves subside and it is possible to descend to the sea cave now.");
|
||||
ourtime++;
|
||||
return(-1);
|
||||
return (-1);
|
||||
}
|
||||
}
|
||||
puts("A light mist falls over your eyes and the sound of purling water trickles in");
|
||||
@ -157,85 +157,92 @@ use()
|
||||
else
|
||||
position = 229;
|
||||
ourtime++;
|
||||
return(0);
|
||||
}
|
||||
else if (position == FINAL)
|
||||
puts("The amulet won't work in here.");
|
||||
else if (wordvalue[wordnumber] == COMPASS && testbit(inven,COMPASS))
|
||||
printf("Your compass points %s.\n",truedirec(NORTH,'-'));
|
||||
else if (wordvalue[wordnumber] == COMPASS)
|
||||
puts("You aren't holding the compass.");
|
||||
else if (wordvalue[wordnumber] == AMULET)
|
||||
puts("You aren't holding the amulet.");
|
||||
else
|
||||
puts("There is no apparent use.");
|
||||
return(-1);
|
||||
return (0);
|
||||
} else
|
||||
if (position == FINAL)
|
||||
puts("The amulet won't work in here.");
|
||||
else
|
||||
if (wordvalue[wordnumber] == COMPASS && testbit(inven, COMPASS))
|
||||
printf("Your compass points %s.\n", truedirec(NORTH, '-'));
|
||||
else
|
||||
if (wordvalue[wordnumber] == COMPASS)
|
||||
puts("You aren't holding the compass.");
|
||||
else
|
||||
if (wordvalue[wordnumber] == AMULET)
|
||||
puts("You aren't holding the amulet.");
|
||||
else
|
||||
puts("There is no apparent use.");
|
||||
return (-1);
|
||||
}
|
||||
|
||||
void
|
||||
murder()
|
||||
{
|
||||
int n;
|
||||
int n;
|
||||
|
||||
for (n=0; !((n == SWORD || n == KNIFE || n == TWO_HANDED || n == MACE || n == CLEAVER || n == BROAD || n == CHAIN || n == SHOVEL || n == HALBERD) && testbit(inven,n)) && n < NUMOFOBJECTS; n++);
|
||||
for (n = 0; !((n == SWORD || n == KNIFE || n == TWO_HANDED || n == MACE || n == CLEAVER || n == BROAD || n == CHAIN || n == SHOVEL || n == HALBERD) && testbit(inven, n)) && n < NUMOFOBJECTS; n++);
|
||||
if (n == NUMOFOBJECTS)
|
||||
puts("You don't have suitable weapons to kill.");
|
||||
else {
|
||||
printf("Your %s should do the trick.\n",objsht[n]);
|
||||
printf("Your %s should do the trick.\n", objsht[n]);
|
||||
while (wordtype[++wordnumber] == ADJS);
|
||||
switch(wordvalue[wordnumber]){
|
||||
|
||||
case NORMGOD:
|
||||
if (testbit(location[position].objects,BATHGOD)){
|
||||
puts("The goddess's head slices off. Her corpse floats in the water.");
|
||||
clearbit(location[position].objects,BATHGOD);
|
||||
setbit(location[position].objects,DEADGOD);
|
||||
power += 5;
|
||||
notes[JINXED]++;
|
||||
} else if (testbit(location[position].objects,NORMGOD)){
|
||||
switch (wordvalue[wordnumber]) {
|
||||
|
||||
case NORMGOD:
|
||||
if (testbit(location[position].objects, BATHGOD)) {
|
||||
puts("The goddess's head slices off. Her corpse floats in the water.");
|
||||
clearbit(location[position].objects, BATHGOD);
|
||||
setbit(location[position].objects, DEADGOD);
|
||||
power += 5;
|
||||
notes[JINXED]++;
|
||||
} else
|
||||
if (testbit(location[position].objects, NORMGOD)) {
|
||||
puts("The goddess pleads but you strike her mercilessly. Her broken body lies in a\npool of blood.");
|
||||
clearbit(location[position].objects,NORMGOD);
|
||||
setbit(location[position].objects,DEADGOD);
|
||||
clearbit(location[position].objects, NORMGOD);
|
||||
setbit(location[position].objects, DEADGOD);
|
||||
power += 5;
|
||||
notes[JINXED]++;
|
||||
if (wintime)
|
||||
live();
|
||||
} else puts("I dont see her anywhere.");
|
||||
break;
|
||||
case TIMER:
|
||||
if (testbit(location[position].objects,TIMER)){
|
||||
puts("The old man offers no resistance.");
|
||||
clearbit(location[position].objects,TIMER);
|
||||
setbit(location[position].objects,DEADTIME);
|
||||
power++;
|
||||
notes[JINXED]++;
|
||||
} else puts("Who?");
|
||||
break;
|
||||
case NATIVE:
|
||||
if (testbit(location[position].objects,NATIVE)){
|
||||
puts("The girl screams as you cut her body to shreds. She is dead.");
|
||||
clearbit(location[position].objects,NATIVE);
|
||||
setbit(location[position].objects,DEADNATIVE);
|
||||
power += 5;
|
||||
notes[JINXED]++;
|
||||
} else puts("What girl?");
|
||||
break;
|
||||
case MAN:
|
||||
if (testbit(location[position].objects,MAN)){
|
||||
puts("You strike him to the ground, and he coughs up blood.");
|
||||
puts("Your fantasy is over.");
|
||||
die();
|
||||
}
|
||||
case -1:
|
||||
puts("Kill what?");
|
||||
break;
|
||||
} else
|
||||
puts("I dont see her anywhere.");
|
||||
break;
|
||||
case TIMER:
|
||||
if (testbit(location[position].objects, TIMER)) {
|
||||
puts("The old man offers no resistance.");
|
||||
clearbit(location[position].objects, TIMER);
|
||||
setbit(location[position].objects, DEADTIME);
|
||||
power++;
|
||||
notes[JINXED]++;
|
||||
} else
|
||||
puts("Who?");
|
||||
break;
|
||||
case NATIVE:
|
||||
if (testbit(location[position].objects, NATIVE)) {
|
||||
puts("The girl screams as you cut her body to shreds. She is dead.");
|
||||
clearbit(location[position].objects, NATIVE);
|
||||
setbit(location[position].objects, DEADNATIVE);
|
||||
power += 5;
|
||||
notes[JINXED]++;
|
||||
} else
|
||||
puts("What girl?");
|
||||
break;
|
||||
case MAN:
|
||||
if (testbit(location[position].objects, MAN)) {
|
||||
puts("You strike him to the ground, and he coughs up blood.");
|
||||
puts("Your fantasy is over.");
|
||||
die();
|
||||
}
|
||||
case -1:
|
||||
puts("Kill what?");
|
||||
break;
|
||||
|
||||
default:
|
||||
if (wordtype[wordnumber] != NOUNS)
|
||||
puts("Kill what?");
|
||||
else
|
||||
printf("You can't kill the %s!\n",
|
||||
objsht[wordvalue[wordnumber]]);
|
||||
default:
|
||||
if (wordtype[wordnumber] != NOUNS)
|
||||
puts("Kill what?");
|
||||
else
|
||||
printf("You can't kill the %s!\n",
|
||||
objsht[wordvalue[wordnumber]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -244,74 +251,72 @@ void
|
||||
ravage()
|
||||
{
|
||||
while (wordtype[++wordnumber] != NOUNS && wordnumber <= wordcount);
|
||||
if (wordtype[wordnumber] == NOUNS && testbit(location[position].objects,wordvalue[wordnumber])){
|
||||
if (wordtype[wordnumber] == NOUNS && testbit(location[position].objects, wordvalue[wordnumber])) {
|
||||
ourtime++;
|
||||
switch(wordvalue[wordnumber]){
|
||||
case NORMGOD:
|
||||
puts("You attack the goddess, and she screams as you beat her. She falls down");
|
||||
puts("crying and tries to hold her torn and bloodied dress around her.");
|
||||
power += 5;
|
||||
pleasure += 8;
|
||||
ego -= 10;
|
||||
wordnumber--;
|
||||
godready = -30000;
|
||||
murder();
|
||||
win = -30000;
|
||||
break;
|
||||
case NATIVE:
|
||||
puts("The girl tries to run, but you catch her and throw her down. Her face is");
|
||||
puts("bleeding, and she screams as you tear off her clothes.");
|
||||
power += 3;
|
||||
pleasure += 5;
|
||||
ego -= 10;
|
||||
wordnumber--;
|
||||
murder();
|
||||
if (rnd(100) < 50){
|
||||
puts("Her screams have attracted attention. I think we are surrounded.");
|
||||
setbit(location[ahead].objects,WOODSMAN);
|
||||
setbit(location[ahead].objects,DEADWOOD);
|
||||
setbit(location[ahead].objects,MALLET);
|
||||
setbit(location[back].objects,WOODSMAN);
|
||||
setbit(location[back].objects,DEADWOOD);
|
||||
setbit(location[back].objects,MALLET);
|
||||
setbit(location[left].objects,WOODSMAN);
|
||||
setbit(location[left].objects,DEADWOOD);
|
||||
setbit(location[left].objects,MALLET);
|
||||
setbit(location[right].objects,WOODSMAN);
|
||||
setbit(location[right].objects,DEADWOOD);
|
||||
setbit(location[right].objects,MALLET);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
puts("You are perverted.");
|
||||
switch (wordvalue[wordnumber]) {
|
||||
case NORMGOD:
|
||||
puts("You attack the goddess, and she screams as you beat her. She falls down");
|
||||
puts("crying and tries to hold her torn and bloodied dress around her.");
|
||||
power += 5;
|
||||
pleasure += 8;
|
||||
ego -= 10;
|
||||
wordnumber--;
|
||||
godready = -30000;
|
||||
murder();
|
||||
win = -30000;
|
||||
break;
|
||||
case NATIVE:
|
||||
puts("The girl tries to run, but you catch her and throw her down. Her face is");
|
||||
puts("bleeding, and she screams as you tear off her clothes.");
|
||||
power += 3;
|
||||
pleasure += 5;
|
||||
ego -= 10;
|
||||
wordnumber--;
|
||||
murder();
|
||||
if (rnd(100) < 50) {
|
||||
puts("Her screams have attracted attention. I think we are surrounded.");
|
||||
setbit(location[ahead].objects, WOODSMAN);
|
||||
setbit(location[ahead].objects, DEADWOOD);
|
||||
setbit(location[ahead].objects, MALLET);
|
||||
setbit(location[back].objects, WOODSMAN);
|
||||
setbit(location[back].objects, DEADWOOD);
|
||||
setbit(location[back].objects, MALLET);
|
||||
setbit(location[left].objects, WOODSMAN);
|
||||
setbit(location[left].objects, DEADWOOD);
|
||||
setbit(location[left].objects, MALLET);
|
||||
setbit(location[right].objects, WOODSMAN);
|
||||
setbit(location[right].objects, DEADWOOD);
|
||||
setbit(location[right].objects, MALLET);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
puts("You are perverted.");
|
||||
}
|
||||
}
|
||||
else
|
||||
} else
|
||||
puts("Who?");
|
||||
}
|
||||
|
||||
int
|
||||
follow()
|
||||
{
|
||||
if (followfight == ourtime){
|
||||
if (followfight == ourtime) {
|
||||
puts("The Dark Lord leaps away and runs down secret tunnels and corridoors.");
|
||||
puts("You chase him through the darkness and splash in pools of water.");
|
||||
puts("You have cornered him. His laser sword extends as he steps forward.");
|
||||
position = FINAL;
|
||||
fight(DARK,75);
|
||||
setbit(location[position].objects,TALISMAN);
|
||||
setbit(location[position].objects,AMULET);
|
||||
return(0);
|
||||
}
|
||||
else if (followgod == ourtime){
|
||||
puts("The goddess leads you down a steamy tunnel and into a high, wide chamber.");
|
||||
puts("She sits down on a throne.");
|
||||
position = 268;
|
||||
setbit(location[position].objects,NORMGOD);
|
||||
notes[CANTSEE] = 1;
|
||||
return(0);
|
||||
}
|
||||
else
|
||||
puts("There is no one to follow.");
|
||||
return(-1);
|
||||
fight(DARK, 75);
|
||||
setbit(location[position].objects, TALISMAN);
|
||||
setbit(location[position].objects, AMULET);
|
||||
return (0);
|
||||
} else
|
||||
if (followgod == ourtime) {
|
||||
puts("The goddess leads you down a steamy tunnel and into a high, wide chamber.");
|
||||
puts("She sits down on a throne.");
|
||||
position = 268;
|
||||
setbit(location[position].objects, NORMGOD);
|
||||
notes[CANTSEE] = 1;
|
||||
return (0);
|
||||
} else
|
||||
puts("There is no one to follow.");
|
||||
return (-1);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: com3.c,v 1.5 1997/10/10 11:39:22 lukem Exp $ */
|
||||
/* $NetBSD: com3.c,v 1.6 1997/10/11 02:07:02 lukem Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1993
|
||||
@ -38,240 +38,236 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)com3.c 8.2 (Berkeley) 4/28/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: com3.c,v 1.5 1997/10/10 11:39:22 lukem Exp $");
|
||||
__RCSID("$NetBSD: com3.c,v 1.6 1997/10/11 02:07:02 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif /* not lint */
|
||||
|
||||
#include "extern.h"
|
||||
|
||||
void
|
||||
dig()
|
||||
{
|
||||
if (testbit(inven,SHOVEL)){
|
||||
if (testbit(inven, SHOVEL)) {
|
||||
puts("OK");
|
||||
ourtime++;
|
||||
switch(position){
|
||||
case 144: /* copse near beach */
|
||||
if (!notes[DUG]){
|
||||
setbit(location[position].objects,DEADWOOD);
|
||||
setbit(location[position].objects,COMPASS);
|
||||
setbit(location[position].objects,KNIFE);
|
||||
setbit(location[position].objects,MACE);
|
||||
notes[DUG] = 1;
|
||||
}
|
||||
break;
|
||||
switch (position) {
|
||||
case 144: /* copse near beach */
|
||||
if (!notes[DUG]) {
|
||||
setbit(location[position].objects, DEADWOOD);
|
||||
setbit(location[position].objects, COMPASS);
|
||||
setbit(location[position].objects, KNIFE);
|
||||
setbit(location[position].objects, MACE);
|
||||
notes[DUG] = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
puts("Nothing happens.");
|
||||
default:
|
||||
puts("Nothing happens.");
|
||||
}
|
||||
}
|
||||
else
|
||||
} else
|
||||
puts("You don't have a shovel.");
|
||||
}
|
||||
|
||||
int
|
||||
jump()
|
||||
{
|
||||
int n;
|
||||
int n;
|
||||
|
||||
switch(position){
|
||||
default:
|
||||
puts("Nothing happens.");
|
||||
return(-1);
|
||||
switch (position) {
|
||||
default:
|
||||
puts("Nothing happens.");
|
||||
return (-1);
|
||||
|
||||
case 242:
|
||||
position = 133;
|
||||
break;
|
||||
case 214:
|
||||
case 215:
|
||||
case 162:
|
||||
case 159:
|
||||
position = 145;
|
||||
break;
|
||||
case 232:
|
||||
position = 275;
|
||||
break;
|
||||
case 3:
|
||||
position = 1;
|
||||
break;
|
||||
case 172:
|
||||
position = 201;
|
||||
case 242:
|
||||
position = 133;
|
||||
break;
|
||||
case 214:
|
||||
case 215:
|
||||
case 162:
|
||||
case 159:
|
||||
position = 145;
|
||||
break;
|
||||
case 232:
|
||||
position = 275;
|
||||
break;
|
||||
case 3:
|
||||
position = 1;
|
||||
break;
|
||||
case 172:
|
||||
position = 201;
|
||||
}
|
||||
puts("Ahhhhhhh...");
|
||||
injuries[12] = injuries[8] = injuries[7] = injuries[6] = 1;
|
||||
for (n=0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(inven,n)){
|
||||
clearbit(inven,n);
|
||||
setbit(location[position].objects,n);
|
||||
for (n = 0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(inven, n)) {
|
||||
clearbit(inven, n);
|
||||
setbit(location[position].objects, n);
|
||||
}
|
||||
carrying = 0;
|
||||
encumber = 0;
|
||||
return(0);
|
||||
return (0);
|
||||
}
|
||||
|
||||
void
|
||||
bury()
|
||||
{
|
||||
int value;
|
||||
int value;
|
||||
|
||||
if (testbit(inven,SHOVEL)){
|
||||
while(wordtype[++wordnumber] != OBJECT && wordtype[wordnumber] != NOUNS && wordnumber < wordcount);
|
||||
if (testbit(inven, SHOVEL)) {
|
||||
while (wordtype[++wordnumber] != OBJECT && wordtype[wordnumber] != NOUNS && wordnumber < wordcount);
|
||||
value = wordvalue[wordnumber];
|
||||
if (wordtype[wordnumber] == NOUNS && (testbit(location[position].objects,value) || value == BODY))
|
||||
switch(value){
|
||||
case BODY:
|
||||
wordtype[wordnumber] = OBJECT;
|
||||
if (testbit(inven,MAID) || testbit(location[position].objects,MAID))
|
||||
value = MAID;
|
||||
if (testbit(inven,DEADWOOD) || testbit(location[position].objects,DEADWOOD))
|
||||
value = DEADWOOD;
|
||||
if (testbit(inven,DEADGOD) || testbit(location[position].objects,DEADGOD))
|
||||
value = DEADGOD;
|
||||
if (testbit(inven,DEADTIME) || testbit(location[position].objects,DEADTIME))
|
||||
value = DEADTIME;
|
||||
if (testbit(inven,DEADNATIVE) || testbit(location[position].objects,DEADNATIVE))
|
||||
value = DEADNATIVE;
|
||||
break;
|
||||
if (wordtype[wordnumber] == NOUNS && (testbit(location[position].objects, value) || value == BODY))
|
||||
switch (value) {
|
||||
case BODY:
|
||||
wordtype[wordnumber] = OBJECT;
|
||||
if (testbit(inven, MAID) || testbit(location[position].objects, MAID))
|
||||
value = MAID;
|
||||
if (testbit(inven, DEADWOOD) || testbit(location[position].objects, DEADWOOD))
|
||||
value = DEADWOOD;
|
||||
if (testbit(inven, DEADGOD) || testbit(location[position].objects, DEADGOD))
|
||||
value = DEADGOD;
|
||||
if (testbit(inven, DEADTIME) || testbit(location[position].objects, DEADTIME))
|
||||
value = DEADTIME;
|
||||
if (testbit(inven, DEADNATIVE) || testbit(location[position].objects, DEADNATIVE))
|
||||
value = DEADNATIVE;
|
||||
break;
|
||||
|
||||
case NATIVE:
|
||||
case NORMGOD:
|
||||
puts("She screams as you wrestle her into the hole.");
|
||||
case TIMER:
|
||||
power += 7;
|
||||
ego -= 10;
|
||||
case AMULET:
|
||||
case MEDALION:
|
||||
case TALISMAN:
|
||||
wordtype[wordnumber] = OBJECT;
|
||||
break;
|
||||
case NATIVE:
|
||||
case NORMGOD:
|
||||
puts("She screams as you wrestle her into the hole.");
|
||||
case TIMER:
|
||||
power += 7;
|
||||
ego -= 10;
|
||||
case AMULET:
|
||||
case MEDALION:
|
||||
case TALISMAN:
|
||||
wordtype[wordnumber] = OBJECT;
|
||||
break;
|
||||
|
||||
default:
|
||||
puts("Wha..?");
|
||||
default:
|
||||
puts("Wha..?");
|
||||
}
|
||||
if (wordtype[wordnumber] == OBJECT && position > 88 && (testbit(inven,value) || testbit(location[position].objects,value))){
|
||||
if (wordtype[wordnumber] == OBJECT && position > 88 && (testbit(inven, value) || testbit(location[position].objects, value))) {
|
||||
puts("Buried.");
|
||||
if (testbit(inven,value)){
|
||||
clearbit(inven,value);
|
||||
if (testbit(inven, value)) {
|
||||
clearbit(inven, value);
|
||||
carrying -= objwt[value];
|
||||
encumber -= objcumber[value];
|
||||
}
|
||||
clearbit(location[position].objects,value);
|
||||
switch(value){
|
||||
case MAID:
|
||||
case DEADWOOD:
|
||||
case DEADNATIVE:
|
||||
case DEADTIME:
|
||||
case DEADGOD:
|
||||
ego += 2;
|
||||
printf("The %s should rest easier now.\n",objsht[value]);
|
||||
clearbit(location[position].objects, value);
|
||||
switch (value) {
|
||||
case MAID:
|
||||
case DEADWOOD:
|
||||
case DEADNATIVE:
|
||||
case DEADTIME:
|
||||
case DEADGOD:
|
||||
ego += 2;
|
||||
printf("The %s should rest easier now.\n", objsht[value]);
|
||||
}
|
||||
}
|
||||
else
|
||||
} else
|
||||
puts("It doesn't seem to work.");
|
||||
}
|
||||
else
|
||||
} else
|
||||
puts("You aren't holding a shovel.");
|
||||
}
|
||||
|
||||
void
|
||||
drink()
|
||||
{
|
||||
int n;
|
||||
int n;
|
||||
|
||||
if (testbit(inven,POTION)){
|
||||
if (testbit(inven, POTION)) {
|
||||
puts("The cool liquid runs down your throat but turns to fire and you choke.");
|
||||
puts("The heat reaches your limbs and tingles your spirit. You feel like falling");
|
||||
puts("asleep.");
|
||||
clearbit(inven, POTION);
|
||||
WEIGHT = MAXWEIGHT;
|
||||
CUMBER = MAXCUMBER;
|
||||
for (n=0; n < NUMOFINJURIES; n++)
|
||||
for (n = 0; n < NUMOFINJURIES; n++)
|
||||
injuries[n] = 0;
|
||||
ourtime++;
|
||||
zzz();
|
||||
}
|
||||
else
|
||||
} else
|
||||
puts("I'm not thirsty.");
|
||||
}
|
||||
|
||||
int
|
||||
shoot()
|
||||
{
|
||||
int firstnumber, value;
|
||||
int n;
|
||||
int firstnumber, value;
|
||||
int n;
|
||||
|
||||
firstnumber = 0;
|
||||
if (!testbit(inven,LASER))
|
||||
if (!testbit(inven, LASER))
|
||||
puts("You aren't holding a blaster.");
|
||||
else {
|
||||
firstnumber = wordnumber;
|
||||
while(wordtype[++wordnumber] == ADJS);
|
||||
while(wordnumber<=wordcount && wordtype[wordnumber] == OBJECT){
|
||||
while (wordtype[++wordnumber] == ADJS);
|
||||
while (wordnumber <= wordcount && wordtype[wordnumber] == OBJECT) {
|
||||
value = wordvalue[wordnumber];
|
||||
printf("%s:\n", objsht[value]);
|
||||
for (n=0; objsht[value][n]; n++);
|
||||
if (testbit(location[position].objects,value)){
|
||||
clearbit(location[position].objects,value);
|
||||
for (n = 0; objsht[value][n]; n++);
|
||||
if (testbit(location[position].objects, value)) {
|
||||
clearbit(location[position].objects, value);
|
||||
ourtime++;
|
||||
printf("The %s explode%s\n",objsht[value],(objsht[value][n-1]=='s' ? (objsht[value][n-2]=='s' ? "s." : ".") : "s."));
|
||||
printf("The %s explode%s\n", objsht[value], (objsht[value][n - 1] == 's' ? (objsht[value][n - 2] == 's' ? "s." : ".") : "s."));
|
||||
if (value == BOMB)
|
||||
die();
|
||||
}
|
||||
else
|
||||
} else
|
||||
printf("I dont see any %s around here.\n", objsht[value]);
|
||||
if (wordnumber < wordcount - 1 && wordvalue[++wordnumber] == AND)
|
||||
wordnumber++;
|
||||
else
|
||||
return(firstnumber);
|
||||
return (firstnumber);
|
||||
}
|
||||
/* special cases with their own return()'s */
|
||||
/* special cases with their own return()'s */
|
||||
|
||||
if (wordnumber <= wordcount && wordtype[wordnumber] == NOUNS){
|
||||
if (wordnumber <= wordcount && wordtype[wordnumber] == NOUNS) {
|
||||
ourtime++;
|
||||
switch(wordvalue[wordnumber]){
|
||||
|
||||
case DOOR:
|
||||
switch(position){
|
||||
case 189:
|
||||
case 231:
|
||||
puts("The door is unhinged.");
|
||||
location[189].north = 231;
|
||||
location[231].south = 189;
|
||||
whichway(location[position]);
|
||||
break;
|
||||
case 30:
|
||||
puts("The wooden door splinters.");
|
||||
location[30].west = 25;
|
||||
whichway(location[position]);
|
||||
break;
|
||||
case 31:
|
||||
puts("The laser blast has no effect on the door.");
|
||||
break;
|
||||
case 20:
|
||||
puts("The blast hits the door and it explodes into flame. The magnesium burns");
|
||||
puts("so rapidly that we have no chance to escape.");
|
||||
die();
|
||||
default:
|
||||
puts("Nothing happens.");
|
||||
}
|
||||
break;
|
||||
switch (wordvalue[wordnumber]) {
|
||||
|
||||
case NORMGOD:
|
||||
if (testbit(location[position].objects,BATHGOD)){
|
||||
puts("The goddess is hit in the chest and splashes back against the rocks.");
|
||||
puts("Dark blood oozes from the charred blast hole. Her naked body floats in the");
|
||||
puts("pools and then off downstream.");
|
||||
clearbit(location[position].objects,BATHGOD);
|
||||
setbit(location[180].objects,DEADGOD);
|
||||
power += 5;
|
||||
ego -= 10;
|
||||
notes[JINXED]++;
|
||||
} else if (testbit(location[position].objects,NORMGOD)){
|
||||
case DOOR:
|
||||
switch (position) {
|
||||
case 189:
|
||||
case 231:
|
||||
puts("The door is unhinged.");
|
||||
location[189].north = 231;
|
||||
location[231].south = 189;
|
||||
whichway(location[position]);
|
||||
break;
|
||||
case 30:
|
||||
puts("The wooden door splinters.");
|
||||
location[30].west = 25;
|
||||
whichway(location[position]);
|
||||
break;
|
||||
case 31:
|
||||
puts("The laser blast has no effect on the door.");
|
||||
break;
|
||||
case 20:
|
||||
puts("The blast hits the door and it explodes into flame. The magnesium burns");
|
||||
puts("so rapidly that we have no chance to escape.");
|
||||
die();
|
||||
default:
|
||||
puts("Nothing happens.");
|
||||
}
|
||||
break;
|
||||
|
||||
case NORMGOD:
|
||||
if (testbit(location[position].objects, BATHGOD)) {
|
||||
puts("The goddess is hit in the chest and splashes back against the rocks.");
|
||||
puts("Dark blood oozes from the charred blast hole. Her naked body floats in the");
|
||||
puts("pools and then off downstream.");
|
||||
clearbit(location[position].objects, BATHGOD);
|
||||
setbit(location[180].objects, DEADGOD);
|
||||
power += 5;
|
||||
ego -= 10;
|
||||
notes[JINXED]++;
|
||||
} else
|
||||
if (testbit(location[position].objects, NORMGOD)) {
|
||||
puts("The blast catches the goddess in the stomach, knocking her to the ground.");
|
||||
puts("She writhes in the dirt as the agony of death taunts her.");
|
||||
puts("She has stopped moving.");
|
||||
clearbit(location[position].objects,NORMGOD);
|
||||
setbit(location[position].objects,DEADGOD);
|
||||
clearbit(location[position].objects, NORMGOD);
|
||||
setbit(location[position].objects, DEADGOD);
|
||||
power += 5;
|
||||
ego -= 10;
|
||||
notes[JINXED]++;
|
||||
@ -280,46 +276,47 @@ shoot()
|
||||
break;
|
||||
} else
|
||||
puts("I don't see any goddess around here.");
|
||||
break;
|
||||
break;
|
||||
|
||||
case TIMER:
|
||||
if (testbit(location[position].objects,TIMER)){
|
||||
puts("The old man slumps over the bar.");
|
||||
power++;
|
||||
ego -= 2;
|
||||
notes[JINXED]++;
|
||||
clearbit(location[position].objects,TIMER);
|
||||
setbit(location[position].objects,DEADTIME);
|
||||
}
|
||||
else puts("What old timer?");
|
||||
break;
|
||||
case MAN:
|
||||
if (testbit(location[position].objects,MAN)){
|
||||
puts("The man falls to the ground with blood pouring all over his white suit.");
|
||||
puts("Your fantasy is over.");
|
||||
die();
|
||||
}
|
||||
else puts("What man?");
|
||||
break;
|
||||
case NATIVE:
|
||||
if (testbit(location[position].objects,NATIVE)){
|
||||
puts("The girl is blown backwards several feet and lies in a pool of blood.");
|
||||
clearbit(location[position].objects,NATIVE);
|
||||
setbit(location[position].objects,DEADNATIVE);
|
||||
power += 5;
|
||||
ego -= 2;
|
||||
notes[JINXED]++;
|
||||
} else puts("There is no girl here.");
|
||||
break;
|
||||
case -1:
|
||||
puts("Shoot what?");
|
||||
break;
|
||||
case TIMER:
|
||||
if (testbit(location[position].objects, TIMER)) {
|
||||
puts("The old man slumps over the bar.");
|
||||
power++;
|
||||
ego -= 2;
|
||||
notes[JINXED]++;
|
||||
clearbit(location[position].objects, TIMER);
|
||||
setbit(location[position].objects, DEADTIME);
|
||||
} else
|
||||
puts("What old timer?");
|
||||
break;
|
||||
case MAN:
|
||||
if (testbit(location[position].objects, MAN)) {
|
||||
puts("The man falls to the ground with blood pouring all over his white suit.");
|
||||
puts("Your fantasy is over.");
|
||||
die();
|
||||
} else
|
||||
puts("What man?");
|
||||
break;
|
||||
case NATIVE:
|
||||
if (testbit(location[position].objects, NATIVE)) {
|
||||
puts("The girl is blown backwards several feet and lies in a pool of blood.");
|
||||
clearbit(location[position].objects, NATIVE);
|
||||
setbit(location[position].objects, DEADNATIVE);
|
||||
power += 5;
|
||||
ego -= 2;
|
||||
notes[JINXED]++;
|
||||
} else
|
||||
puts("There is no girl here.");
|
||||
break;
|
||||
case -1:
|
||||
puts("Shoot what?");
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("You can't shoot the %s.\n",objsht[wordvalue[wordnumber]]);
|
||||
default:
|
||||
printf("You can't shoot the %s.\n", objsht[wordvalue[wordnumber]]);
|
||||
}
|
||||
}
|
||||
else puts("You must be a looney.");
|
||||
} else
|
||||
puts("You must be a looney.");
|
||||
}
|
||||
return(firstnumber);
|
||||
return (firstnumber);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: com4.c,v 1.5 1997/10/10 11:39:25 lukem Exp $ */
|
||||
/* $NetBSD: com4.c,v 1.6 1997/10/11 02:07:04 lukem Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1993
|
||||
@ -38,9 +38,9 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)com4.c 8.2 (Berkeley) 4/28/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: com4.c,v 1.5 1997/10/10 11:39:25 lukem Exp $");
|
||||
__RCSID("$NetBSD: com4.c,v 1.6 1997/10/11 02:07:04 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif /* not lint */
|
||||
|
||||
#include "extern.h"
|
||||
|
||||
@ -48,251 +48,251 @@ int
|
||||
take(from)
|
||||
unsigned int from[];
|
||||
{
|
||||
int firstnumber, heavy, bulky, value;
|
||||
int n;
|
||||
int firstnumber, heavy, bulky, value;
|
||||
int n;
|
||||
|
||||
firstnumber = wordnumber;
|
||||
if (wordnumber < wordcount && wordvalue[wordnumber+1] == OFF){
|
||||
if (wordnumber < wordcount && wordvalue[wordnumber + 1] == OFF) {
|
||||
wordnumber++;
|
||||
wordvalue[wordnumber] = TAKEOFF;
|
||||
return(cypher());
|
||||
}
|
||||
else {
|
||||
while(wordtype[++wordnumber] == ADJS);
|
||||
while(wordnumber<=wordcount && wordtype[wordnumber] == OBJECT){
|
||||
return (cypher());
|
||||
} else {
|
||||
while (wordtype[++wordnumber] == ADJS);
|
||||
while (wordnumber <= wordcount && wordtype[wordnumber] == OBJECT) {
|
||||
value = wordvalue[wordnumber];
|
||||
printf("%s:\n", objsht[value]);
|
||||
for (n=0; objsht[value][n]; n++);
|
||||
for (n = 0; objsht[value][n]; n++);
|
||||
heavy = (carrying + objwt[value]) <= WEIGHT;
|
||||
bulky = (encumber + objcumber[value]) <= CUMBER;
|
||||
if ((testbit(from,value) || wiz || tempwiz) && heavy && bulky && !testbit(inven,value)){
|
||||
setbit(inven,value);
|
||||
if ((testbit(from, value) || wiz || tempwiz) && heavy && bulky && !testbit(inven, value)) {
|
||||
setbit(inven, value);
|
||||
carrying += objwt[value];
|
||||
encumber += objcumber[value];
|
||||
ourtime++;
|
||||
if (testbit(from,value))
|
||||
if (testbit(from, value))
|
||||
printf("Taken.\n");
|
||||
else
|
||||
printf("Zap! Taken from thin air.\n");
|
||||
clearbit(from,value);
|
||||
clearbit(from, value);
|
||||
if (value == MEDALION)
|
||||
win--;
|
||||
}
|
||||
else if (testbit(inven,value))
|
||||
printf("You're already holding%s%s.\n", (objsht[value][n-1] == 's' ? " " : " a "),objsht[value]);
|
||||
else if (!heavy)
|
||||
printf("The %s %s too heavy.\n", objsht[value],(objsht[value][n-1] == 's' ? "are" : "is"));
|
||||
else if (!bulky)
|
||||
printf("The %s %s too cumbersome to hold.\n", objsht[value],(objsht[value][n-1] == 's' ? "are" : "is"));
|
||||
else
|
||||
printf("I dont see any %s around here.\n", objsht[value]);
|
||||
if (wordnumber < wordcount -1 && wordvalue[++wordnumber] == AND)
|
||||
} else
|
||||
if (testbit(inven, value))
|
||||
printf("You're already holding%s%s.\n", (objsht[value][n - 1] == 's' ? " " : " a "), objsht[value]);
|
||||
else
|
||||
if (!heavy)
|
||||
printf("The %s %s too heavy.\n", objsht[value], (objsht[value][n - 1] == 's' ? "are" : "is"));
|
||||
else
|
||||
if (!bulky)
|
||||
printf("The %s %s too cumbersome to hold.\n", objsht[value], (objsht[value][n - 1] == 's' ? "are" : "is"));
|
||||
else
|
||||
printf("I dont see any %s around here.\n", objsht[value]);
|
||||
if (wordnumber < wordcount - 1 && wordvalue[++wordnumber] == AND)
|
||||
wordnumber++;
|
||||
else
|
||||
return(firstnumber);
|
||||
return (firstnumber);
|
||||
}
|
||||
}
|
||||
/* special cases with their own return()'s */
|
||||
/* special cases with their own return()'s */
|
||||
|
||||
if (wordnumber <= wordcount && wordtype[wordnumber] == NOUNS)
|
||||
switch(wordvalue[wordnumber]){
|
||||
|
||||
case SWORD:
|
||||
if (testbit(from, SWORD)){
|
||||
wordtype[wordnumber--] = OBJECT;
|
||||
return(take(from));
|
||||
}
|
||||
if (testbit(from, TWO_HANDED)){
|
||||
wordvalue[wordnumber] = TWO_HANDED;
|
||||
wordtype[wordnumber--] = OBJECT;
|
||||
return(take(from));
|
||||
}
|
||||
wordvalue[wordnumber] = BROAD;
|
||||
wordtype[wordnumber--] = OBJECT;
|
||||
return(take(from));
|
||||
switch (wordvalue[wordnumber]) {
|
||||
|
||||
case BODY:
|
||||
if (testbit(from,MAID)){
|
||||
wordvalue[wordnumber] = MAID;
|
||||
wordtype[wordnumber--] = OBJECT;
|
||||
return(take(from));
|
||||
}
|
||||
else if (testbit(from,DEADWOOD)){
|
||||
case SWORD:
|
||||
if (testbit(from, SWORD)) {
|
||||
wordtype[wordnumber--] = OBJECT;
|
||||
return (take(from));
|
||||
}
|
||||
if (testbit(from, TWO_HANDED)) {
|
||||
wordvalue[wordnumber] = TWO_HANDED;
|
||||
wordtype[wordnumber--] = OBJECT;
|
||||
return (take(from));
|
||||
}
|
||||
wordvalue[wordnumber] = BROAD;
|
||||
wordtype[wordnumber--] = OBJECT;
|
||||
return (take(from));
|
||||
|
||||
case BODY:
|
||||
if (testbit(from, MAID)) {
|
||||
wordvalue[wordnumber] = MAID;
|
||||
wordtype[wordnumber--] = OBJECT;
|
||||
return (take(from));
|
||||
} else
|
||||
if (testbit(from, DEADWOOD)) {
|
||||
wordvalue[wordnumber] = DEADWOOD;
|
||||
wordtype[wordnumber--] = OBJECT;
|
||||
return(take(from));
|
||||
}
|
||||
else if (testbit(from,DEADNATIVE)){
|
||||
wordvalue[wordnumber] = DEADNATIVE;
|
||||
wordtype[wordnumber--] = OBJECT;
|
||||
return(take(from));
|
||||
}
|
||||
else if (testbit(from,DEADGOD)){
|
||||
wordvalue[wordnumber] = DEADGOD;
|
||||
wordtype[wordnumber--] = OBJECT;
|
||||
return(take(from));
|
||||
}
|
||||
else {
|
||||
wordvalue[wordnumber] = DEADTIME;
|
||||
wordtype[wordnumber--] = OBJECT;
|
||||
return(take(from));
|
||||
}
|
||||
break;
|
||||
return (take(from));
|
||||
} else
|
||||
if (testbit(from, DEADNATIVE)) {
|
||||
wordvalue[wordnumber] = DEADNATIVE;
|
||||
wordtype[wordnumber--] = OBJECT;
|
||||
return (take(from));
|
||||
} else
|
||||
if (testbit(from, DEADGOD)) {
|
||||
wordvalue[wordnumber] = DEADGOD;
|
||||
wordtype[wordnumber--] = OBJECT;
|
||||
return (take(from));
|
||||
} else {
|
||||
wordvalue[wordnumber] = DEADTIME;
|
||||
wordtype[wordnumber--] = OBJECT;
|
||||
return (take(from));
|
||||
}
|
||||
break;
|
||||
|
||||
case AMULET:
|
||||
if (testbit(location[position].objects,AMULET)){
|
||||
puts("The amulet is warm to the touch, and its beauty catches your breath.");
|
||||
puts("A mist falls over your eyes, but then it is gone. Sounds seem clearer");
|
||||
puts("and sharper but far away as if in a dream. The sound of purling water reaches");
|
||||
puts("you from afar. The mist falls again, and your heart leaps in horror. The gold");
|
||||
puts("freezes your hands and fathomless darkness engulfs your soul.");
|
||||
}
|
||||
wordtype[wordnumber--] = OBJECT;
|
||||
return(take(from));
|
||||
case AMULET:
|
||||
if (testbit(location[position].objects, AMULET)) {
|
||||
puts("The amulet is warm to the touch, and its beauty catches your breath.");
|
||||
puts("A mist falls over your eyes, but then it is gone. Sounds seem clearer");
|
||||
puts("and sharper but far away as if in a dream. The sound of purling water reaches");
|
||||
puts("you from afar. The mist falls again, and your heart leaps in horror. The gold");
|
||||
puts("freezes your hands and fathomless darkness engulfs your soul.");
|
||||
}
|
||||
wordtype[wordnumber--] = OBJECT;
|
||||
return (take(from));
|
||||
|
||||
case MEDALION:
|
||||
if (testbit(location[position].objects, MEDALION)){
|
||||
puts("The medallion is warm, and it rekindles your spirit with the warmth of life.");
|
||||
puts("Your amulet begins to glow as the medallion is brought near to it, and together\nthey radiate.");
|
||||
}
|
||||
wordtype[wordnumber--] = OBJECT;
|
||||
return(take(from));
|
||||
case MEDALION:
|
||||
if (testbit(location[position].objects, MEDALION)) {
|
||||
puts("The medallion is warm, and it rekindles your spirit with the warmth of life.");
|
||||
puts("Your amulet begins to glow as the medallion is brought near to it, and together\nthey radiate.");
|
||||
}
|
||||
wordtype[wordnumber--] = OBJECT;
|
||||
return (take(from));
|
||||
|
||||
case TALISMAN:
|
||||
if (testbit(location[position].objects,TALISMAN)){
|
||||
puts("The talisman is cold to the touch, and it sends a chill down your spine.");
|
||||
}
|
||||
wordtype[wordnumber--] = OBJECT;
|
||||
return(take(from));
|
||||
case TALISMAN:
|
||||
if (testbit(location[position].objects, TALISMAN)) {
|
||||
puts("The talisman is cold to the touch, and it sends a chill down your spine.");
|
||||
}
|
||||
wordtype[wordnumber--] = OBJECT;
|
||||
return (take(from));
|
||||
|
||||
case NORMGOD:
|
||||
if (testbit(location[position].objects,BATHGOD) && (testbit(wear,AMULET) || testbit(inven,AMULET))){
|
||||
puts("She offers a delicate hand, and you help her out of the sparkling springs.");
|
||||
puts("Water droplets like liquid silver bedew her golden skin, but when they part");
|
||||
puts("from her, they fall as teardrops. She wraps a single cloth around her and");
|
||||
puts("ties it at the waist. Around her neck hangs a golden amulet.");
|
||||
puts("She bids you to follow her.");
|
||||
pleasure++;
|
||||
followgod = ourtime;
|
||||
clearbit(location[position].objects,BATHGOD);
|
||||
} else if (!testbit(location[position].objects,BATHGOD))
|
||||
case NORMGOD:
|
||||
if (testbit(location[position].objects, BATHGOD) && (testbit(wear, AMULET) || testbit(inven, AMULET))) {
|
||||
puts("She offers a delicate hand, and you help her out of the sparkling springs.");
|
||||
puts("Water droplets like liquid silver bedew her golden skin, but when they part");
|
||||
puts("from her, they fall as teardrops. She wraps a single cloth around her and");
|
||||
puts("ties it at the waist. Around her neck hangs a golden amulet.");
|
||||
puts("She bids you to follow her.");
|
||||
pleasure++;
|
||||
followgod = ourtime;
|
||||
clearbit(location[position].objects, BATHGOD);
|
||||
} else
|
||||
if (!testbit(location[position].objects, BATHGOD))
|
||||
puts("You're in no position to take her.");
|
||||
else
|
||||
else
|
||||
puts("She moves away from you.");
|
||||
break;
|
||||
break;
|
||||
|
||||
default:
|
||||
puts("It doesn't seem to work.");
|
||||
default:
|
||||
puts("It doesn't seem to work.");
|
||||
}
|
||||
else
|
||||
puts("You've got to be kidding.");
|
||||
return(firstnumber);
|
||||
return (firstnumber);
|
||||
}
|
||||
|
||||
int
|
||||
throw(name)
|
||||
char *name;
|
||||
char *name;
|
||||
{
|
||||
int n;
|
||||
int deposit = 0;
|
||||
int first, value;
|
||||
int n;
|
||||
int deposit = 0;
|
||||
int first, value;
|
||||
|
||||
first = wordnumber;
|
||||
if (drop(name) != -1){
|
||||
switch(wordvalue[wordnumber]){
|
||||
|
||||
case AHEAD:
|
||||
deposit = ahead;
|
||||
break;
|
||||
if (drop(name) != -1) {
|
||||
switch (wordvalue[wordnumber]) {
|
||||
|
||||
case BACK:
|
||||
deposit = back;
|
||||
break;
|
||||
case AHEAD:
|
||||
deposit = ahead;
|
||||
break;
|
||||
|
||||
case LEFT:
|
||||
deposit = left;
|
||||
break;
|
||||
case BACK:
|
||||
deposit = back;
|
||||
break;
|
||||
|
||||
case RIGHT:
|
||||
deposit = right;
|
||||
break;
|
||||
case LEFT:
|
||||
deposit = left;
|
||||
break;
|
||||
|
||||
case UP:
|
||||
deposit = location[position].up * (location[position].access || position == FINAL);
|
||||
break;
|
||||
case RIGHT:
|
||||
deposit = right;
|
||||
break;
|
||||
|
||||
case DOWN:
|
||||
deposit = location[position].down;
|
||||
break;
|
||||
case UP:
|
||||
deposit = location[position].up * (location[position].access || position == FINAL);
|
||||
break;
|
||||
|
||||
case DOWN:
|
||||
deposit = location[position].down;
|
||||
break;
|
||||
}
|
||||
wordnumber = first;
|
||||
while (wordtype[++wordnumber] == ADJS);
|
||||
while (wordnumber <= wordcount){
|
||||
while (wordnumber <= wordcount) {
|
||||
value = wordvalue[wordnumber];
|
||||
if (deposit && testbit(location[position].objects,value)){
|
||||
clearbit(location[position].objects,value);
|
||||
if (deposit && testbit(location[position].objects, value)) {
|
||||
clearbit(location[position].objects, value);
|
||||
if (value != GRENADE)
|
||||
setbit(location[deposit].objects,value);
|
||||
else{
|
||||
setbit(location[deposit].objects, value);
|
||||
else {
|
||||
puts("A thundering explosion nearby sends up a cloud of smoke and shrapnel.");
|
||||
for (n = 0; n < NUMOFWORDS; n ++)
|
||||
for (n = 0; n < NUMOFWORDS; n++)
|
||||
location[deposit].objects[n] = 0;
|
||||
setbit(location[deposit].objects,CHAR);
|
||||
setbit(location[deposit].objects, CHAR);
|
||||
}
|
||||
if (value == ROPE && position == FINAL)
|
||||
location[position].access = 1;
|
||||
switch(deposit){
|
||||
case 189:
|
||||
case 231:
|
||||
puts("The stone door is unhinged.");
|
||||
location[189].north = 231;
|
||||
location[231].south = 189;
|
||||
break;
|
||||
case 30:
|
||||
puts("The wooden door is blown open.");
|
||||
location[30].west = 25;
|
||||
break;
|
||||
case 31:
|
||||
puts("The door is not damaged.");
|
||||
switch (deposit) {
|
||||
case 189:
|
||||
case 231:
|
||||
puts("The stone door is unhinged.");
|
||||
location[189].north = 231;
|
||||
location[231].south = 189;
|
||||
break;
|
||||
case 30:
|
||||
puts("The wooden door is blown open.");
|
||||
location[30].west = 25;
|
||||
break;
|
||||
case 31:
|
||||
puts("The door is not damaged.");
|
||||
}
|
||||
} else
|
||||
if (value == GRENADE && testbit(location[position].objects, value)) {
|
||||
puts("You are blown into shreds when your grenade explodes.");
|
||||
die();
|
||||
}
|
||||
}
|
||||
else if (value == GRENADE && testbit(location[position].objects,value)){
|
||||
puts("You are blown into shreds when your grenade explodes.");
|
||||
die();
|
||||
}
|
||||
if (wordnumber < wordcount - 1 && wordvalue[++wordnumber] == AND)
|
||||
wordnumber++;
|
||||
else
|
||||
return(first);
|
||||
else
|
||||
return (first);
|
||||
}
|
||||
return(first);
|
||||
return (first);
|
||||
}
|
||||
return(first);
|
||||
return (first);
|
||||
}
|
||||
|
||||
int
|
||||
drop(name)
|
||||
char *name;
|
||||
char *name;
|
||||
{
|
||||
|
||||
int firstnumber, value;
|
||||
|
||||
int firstnumber, value;
|
||||
|
||||
firstnumber = wordnumber;
|
||||
while (wordtype[++wordnumber] == ADJS)
|
||||
;
|
||||
while (wordnumber<=wordcount && (wordtype[wordnumber] == OBJECT || wordtype[wordnumber] == NOUNS)) {
|
||||
while (wordtype[++wordnumber] == ADJS);
|
||||
while (wordnumber <= wordcount && (wordtype[wordnumber] == OBJECT || wordtype[wordnumber] == NOUNS)) {
|
||||
value = wordvalue[wordnumber];
|
||||
printf("%s:\n", objsht[value]);
|
||||
if (testbit(inven,value)){
|
||||
clearbit(inven,value);
|
||||
if (testbit(inven, value)) {
|
||||
clearbit(inven, value);
|
||||
carrying -= objwt[value];
|
||||
encumber -= objcumber[value];
|
||||
if (value == BOMB){
|
||||
if (value == BOMB) {
|
||||
puts("The bomb explodes. A blinding white light and immense concussion obliterate us.");
|
||||
die();
|
||||
}
|
||||
if (value != AMULET && value != MEDALION && value != TALISMAN)
|
||||
setbit(location[position].objects,value);
|
||||
setbit(location[position].objects, value);
|
||||
else
|
||||
tempwiz = 0;
|
||||
ourtime++;
|
||||
@ -300,15 +300,15 @@ drop(name)
|
||||
puts("Drop kicked.");
|
||||
else
|
||||
printf("%s.\n", name);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
if (*name != 'K') {
|
||||
printf("You aren't holding the %s.\n", objsht[value]);
|
||||
if (testbit(location[position].objects,value)) {
|
||||
if (testbit(location[position].objects, value)) {
|
||||
if (*name == 'T')
|
||||
puts("Kicked instead.");
|
||||
else if (*name == 'G')
|
||||
puts("Given anyway.");
|
||||
else
|
||||
if (*name == 'G')
|
||||
puts("Given anyway.");
|
||||
}
|
||||
} else
|
||||
puts("Kicked.");
|
||||
@ -316,79 +316,80 @@ drop(name)
|
||||
if (wordnumber < wordcount - 1 && wordvalue[++wordnumber] == AND)
|
||||
wordnumber++;
|
||||
else
|
||||
return(firstnumber);
|
||||
return (firstnumber);
|
||||
}
|
||||
puts("Do what?");
|
||||
return(-1);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
int
|
||||
takeoff()
|
||||
{
|
||||
wordnumber = take(wear);
|
||||
return(drop("Dropped"));
|
||||
return (drop("Dropped"));
|
||||
}
|
||||
|
||||
int
|
||||
puton()
|
||||
{
|
||||
wordnumber = take(location[position].objects);
|
||||
return(wearit());
|
||||
return (wearit());
|
||||
}
|
||||
|
||||
int
|
||||
eat()
|
||||
{
|
||||
int firstnumber, value;
|
||||
int firstnumber, value;
|
||||
|
||||
firstnumber = wordnumber;
|
||||
while(wordtype[++wordnumber] == ADJS);
|
||||
while(wordnumber <= wordcount){
|
||||
while (wordtype[++wordnumber] == ADJS);
|
||||
while (wordnumber <= wordcount) {
|
||||
value = wordvalue[wordnumber];
|
||||
switch(value){
|
||||
|
||||
case -1:
|
||||
puts("Eat what?");
|
||||
return(firstnumber);
|
||||
switch (value) {
|
||||
|
||||
default:
|
||||
printf("You can't eat%s%s!\n",
|
||||
wordtype[wordnumber] == OBJECT &&
|
||||
objsht[value]
|
||||
[strlen(objsht[value]) - 1] == 's' ?
|
||||
" " : " a ",
|
||||
words[wordnumber]);
|
||||
return(firstnumber);
|
||||
case -1:
|
||||
puts("Eat what?");
|
||||
return (firstnumber);
|
||||
|
||||
case PAPAYAS:
|
||||
case PINEAPPLE:
|
||||
case KIWI:
|
||||
case COCONUTS: /* eatable things */
|
||||
case MANGO:
|
||||
default:
|
||||
printf("You can't eat%s%s!\n",
|
||||
wordtype[wordnumber] == OBJECT &&
|
||||
objsht[value]
|
||||
[strlen(objsht[value]) - 1] == 's' ?
|
||||
" " : " a ",
|
||||
words[wordnumber]);
|
||||
return (firstnumber);
|
||||
|
||||
printf("%s:\n",objsht[value]);
|
||||
if (testbit(inven,value) &&
|
||||
ourtime > ate - CYCLE &&
|
||||
testbit(inven,KNIFE)){
|
||||
clearbit(inven,value);
|
||||
carrying -= objwt[value];
|
||||
encumber -= objcumber[value];
|
||||
ate = max(ourtime,ate) + CYCLE/3;
|
||||
snooze += CYCLE/10;
|
||||
ourtime++;
|
||||
puts("Eaten. You can explore a little longer now.");
|
||||
}
|
||||
else if (ourtime < ate - CYCLE)
|
||||
case PAPAYAS:
|
||||
case PINEAPPLE:
|
||||
case KIWI:
|
||||
case COCONUTS: /* eatable things */
|
||||
case MANGO:
|
||||
|
||||
printf("%s:\n", objsht[value]);
|
||||
if (testbit(inven, value) &&
|
||||
ourtime > ate - CYCLE &&
|
||||
testbit(inven, KNIFE)) {
|
||||
clearbit(inven, value);
|
||||
carrying -= objwt[value];
|
||||
encumber -= objcumber[value];
|
||||
ate = max(ourtime, ate) + CYCLE / 3;
|
||||
snooze += CYCLE / 10;
|
||||
ourtime++;
|
||||
puts("Eaten. You can explore a little longer now.");
|
||||
} else
|
||||
if (ourtime < ate - CYCLE)
|
||||
puts("You're stuffed.");
|
||||
else if (!testbit(inven,KNIFE))
|
||||
puts("You need a knife.");
|
||||
else
|
||||
printf("You aren't holding the %s.\n", objsht[value]);
|
||||
if (wordnumber < wordcount - 1 && wordvalue[++wordnumber] == AND)
|
||||
wordnumber++;
|
||||
else
|
||||
return(firstnumber);
|
||||
} /* end switch */
|
||||
} /* end while */
|
||||
return(firstnumber);
|
||||
if (!testbit(inven, KNIFE))
|
||||
puts("You need a knife.");
|
||||
else
|
||||
printf("You aren't holding the %s.\n", objsht[value]);
|
||||
if (wordnumber < wordcount - 1 && wordvalue[++wordnumber] == AND)
|
||||
wordnumber++;
|
||||
else
|
||||
return (firstnumber);
|
||||
} /* end switch */
|
||||
} /* end while */
|
||||
return (firstnumber);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: com5.c,v 1.5 1997/10/10 11:39:30 lukem Exp $ */
|
||||
/* $NetBSD: com5.c,v 1.6 1997/10/11 02:07:06 lukem Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1993
|
||||
@ -38,9 +38,9 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)com5.c 8.2 (Berkeley) 4/28/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: com5.c,v 1.5 1997/10/10 11:39:30 lukem Exp $");
|
||||
__RCSID("$NetBSD: com5.c,v 1.6 1997/10/11 02:07:06 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif /* not lint */
|
||||
|
||||
#include "extern.h"
|
||||
|
||||
@ -49,75 +49,74 @@ kiss()
|
||||
{
|
||||
while (wordtype[++wordnumber] != NOUNS && wordnumber <= wordcount);
|
||||
if (wordtype[wordnumber] == NOUNS &&
|
||||
testbit(location[position].objects,wordvalue[wordnumber])){
|
||||
testbit(location[position].objects, wordvalue[wordnumber])) {
|
||||
pleasure++;
|
||||
printf("Kissed.\n");
|
||||
switch (wordvalue[wordnumber]){
|
||||
case NORMGOD:
|
||||
switch(godready++){
|
||||
case 0:
|
||||
puts("She squirms and avoids your advances.");
|
||||
break;
|
||||
case 1:
|
||||
puts("She is coming around; she didn't fight it as much.");
|
||||
break;
|
||||
case 2:
|
||||
puts("She's begining to like it.");
|
||||
break;
|
||||
default:
|
||||
puts("She's gone limp.");
|
||||
|
||||
}
|
||||
break;
|
||||
case NATIVE:
|
||||
puts("The lips are warm and her body robust. She pulls you down to the ground.");
|
||||
switch (wordvalue[wordnumber]) {
|
||||
case NORMGOD:
|
||||
switch (godready++) {
|
||||
case 0:
|
||||
puts("She squirms and avoids your advances.");
|
||||
break;
|
||||
case TIMER:
|
||||
puts("The old man blushes.");
|
||||
case 1:
|
||||
puts("She is coming around; she didn't fight it as much.");
|
||||
break;
|
||||
case MAN:
|
||||
puts("The dwarf punches you in the kneecap.");
|
||||
case 2:
|
||||
puts("She's begining to like it.");
|
||||
break;
|
||||
default:
|
||||
pleasure--;
|
||||
puts("She's gone limp.");
|
||||
|
||||
}
|
||||
break;
|
||||
case NATIVE:
|
||||
puts("The lips are warm and her body robust. She pulls you down to the ground.");
|
||||
break;
|
||||
case TIMER:
|
||||
puts("The old man blushes.");
|
||||
break;
|
||||
case MAN:
|
||||
puts("The dwarf punches you in the kneecap.");
|
||||
break;
|
||||
default:
|
||||
pleasure--;
|
||||
}
|
||||
}
|
||||
else puts("I'd prefer not to.");
|
||||
} else
|
||||
puts("I'd prefer not to.");
|
||||
}
|
||||
|
||||
void
|
||||
love()
|
||||
{
|
||||
int n;
|
||||
int n;
|
||||
|
||||
while (wordtype[++wordnumber] != NOUNS && wordnumber <= wordcount);
|
||||
if (wordtype[wordnumber] == NOUNS && testbit(location[position].objects,wordvalue[wordnumber])){
|
||||
if (wordtype[wordnumber] == NOUNS && testbit(location[position].objects, wordvalue[wordnumber])) {
|
||||
if (wordvalue[wordnumber] == NORMGOD && !loved)
|
||||
if (godready >= 2){
|
||||
if (godready >= 2) {
|
||||
puts("She cuddles up to you, and her mouth starts to work:\n'That was my sister's amulet. The lovely goddess, Purl, was she. The Empire\ncaptured her just after the Darkness came. My other sister, Vert, was killed\nby the Dark Lord himself. He took her amulet and warped its power.\nYour quest was foretold by my father before he died, but to get the Dark Lord's\namulet you must use cunning and skill. I will leave you my amulet.");
|
||||
puts("which you may use as you wish. As for me, I am the last goddess of the\nwaters. My father was the Island King, and the rule is rightfully mine.'\n\nShe pulls the throne out into a large bed.");
|
||||
power++;
|
||||
pleasure += 15;
|
||||
ego++;
|
||||
if (card(injuries, NUMOFINJURIES)){
|
||||
if (card(injuries, NUMOFINJURIES)) {
|
||||
puts("Her kisses revive you; your wounds are healed.\n");
|
||||
for (n=0; n < NUMOFINJURIES; n++)
|
||||
for (n = 0; n < NUMOFINJURIES; n++)
|
||||
injuries[n] = 0;
|
||||
WEIGHT = MAXWEIGHT;
|
||||
CUMBER = MAXCUMBER;
|
||||
}
|
||||
printf("Goddess:\n");
|
||||
if (!loved)
|
||||
setbit(location[position].objects,MEDALION);
|
||||
setbit(location[position].objects, MEDALION);
|
||||
loved = 1;
|
||||
ourtime += 10;
|
||||
zzz();
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
puts("You wish!");
|
||||
return;
|
||||
}
|
||||
if (wordvalue[wordnumber] == NATIVE){
|
||||
if (wordvalue[wordnumber] == NATIVE) {
|
||||
puts("The girl is easy prey. She peals off her sarong and indulges you.");
|
||||
power++;
|
||||
pleasure += 5;
|
||||
@ -126,95 +125,94 @@ love()
|
||||
zzz();
|
||||
}
|
||||
printf("Loved.\n");
|
||||
}
|
||||
else puts("It doesn't seem to work.");
|
||||
} else
|
||||
puts("It doesn't seem to work.");
|
||||
}
|
||||
|
||||
int
|
||||
zzz()
|
||||
{
|
||||
int oldtime;
|
||||
int n;
|
||||
int oldtime;
|
||||
int n;
|
||||
|
||||
oldtime = ourtime;
|
||||
if ((snooze - ourtime) < (0.75 * CYCLE)){
|
||||
if ((snooze - ourtime) < (0.75 * CYCLE)) {
|
||||
ourtime += 0.75 * CYCLE - (snooze - ourtime);
|
||||
printf("<zzz>");
|
||||
for (n = 0; n < ourtime - oldtime; n++)
|
||||
printf(".");
|
||||
printf("\n");
|
||||
snooze += 3 * (ourtime - oldtime);
|
||||
if (notes[LAUNCHED]){
|
||||
if (notes[LAUNCHED]) {
|
||||
fuel -= (ourtime - oldtime);
|
||||
if (location[position].down){
|
||||
if (location[position].down) {
|
||||
position = location[position].down;
|
||||
crash();
|
||||
}
|
||||
else
|
||||
} else
|
||||
notes[LAUNCHED] = 0;
|
||||
}
|
||||
if (OUTSIDE && rnd(100) < 50){
|
||||
if (OUTSIDE && rnd(100) < 50) {
|
||||
puts("You are awakened abruptly by the sound of someone nearby.");
|
||||
switch(rnd(4)){
|
||||
case 0:
|
||||
if (ucard(inven)){
|
||||
switch (rnd(4)) {
|
||||
case 0:
|
||||
if (ucard(inven)) {
|
||||
n = rnd(NUMOFOBJECTS);
|
||||
while (!testbit(inven, n))
|
||||
n = rnd(NUMOFOBJECTS);
|
||||
while(!testbit(inven,n))
|
||||
n = rnd(NUMOFOBJECTS);
|
||||
clearbit(inven,n);
|
||||
if (n != AMULET && n != MEDALION && n != TALISMAN)
|
||||
setbit(location[position].objects,n);
|
||||
carrying -= objwt[n];
|
||||
encumber -= objcumber[n];
|
||||
}
|
||||
puts("A fiendish little Elf is stealing your treasures!");
|
||||
fight(ELF,10);
|
||||
break;
|
||||
case 1:
|
||||
setbit(location[position].objects,DEADWOOD);
|
||||
break;
|
||||
case 2:
|
||||
setbit(location[position].objects,HALBERD);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
clearbit(inven, n);
|
||||
if (n != AMULET && n != MEDALION && n != TALISMAN)
|
||||
setbit(location[position].objects, n);
|
||||
carrying -= objwt[n];
|
||||
encumber -= objcumber[n];
|
||||
}
|
||||
puts("A fiendish little Elf is stealing your treasures!");
|
||||
fight(ELF, 10);
|
||||
break;
|
||||
case 1:
|
||||
setbit(location[position].objects, DEADWOOD);
|
||||
break;
|
||||
case 2:
|
||||
setbit(location[position].objects, HALBERD);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
return(0);
|
||||
return(1);
|
||||
} else
|
||||
return (0);
|
||||
return (1);
|
||||
}
|
||||
|
||||
void
|
||||
chime()
|
||||
{
|
||||
if ((ourtime / CYCLE + 1) % 2 && OUTSIDE)
|
||||
switch((ourtime % CYCLE)/(CYCLE / 7)){
|
||||
switch ((ourtime % CYCLE) / (CYCLE / 7)) {
|
||||
case 0:
|
||||
puts("It is just after sunrise.");
|
||||
break;
|
||||
case 1:
|
||||
puts("It is early morning.");
|
||||
break;
|
||||
case 2:
|
||||
puts("It is late morning.");
|
||||
break;
|
||||
case 3:
|
||||
puts("It is near noon.");
|
||||
break;
|
||||
case 4:
|
||||
puts("It is early afternoon.");
|
||||
break;
|
||||
case 5:
|
||||
puts("It is late afternoon.");
|
||||
break;
|
||||
case 6:
|
||||
puts("It is near sunset.");
|
||||
break;
|
||||
puts("It is just after sunrise.");
|
||||
break;
|
||||
case 1:
|
||||
puts("It is early morning.");
|
||||
break;
|
||||
case 2:
|
||||
puts("It is late morning.");
|
||||
break;
|
||||
case 3:
|
||||
puts("It is near noon.");
|
||||
break;
|
||||
case 4:
|
||||
puts("It is early afternoon.");
|
||||
break;
|
||||
case 5:
|
||||
puts("It is late afternoon.");
|
||||
break;
|
||||
case 6:
|
||||
puts("It is near sunset.");
|
||||
break;
|
||||
}
|
||||
else if (OUTSIDE)
|
||||
switch((ourtime % CYCLE)/(CYCLE / 7)){
|
||||
else
|
||||
if (OUTSIDE)
|
||||
switch ((ourtime % CYCLE) / (CYCLE / 7)) {
|
||||
case 0:
|
||||
puts("It is just after sunset.");
|
||||
break;
|
||||
@ -236,20 +234,20 @@ chime()
|
||||
case 6:
|
||||
puts("It is almost morning.");
|
||||
break;
|
||||
}
|
||||
else
|
||||
puts("I can't tell the time in here.");
|
||||
}
|
||||
else
|
||||
puts("I can't tell the time in here.");
|
||||
}
|
||||
|
||||
int
|
||||
give()
|
||||
{
|
||||
int obj = -1, result = -1, person = 0, firstnumber, last1, last2;
|
||||
int obj = -1, result = -1, person = 0, firstnumber, last1, last2;
|
||||
|
||||
last1 = last2 = 0;
|
||||
firstnumber = wordnumber;
|
||||
while (wordtype[++wordnumber] != OBJECT && wordvalue[wordnumber] != AMULET && wordvalue[wordnumber] != MEDALION && wordvalue[wordnumber] != TALISMAN && wordnumber <= wordcount);
|
||||
if (wordnumber <= wordcount){
|
||||
while (wordtype[++wordnumber] != OBJECT && wordvalue[wordnumber] != AMULET && wordvalue[wordnumber] != MEDALION && wordvalue[wordnumber] != TALISMAN && wordnumber <= wordcount);
|
||||
if (wordnumber <= wordcount) {
|
||||
obj = wordvalue[wordnumber];
|
||||
if (obj == EVERYTHING)
|
||||
wordtype[wordnumber] = -1;
|
||||
@ -257,82 +255,82 @@ give()
|
||||
}
|
||||
wordnumber = firstnumber;
|
||||
while ((wordtype[++wordnumber] != NOUNS || wordvalue[wordnumber] == obj) && wordnumber <= wordcount);
|
||||
if (wordtype[wordnumber] == NOUNS){
|
||||
if (wordtype[wordnumber] == NOUNS) {
|
||||
person = wordvalue[wordnumber];
|
||||
last2 = wordnumber;
|
||||
}
|
||||
wordnumber = last1 - 1;
|
||||
if (person && testbit(location[position].objects,person))
|
||||
if (person && testbit(location[position].objects, person))
|
||||
if (person == NORMGOD && godready < 2 && !(obj == RING || obj == BRACELET))
|
||||
puts("The goddess won't look at you.");
|
||||
else
|
||||
result = drop("Given");
|
||||
else {
|
||||
puts("I don't think that is possible.");
|
||||
return(0);
|
||||
return (0);
|
||||
}
|
||||
if (result != -1 && (testbit(location[position].objects,obj) || obj == AMULET || obj == MEDALION || obj == TALISMAN)){
|
||||
clearbit(location[position].objects,obj);
|
||||
if (result != -1 && (testbit(location[position].objects, obj) || obj == AMULET || obj == MEDALION || obj == TALISMAN)) {
|
||||
clearbit(location[position].objects, obj);
|
||||
ourtime++;
|
||||
ego++;
|
||||
switch(person){
|
||||
case NATIVE:
|
||||
puts("She accepts it shyly.");
|
||||
ego += 2;
|
||||
break;
|
||||
case NORMGOD:
|
||||
if (obj == RING || obj == BRACELET){
|
||||
puts("She takes the charm and puts it on. A little kiss on the cheek is");
|
||||
puts("your reward.");
|
||||
ego += 5;
|
||||
godready += 3;
|
||||
switch (person) {
|
||||
case NATIVE:
|
||||
puts("She accepts it shyly.");
|
||||
ego += 2;
|
||||
break;
|
||||
case NORMGOD:
|
||||
if (obj == RING || obj == BRACELET) {
|
||||
puts("She takes the charm and puts it on. A little kiss on the cheek is");
|
||||
puts("your reward.");
|
||||
ego += 5;
|
||||
godready += 3;
|
||||
}
|
||||
if (obj == AMULET || obj == MEDALION || obj == TALISMAN) {
|
||||
win++;
|
||||
ego += 5;
|
||||
power -= 5;
|
||||
if (win >= 3) {
|
||||
puts("The powers of the earth are now legitimate. You have destroyed the Darkness");
|
||||
puts("and restored the goddess to her thrown. The entire island celebrates with");
|
||||
puts("dancing and spring feasts. As a measure of her gratitude, the goddess weds you");
|
||||
puts("in the late summer and crowns you Prince Liverwort, Lord of Fungus.");
|
||||
puts("\nBut, as the year wears on and autumn comes along, you become restless and");
|
||||
puts("yearn for adventure. The goddess, too, realizes that the marriage can't last.");
|
||||
puts("She becomes bored and takes several more natives as husbands. One evening,");
|
||||
puts("after having been out drinking with the girls, she kicks the throne particulary");
|
||||
puts("hard and wakes you up. (If you want to win this game, you're going to have to\nshoot her!)");
|
||||
clearbit(location[position].objects, MEDALION);
|
||||
wintime = ourtime;
|
||||
}
|
||||
if (obj == AMULET || obj == MEDALION || obj == TALISMAN){
|
||||
win++;
|
||||
ego += 5;
|
||||
power -= 5;
|
||||
if (win >= 3){
|
||||
puts("The powers of the earth are now legitimate. You have destroyed the Darkness");
|
||||
puts("and restored the goddess to her thrown. The entire island celebrates with");
|
||||
puts("dancing and spring feasts. As a measure of her gratitude, the goddess weds you");
|
||||
puts("in the late summer and crowns you Prince Liverwort, Lord of Fungus.");
|
||||
puts("\nBut, as the year wears on and autumn comes along, you become restless and");
|
||||
puts("yearn for adventure. The goddess, too, realizes that the marriage can't last.");
|
||||
puts("She becomes bored and takes several more natives as husbands. One evening,");
|
||||
puts("after having been out drinking with the girls, she kicks the throne particulary");
|
||||
puts("hard and wakes you up. (If you want to win this game, you're going to have to\nshoot her!)");
|
||||
clearbit(location[position].objects,MEDALION);
|
||||
wintime = ourtime;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TIMER:
|
||||
if (obj == COINS){
|
||||
puts("He fingers the coins for a moment and then looks up agape. `Kind you are and");
|
||||
puts("I mean to repay you as best I can.' Grabbing a pencil and cocktail napkin...\n");
|
||||
printf( "+-----------------------------------------------------------------------------+\n");
|
||||
printf( "| xxxxxxxx\\ |\n");
|
||||
printf( "| xxxxx\\ CLIFFS |\n");
|
||||
printf( "| FOREST xxx\\ |\n");
|
||||
printf( "| \\\\ x\\ OCEAN |\n");
|
||||
printf( "| || x\\ |\n");
|
||||
printf( "| || ROAD x\\ |\n");
|
||||
printf( "| || x\\ |\n");
|
||||
printf( "| SECRET || ......... |\n");
|
||||
printf( "| - + - || ........ |\n");
|
||||
printf( "| ENTRANCE || ... BEACH |\n");
|
||||
printf( "| || ... E |\n");
|
||||
printf( "| || ... | |\n");
|
||||
printf( "| // ... N <-- + --- S |\n");
|
||||
printf( "| PALM GROVE // ... | |\n");
|
||||
printf( "| // ... W |\n");
|
||||
printf( "+-----------------------------------------------------------------------------+\n");
|
||||
puts("\n`This map shows a secret entrance to the catacombs.");
|
||||
puts("You will know when you arrive because I left an old pair of shoes there.'");
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case TIMER:
|
||||
if (obj == COINS) {
|
||||
puts("He fingers the coins for a moment and then looks up agape. `Kind you are and");
|
||||
puts("I mean to repay you as best I can.' Grabbing a pencil and cocktail napkin...\n");
|
||||
printf("+-----------------------------------------------------------------------------+\n");
|
||||
printf("| xxxxxxxx\\ |\n");
|
||||
printf("| xxxxx\\ CLIFFS |\n");
|
||||
printf("| FOREST xxx\\ |\n");
|
||||
printf("| \\\\ x\\ OCEAN |\n");
|
||||
printf("| || x\\ |\n");
|
||||
printf("| || ROAD x\\ |\n");
|
||||
printf("| || x\\ |\n");
|
||||
printf("| SECRET || ......... |\n");
|
||||
printf("| - + - || ........ |\n");
|
||||
printf("| ENTRANCE || ... BEACH |\n");
|
||||
printf("| || ... E |\n");
|
||||
printf("| || ... | |\n");
|
||||
printf("| // ... N <-- + --- S |\n");
|
||||
printf("| PALM GROVE // ... | |\n");
|
||||
printf("| // ... W |\n");
|
||||
printf("+-----------------------------------------------------------------------------+\n");
|
||||
puts("\n`This map shows a secret entrance to the catacombs.");
|
||||
puts("You will know when you arrive because I left an old pair of shoes there.'");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
wordnumber = max(last1,last2);
|
||||
return(firstnumber);
|
||||
wordnumber = max(last1, last2);
|
||||
return (firstnumber);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: com6.c,v 1.7 1997/10/10 11:39:32 lukem Exp $ */
|
||||
/* $NetBSD: com6.c,v 1.8 1997/10/11 02:07:08 lukem Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1993
|
||||
@ -38,9 +38,9 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)com6.c 8.2 (Berkeley) 4/28/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: com6.c,v 1.7 1997/10/10 11:39:32 lukem Exp $");
|
||||
__RCSID("$NetBSD: com6.c,v 1.8 1997/10/11 02:07:08 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif /* not lint */
|
||||
|
||||
#include "extern.h"
|
||||
#include "pathnames.h"
|
||||
@ -48,46 +48,43 @@ __RCSID("$NetBSD: com6.c,v 1.7 1997/10/10 11:39:32 lukem Exp $");
|
||||
int
|
||||
launch()
|
||||
{
|
||||
if (testbit(location[position].objects,VIPER) && !notes[CANTLAUNCH]){
|
||||
if (fuel > 4){
|
||||
clearbit(location[position].objects,VIPER);
|
||||
if (testbit(location[position].objects, VIPER) && !notes[CANTLAUNCH]) {
|
||||
if (fuel > 4) {
|
||||
clearbit(location[position].objects, VIPER);
|
||||
position = location[position].up;
|
||||
notes[LAUNCHED] = 1;
|
||||
ourtime++;
|
||||
fuel -= 4;
|
||||
puts("You climb into the viper and prepare for launch.");
|
||||
puts("With a touch of your thumb the turbo engines ignite, thrusting you back into\nyour seat.");
|
||||
return(1);
|
||||
}
|
||||
else
|
||||
return (1);
|
||||
} else
|
||||
puts("Not enough fuel to launch.");
|
||||
}
|
||||
else
|
||||
} else
|
||||
puts("Can't launch.");
|
||||
return(0);
|
||||
return (0);
|
||||
}
|
||||
|
||||
int
|
||||
land()
|
||||
{
|
||||
if (notes[LAUNCHED] && testbit(location[position].objects,LAND) &&
|
||||
location[position].down){
|
||||
if (notes[LAUNCHED] && testbit(location[position].objects, LAND) &&
|
||||
location[position].down) {
|
||||
notes[LAUNCHED] = 0;
|
||||
position = location[position].down;
|
||||
setbit(location[position].objects,VIPER);
|
||||
setbit(location[position].objects, VIPER);
|
||||
fuel -= 2;
|
||||
ourtime++;
|
||||
puts("You are down.");
|
||||
return(1);
|
||||
}
|
||||
else
|
||||
return (1);
|
||||
} else
|
||||
puts("You can't land here.");
|
||||
return(0);
|
||||
return (0);
|
||||
}
|
||||
|
||||
void
|
||||
die() /* endgame */
|
||||
{
|
||||
die()
|
||||
{ /* endgame */
|
||||
printf("bye.\nYour rating was %s.\n", rate());
|
||||
post(' ');
|
||||
exit(0);
|
||||
@ -95,7 +92,7 @@ die() /* endgame */
|
||||
|
||||
void
|
||||
diesig(dummy)
|
||||
int dummy;
|
||||
int dummy;
|
||||
{
|
||||
die();
|
||||
}
|
||||
@ -110,122 +107,134 @@ live()
|
||||
|
||||
void
|
||||
post(ch)
|
||||
char ch;
|
||||
char ch;
|
||||
{
|
||||
FILE *fp;
|
||||
FILE *fp;
|
||||
struct timeval tv;
|
||||
char *date;
|
||||
char *date;
|
||||
sigset_t sigset, osigset;
|
||||
|
||||
sigemptyset(&sigset);
|
||||
sigaddset(&sigset, SIGINT);
|
||||
sigprocmask(SIG_BLOCK, &sigset, &osigset);
|
||||
gettimeofday(&tv, (struct timezone *)0); /* can't call time */
|
||||
gettimeofday(&tv, (struct timezone *) 0); /* can't call time */
|
||||
date = ctime(&tv.tv_sec);
|
||||
date[24] = '\0';
|
||||
if ((fp = fopen(_PATH_SCORE,"a")) != NULL) {
|
||||
if ((fp = fopen(_PATH_SCORE, "a")) != NULL) {
|
||||
fprintf(fp, "%s %8s %c%20s", date, uname, ch, rate());
|
||||
if (wiz)
|
||||
fprintf(fp, " wizard\n");
|
||||
else if (tempwiz)
|
||||
fprintf(fp, " WIZARD!\n");
|
||||
else
|
||||
fprintf(fp, "\n");
|
||||
if (tempwiz)
|
||||
fprintf(fp, " WIZARD!\n");
|
||||
else
|
||||
fprintf(fp, "\n");
|
||||
} else
|
||||
perror(_PATH_SCORE);
|
||||
sigprocmask(SIG_SETMASK, &osigset, (sigset_t *)0);
|
||||
warn("fopen %s", _PATH_SCORE);
|
||||
sigprocmask(SIG_SETMASK, &osigset, (sigset_t *) 0);
|
||||
}
|
||||
|
||||
char *
|
||||
char *
|
||||
rate()
|
||||
{
|
||||
int score;
|
||||
int score;
|
||||
|
||||
score = max(max(pleasure,power),ego);
|
||||
if (score == pleasure){
|
||||
score = max(max(pleasure, power), ego);
|
||||
if (score == pleasure) {
|
||||
if (score < 5)
|
||||
return("novice");
|
||||
else if (score < 20)
|
||||
return("junior voyeur");
|
||||
else if (score < 35)
|
||||
return("Don Juan");
|
||||
else return("Marquis De Sade");
|
||||
}
|
||||
else if (score == power){
|
||||
if (score < 5)
|
||||
return("serf");
|
||||
else if (score < 8)
|
||||
return("Samurai");
|
||||
else if (score < 13)
|
||||
return("Klingon");
|
||||
else if (score < 22)
|
||||
return("Darth Vader");
|
||||
else return("Sauron the Great");
|
||||
}
|
||||
else{
|
||||
if (score < 5)
|
||||
return("Polyanna");
|
||||
else if (score < 10)
|
||||
return("philanthropist");
|
||||
else if (score < 20)
|
||||
return("Tattoo");
|
||||
else return("Mr. Roarke");
|
||||
}
|
||||
return ("novice");
|
||||
else
|
||||
if (score < 20)
|
||||
return ("junior voyeur");
|
||||
else
|
||||
if (score < 35)
|
||||
return ("Don Juan");
|
||||
else
|
||||
return ("Marquis De Sade");
|
||||
} else
|
||||
if (score == power) {
|
||||
if (score < 5)
|
||||
return ("serf");
|
||||
else
|
||||
if (score < 8)
|
||||
return ("Samurai");
|
||||
else
|
||||
if (score < 13)
|
||||
return ("Klingon");
|
||||
else
|
||||
if (score < 22)
|
||||
return ("Darth Vader");
|
||||
else
|
||||
return ("Sauron the Great");
|
||||
} else {
|
||||
if (score < 5)
|
||||
return ("Polyanna");
|
||||
else
|
||||
if (score < 10)
|
||||
return ("philanthropist");
|
||||
else
|
||||
if (score < 20)
|
||||
return ("Tattoo");
|
||||
else
|
||||
return ("Mr. Roarke");
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
drive()
|
||||
{
|
||||
if (testbit(location[position].objects,CAR)){
|
||||
if (testbit(location[position].objects, CAR)) {
|
||||
puts("You hop in the car and turn the key. There is a perceptible grating noise,");
|
||||
puts("and an explosion knocks you unconscious...");
|
||||
clearbit(location[position].objects,CAR);
|
||||
setbit(location[position].objects,CRASH);
|
||||
clearbit(location[position].objects, CAR);
|
||||
setbit(location[position].objects, CRASH);
|
||||
injuries[5] = injuries[6] = injuries[7] = injuries[8] = 1;
|
||||
ourtime += 15;
|
||||
zzz();
|
||||
return(0);
|
||||
}
|
||||
else
|
||||
return (0);
|
||||
} else
|
||||
puts("There is nothing to drive here.");
|
||||
return(-1);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
int
|
||||
ride()
|
||||
{
|
||||
if (testbit(location[position].objects,HORSE)){
|
||||
if (testbit(location[position].objects, HORSE)) {
|
||||
puts("You climb onto the stallion and kick it in the guts. The stupid steed launches");
|
||||
puts("forward through bush and fern. You are thrown and the horse gallups off.");
|
||||
clearbit(location[position].objects,HORSE);
|
||||
while (!(position = rnd(NUMOFROOMS+1)) || !OUTSIDE || !beenthere[position] || location[position].flyhere);
|
||||
setbit(location[position].objects,HORSE);
|
||||
clearbit(location[position].objects, HORSE);
|
||||
while (!(position = rnd(NUMOFROOMS + 1)) || !OUTSIDE || !beenthere[position] || location[position].flyhere);
|
||||
setbit(location[position].objects, HORSE);
|
||||
if (location[position].north)
|
||||
position = location[position].north;
|
||||
else if (location[position].south)
|
||||
position = location[position].south;
|
||||
else if (location[position].east)
|
||||
position = location[position].east;
|
||||
else
|
||||
position = location[position].west;
|
||||
return(0);
|
||||
}
|
||||
else puts("There is no horse here.");
|
||||
return(-1);
|
||||
if (location[position].south)
|
||||
position = location[position].south;
|
||||
else
|
||||
if (location[position].east)
|
||||
position = location[position].east;
|
||||
else
|
||||
position = location[position].west;
|
||||
return (0);
|
||||
} else
|
||||
puts("There is no horse here.");
|
||||
return (-1);
|
||||
}
|
||||
|
||||
void
|
||||
light() /* synonyms = {strike, smoke} */
|
||||
{ /* for matches, cigars */
|
||||
if (testbit(inven,MATCHES) && matchcount){
|
||||
light()
|
||||
{ /* synonyms = {strike, smoke} *//* for
|
||||
* matches, cigars */
|
||||
if (testbit(inven, MATCHES) && matchcount) {
|
||||
puts("Your match splutters to life.");
|
||||
ourtime++;
|
||||
matchlight = 1;
|
||||
matchcount--;
|
||||
if (position == 217){
|
||||
if (position == 217) {
|
||||
puts("The whole bungalow explodes with an intense blast.");
|
||||
die();
|
||||
}
|
||||
}
|
||||
else puts("You're out of matches.");
|
||||
} else
|
||||
puts("You're out of matches.");
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: com7.c,v 1.5 1997/10/10 11:39:35 lukem Exp $ */
|
||||
/* $NetBSD: com7.c,v 1.6 1997/10/11 02:07:10 lukem Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1993
|
||||
@ -38,29 +38,29 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)com7.c 8.2 (Berkeley) 4/28/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: com7.c,v 1.5 1997/10/10 11:39:35 lukem Exp $");
|
||||
__RCSID("$NetBSD: com7.c,v 1.6 1997/10/11 02:07:10 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif /* not lint */
|
||||
|
||||
#include "extern.h"
|
||||
|
||||
int
|
||||
fight(enemy, strength)
|
||||
int enemy,strength;
|
||||
int enemy, strength;
|
||||
{
|
||||
int lifeline = 0;
|
||||
int hurt;
|
||||
char auxbuf[LINELENGTH];
|
||||
char *next;
|
||||
int i;
|
||||
int exhaustion;
|
||||
int lifeline = 0;
|
||||
int hurt;
|
||||
char auxbuf[LINELENGTH];
|
||||
char *next;
|
||||
int i;
|
||||
int exhaustion;
|
||||
|
||||
exhaustion = 0;
|
||||
fighton:
|
||||
ourtime++;
|
||||
snooze -= 5;
|
||||
if (snooze > ourtime)
|
||||
exhaustion = CYCLE/(snooze - ourtime);
|
||||
exhaustion = CYCLE / (snooze - ourtime);
|
||||
else {
|
||||
puts("You collapse exhausted, and he pulverizes your skull.");
|
||||
die();
|
||||
@ -68,50 +68,53 @@ fighton:
|
||||
if (snooze - ourtime < 20)
|
||||
puts("You look tired! I hope you're able to fight.");
|
||||
next = getcom(auxbuf, LINELENGTH, "<fight!>-: ", 0);
|
||||
for (i=0; next && i < 10; i++)
|
||||
for (i = 0; next && i < 10; i++)
|
||||
next = getword(next, words[i], -1);
|
||||
parse();
|
||||
switch(wordvalue[wordnumber]){
|
||||
switch (wordvalue[wordnumber]) {
|
||||
|
||||
case KILL:
|
||||
case SMITE:
|
||||
if (testbit(inven,TWO_HANDED))
|
||||
hurt = rnd(70) - 2 * card(injuries,NUMOFINJURIES) - ucard(wear) - exhaustion;
|
||||
else if (testbit(inven,SWORD) || testbit(inven, BROAD))
|
||||
hurt = rnd(50)%(WEIGHT-carrying)-card(injuries,NUMOFINJURIES)-encumber - exhaustion;
|
||||
else if (testbit(inven,KNIFE) || testbit(inven,MALLET) || testbit(inven,CHAIN) || testbit(inven,MACE) || testbit(inven,HALBERD))
|
||||
hurt = rnd(15) - card(injuries,NUMOFINJURIES) - exhaustion;
|
||||
else
|
||||
hurt = rnd(7) - encumber;
|
||||
if (hurt < 5)
|
||||
switch(rnd(3)){
|
||||
case KILL:
|
||||
case SMITE:
|
||||
if (testbit(inven, TWO_HANDED))
|
||||
hurt = rnd(70) - 2 * card(injuries, NUMOFINJURIES) - ucard(wear) - exhaustion;
|
||||
else
|
||||
if (testbit(inven, SWORD) || testbit(inven, BROAD))
|
||||
hurt = rnd(50) % (WEIGHT - carrying) - card(injuries, NUMOFINJURIES) - encumber - exhaustion;
|
||||
else
|
||||
if (testbit(inven, KNIFE) || testbit(inven, MALLET) || testbit(inven, CHAIN) || testbit(inven, MACE) || testbit(inven, HALBERD))
|
||||
hurt = rnd(15) - card(injuries, NUMOFINJURIES) - exhaustion;
|
||||
else
|
||||
hurt = rnd(7) - encumber;
|
||||
if (hurt < 5)
|
||||
switch (rnd(3)) {
|
||||
|
||||
case 0:
|
||||
puts("You swung wide and missed.");
|
||||
break;
|
||||
case 1:
|
||||
puts("He checked your blow. CLASH! CLANG!");
|
||||
break;
|
||||
case 2:
|
||||
puts("His filthy tunic hangs by one less thread.");
|
||||
break;
|
||||
}
|
||||
else if (hurt < 10){
|
||||
switch(rnd(3)){
|
||||
case 0:
|
||||
puts("He's bleeding.");
|
||||
break;
|
||||
case 1:
|
||||
puts("A trickle of blood runs down his face.");
|
||||
break;
|
||||
case 2:
|
||||
puts("A huge purple bruise is forming on the side of his face.");
|
||||
break;
|
||||
case 0:
|
||||
puts("You swung wide and missed.");
|
||||
break;
|
||||
case 1:
|
||||
puts("He checked your blow. CLASH! CLANG!");
|
||||
break;
|
||||
case 2:
|
||||
puts("His filthy tunic hangs by one less thread.");
|
||||
break;
|
||||
}
|
||||
else
|
||||
if (hurt < 10) {
|
||||
switch (rnd(3)) {
|
||||
case 0:
|
||||
puts("He's bleeding.");
|
||||
break;
|
||||
case 1:
|
||||
puts("A trickle of blood runs down his face.");
|
||||
break;
|
||||
case 2:
|
||||
puts("A huge purple bruise is forming on the side of his face.");
|
||||
break;
|
||||
}
|
||||
lifeline++;
|
||||
}
|
||||
else if (hurt < 20){
|
||||
switch(rnd(3)){
|
||||
} else
|
||||
if (hurt < 20) {
|
||||
switch (rnd(3)) {
|
||||
case 0:
|
||||
puts("He staggers back quavering.");
|
||||
break;
|
||||
@ -121,155 +124,151 @@ fighton:
|
||||
case 2:
|
||||
puts("His shirt falls open with a swath across the chest.");
|
||||
break;
|
||||
}
|
||||
lifeline += 5;
|
||||
}
|
||||
else if (hurt < 30){
|
||||
switch(rnd(3)){
|
||||
case 0:
|
||||
printf("A bloody gash opens up on his %s side.\n",(rnd(2) ? "left" : "right"));
|
||||
break;
|
||||
case 1:
|
||||
puts("The steel bites home and scrapes along his ribs.");
|
||||
break;
|
||||
case 2:
|
||||
puts("You pierce him, and his breath hisses through clenched teeth.");
|
||||
break;
|
||||
}
|
||||
lifeline += 10;
|
||||
}
|
||||
else if (hurt < 40){
|
||||
switch(rnd(3)){
|
||||
case 0:
|
||||
puts("You smite him to the ground.");
|
||||
if (strength - lifeline > 20)
|
||||
puts("But in a flurry of steel he regains his feet!");
|
||||
break;
|
||||
case 1:
|
||||
puts("The force of your blow sends him to his knees.");
|
||||
puts("His arm swings lifeless at his side.");
|
||||
break;
|
||||
case 2:
|
||||
puts("Clutching his blood drenched shirt, he collapses stunned.");
|
||||
break;
|
||||
}
|
||||
lifeline += 20;
|
||||
}
|
||||
else {
|
||||
switch(rnd(3)){
|
||||
case 0:
|
||||
puts("His ribs crack under your powerful swing, flooding his lungs with blood.");
|
||||
break;
|
||||
case 1:
|
||||
puts("You shatter his upheld arm in a spray of blood. The blade continues deep");
|
||||
puts("into his back, severing the spinal cord.");
|
||||
lifeline += 25;
|
||||
break;
|
||||
case 2:
|
||||
puts("With a mighty lunge the steel slides in, and gasping, he falls to the ground.");
|
||||
lifeline += 25;
|
||||
break;
|
||||
}
|
||||
lifeline += 30;
|
||||
}
|
||||
break;
|
||||
}
|
||||
lifeline += 5;
|
||||
} else
|
||||
if (hurt < 30) {
|
||||
switch (rnd(3)) {
|
||||
case 0:
|
||||
printf("A bloody gash opens up on his %s side.\n", (rnd(2) ? "left" : "right"));
|
||||
break;
|
||||
case 1:
|
||||
puts("The steel bites home and scrapes along his ribs.");
|
||||
break;
|
||||
case 2:
|
||||
puts("You pierce him, and his breath hisses through clenched teeth.");
|
||||
break;
|
||||
}
|
||||
lifeline += 10;
|
||||
} else
|
||||
if (hurt < 40) {
|
||||
switch (rnd(3)) {
|
||||
case 0:
|
||||
puts("You smite him to the ground.");
|
||||
if (strength - lifeline > 20)
|
||||
puts("But in a flurry of steel he regains his feet!");
|
||||
break;
|
||||
case 1:
|
||||
puts("The force of your blow sends him to his knees.");
|
||||
puts("His arm swings lifeless at his side.");
|
||||
break;
|
||||
case 2:
|
||||
puts("Clutching his blood drenched shirt, he collapses stunned.");
|
||||
break;
|
||||
}
|
||||
lifeline += 20;
|
||||
} else {
|
||||
switch (rnd(3)) {
|
||||
case 0:
|
||||
puts("His ribs crack under your powerful swing, flooding his lungs with blood.");
|
||||
break;
|
||||
case 1:
|
||||
puts("You shatter his upheld arm in a spray of blood. The blade continues deep");
|
||||
puts("into his back, severing the spinal cord.");
|
||||
lifeline += 25;
|
||||
break;
|
||||
case 2:
|
||||
puts("With a mighty lunge the steel slides in, and gasping, he falls to the ground.");
|
||||
lifeline += 25;
|
||||
break;
|
||||
}
|
||||
lifeline += 30;
|
||||
}
|
||||
break;
|
||||
|
||||
case BACK:
|
||||
if (enemy == DARK && lifeline > strength * 0.33){
|
||||
puts("He throws you back against the rock and pummels your face.");
|
||||
if (testbit(inven,AMULET) || testbit(wear,AMULET)){
|
||||
printf("Lifting the amulet from you, ");
|
||||
if (testbit(inven,MEDALION) || testbit(wear,MEDALION)){
|
||||
puts("his power grows and the walls of\nthe earth tremble.");
|
||||
puts("When he touches the medallion, your chest explodes and the foundations of the\nearth collapse.");
|
||||
puts("The planet is consumed by darkness.");
|
||||
die();
|
||||
}
|
||||
if (testbit(inven,AMULET)){
|
||||
clearbit(inven,AMULET);
|
||||
carrying -= objwt[AMULET];
|
||||
encumber -= objcumber[AMULET];
|
||||
}
|
||||
else
|
||||
clearbit(wear,AMULET);
|
||||
puts("he flees down the dark caverns.");
|
||||
clearbit(location[position].objects,DARK);
|
||||
injuries[SKULL] = 1;
|
||||
followfight = ourtime;
|
||||
return (0);
|
||||
}
|
||||
else{
|
||||
puts("I'm afraid you have been killed.");
|
||||
case BACK:
|
||||
if (enemy == DARK && lifeline > strength * 0.33) {
|
||||
puts("He throws you back against the rock and pummels your face.");
|
||||
if (testbit(inven, AMULET) || testbit(wear, AMULET)) {
|
||||
printf("Lifting the amulet from you, ");
|
||||
if (testbit(inven, MEDALION) || testbit(wear, MEDALION)) {
|
||||
puts("his power grows and the walls of\nthe earth tremble.");
|
||||
puts("When he touches the medallion, your chest explodes and the foundations of the\nearth collapse.");
|
||||
puts("The planet is consumed by darkness.");
|
||||
die();
|
||||
}
|
||||
if (testbit(inven, AMULET)) {
|
||||
clearbit(inven, AMULET);
|
||||
carrying -= objwt[AMULET];
|
||||
encumber -= objcumber[AMULET];
|
||||
} else
|
||||
clearbit(wear, AMULET);
|
||||
puts("he flees down the dark caverns.");
|
||||
clearbit(location[position].objects, DARK);
|
||||
injuries[SKULL] = 1;
|
||||
followfight = ourtime;
|
||||
return (0);
|
||||
} else {
|
||||
puts("I'm afraid you have been killed.");
|
||||
die();
|
||||
}
|
||||
else{
|
||||
puts("You escape stunned and disoriented from the fight.");
|
||||
puts("A victorious bellow echoes from the battlescene.");
|
||||
if (back && position != back)
|
||||
move(back,BACK);
|
||||
else if (ahead &&position != ahead)
|
||||
move(ahead,AHEAD);
|
||||
else if (left && position != left)
|
||||
move(left,LEFT);
|
||||
else if (right && position != right)
|
||||
move(right,RIGHT);
|
||||
else
|
||||
move(location[position].down,AHEAD);
|
||||
return(0);
|
||||
}
|
||||
|
||||
case SHOOT:
|
||||
if (testbit(inven,LASER)){
|
||||
if (strength - lifeline <= 50){
|
||||
printf("The %s took a direct hit!\n",objsht[enemy]);
|
||||
lifeline += 50;
|
||||
}
|
||||
else {
|
||||
puts("With his bare hand he deflects the laser blast and whips the pistol from you!");
|
||||
clearbit(inven,LASER);
|
||||
setbit(location[position].objects,LASER);
|
||||
carrying -= objwt[LASER];
|
||||
encumber -= objcumber[LASER];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
puts("You escape stunned and disoriented from the fight.");
|
||||
puts("A victorious bellow echoes from the battlescene.");
|
||||
if (back && position != back)
|
||||
move(back, BACK);
|
||||
else
|
||||
puts("Unfortunately, you don't have a blaster handy.");
|
||||
break;
|
||||
if (ahead && position != ahead)
|
||||
move(ahead, AHEAD);
|
||||
else
|
||||
if (left && position != left)
|
||||
move(left, LEFT);
|
||||
else
|
||||
if (right && position != right)
|
||||
move(right, RIGHT);
|
||||
else
|
||||
move(location[position].down, AHEAD);
|
||||
return (0);
|
||||
}
|
||||
|
||||
case DROP:
|
||||
case DRAW:
|
||||
cypher();
|
||||
ourtime--;
|
||||
break;
|
||||
|
||||
default:
|
||||
puts("You don't have a chance, he is too quick.");
|
||||
break;
|
||||
case SHOOT:
|
||||
if (testbit(inven, LASER)) {
|
||||
if (strength - lifeline <= 50) {
|
||||
printf("The %s took a direct hit!\n", objsht[enemy]);
|
||||
lifeline += 50;
|
||||
} else {
|
||||
puts("With his bare hand he deflects the laser blast and whips the pistol from you!");
|
||||
clearbit(inven, LASER);
|
||||
setbit(location[position].objects, LASER);
|
||||
carrying -= objwt[LASER];
|
||||
encumber -= objcumber[LASER];
|
||||
}
|
||||
} else
|
||||
puts("Unfortunately, you don't have a blaster handy.");
|
||||
break;
|
||||
|
||||
case DROP:
|
||||
case DRAW:
|
||||
cypher();
|
||||
ourtime--;
|
||||
break;
|
||||
|
||||
default:
|
||||
puts("You don't have a chance, he is too quick.");
|
||||
break;
|
||||
|
||||
}
|
||||
if (lifeline >= strength){
|
||||
if (lifeline >= strength) {
|
||||
printf("You have killed the %s.\n", objsht[enemy]);
|
||||
if (enemy == ELF || enemy == DARK)
|
||||
puts("A watery black smoke consumes his body and then vanishes with a peal of thunder!");
|
||||
clearbit(location[position].objects,enemy);
|
||||
clearbit(location[position].objects, enemy);
|
||||
power += 2;
|
||||
notes[JINXED]++;
|
||||
return(0);
|
||||
return (0);
|
||||
}
|
||||
puts("He attacks...");
|
||||
/* some embellisments */
|
||||
hurt = rnd(NUMOFINJURIES) - (testbit(inven,SHIELD) != 0) - (testbit(wear,MAIL) != 0) - (testbit(wear,HELM) != 0);
|
||||
hurt += (testbit(wear,AMULET) != 0) + (testbit(wear,MEDALION) != 0) + (testbit(wear,TALISMAN) != 0);
|
||||
hurt = rnd(NUMOFINJURIES) - (testbit(inven, SHIELD) != 0) - (testbit(wear, MAIL) != 0) - (testbit(wear, HELM) != 0);
|
||||
hurt += (testbit(wear, AMULET) != 0) + (testbit(wear, MEDALION) != 0) + (testbit(wear, TALISMAN) != 0);
|
||||
hurt = hurt < 0 ? 0 : hurt;
|
||||
hurt = hurt >= NUMOFINJURIES ? NUMOFINJURIES -1 : hurt;
|
||||
if (!injuries[hurt]){
|
||||
hurt = hurt >= NUMOFINJURIES ? NUMOFINJURIES - 1 : hurt;
|
||||
if (!injuries[hurt]) {
|
||||
injuries[hurt] = 1;
|
||||
printf("I'm afraid you have suffered %s.\n", ouch[hurt]);
|
||||
}
|
||||
else
|
||||
} else
|
||||
puts("You emerge unscathed.");
|
||||
if (injuries[SKULL] && injuries[INCISE] && injuries[NECK]){
|
||||
if (injuries[SKULL] && injuries[INCISE] && injuries[NECK]) {
|
||||
puts("I'm afraid you have suffered fatal injuries.");
|
||||
die();
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: cypher.c,v 1.5 1997/10/10 11:39:38 lukem Exp $ */
|
||||
/* $NetBSD: cypher.c,v 1.6 1997/10/11 02:07:11 lukem Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1993
|
||||
@ -38,403 +38,392 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)cypher.c 8.2 (Berkeley) 4/28/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: cypher.c,v 1.5 1997/10/10 11:39:38 lukem Exp $");
|
||||
__RCSID("$NetBSD: cypher.c,v 1.6 1997/10/11 02:07:11 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif /* not lint */
|
||||
|
||||
#include "extern.h"
|
||||
|
||||
int
|
||||
cypher()
|
||||
{
|
||||
int n;
|
||||
int junk;
|
||||
int lflag = -1;
|
||||
char buffer[10];
|
||||
int n;
|
||||
int junk;
|
||||
int lflag = -1;
|
||||
char buffer[10];
|
||||
|
||||
while (wordtype[wordnumber] == ADJS)
|
||||
wordnumber++;
|
||||
while (wordnumber <= wordcount) {
|
||||
switch(wordvalue[wordnumber]) {
|
||||
switch (wordvalue[wordnumber]) {
|
||||
|
||||
case UP:
|
||||
if (location[position].access || wiz || tempwiz) {
|
||||
if (!location[position].access)
|
||||
puts("Zap! A gust of wind lifts you up.");
|
||||
if (!move(location[position].up, AHEAD))
|
||||
return(-1);
|
||||
} else {
|
||||
puts("There is no way up");
|
||||
return(-1);
|
||||
}
|
||||
lflag = 0;
|
||||
break;
|
||||
case UP:
|
||||
if (location[position].access || wiz || tempwiz) {
|
||||
if (!location[position].access)
|
||||
puts("Zap! A gust of wind lifts you up.");
|
||||
if (!move(location[position].up, AHEAD))
|
||||
return (-1);
|
||||
} else {
|
||||
puts("There is no way up");
|
||||
return (-1);
|
||||
}
|
||||
lflag = 0;
|
||||
break;
|
||||
|
||||
case DOWN:
|
||||
if (!move(location[position].down, AHEAD))
|
||||
return(-1);
|
||||
lflag = 0;
|
||||
break;
|
||||
case DOWN:
|
||||
if (!move(location[position].down, AHEAD))
|
||||
return (-1);
|
||||
lflag = 0;
|
||||
break;
|
||||
|
||||
case LEFT:
|
||||
if (!move(left, LEFT))
|
||||
return(-1);
|
||||
lflag = 0;
|
||||
break;
|
||||
case LEFT:
|
||||
if (!move(left, LEFT))
|
||||
return (-1);
|
||||
lflag = 0;
|
||||
break;
|
||||
|
||||
case RIGHT:
|
||||
if (!move(right, RIGHT))
|
||||
return(-1);
|
||||
lflag = 0;
|
||||
break;
|
||||
|
||||
case AHEAD:
|
||||
if (!move(ahead, AHEAD))
|
||||
return(-1);
|
||||
lflag = 0;
|
||||
break;
|
||||
|
||||
case BACK:
|
||||
if (!move(back, BACK))
|
||||
return(-1);
|
||||
lflag = 0;
|
||||
break;
|
||||
|
||||
case SHOOT:
|
||||
if (wordnumber < wordcount && wordvalue[wordnumber+1] == EVERYTHING){
|
||||
for (n=0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(location[position].objects,n) && *objsht[n]){
|
||||
wordvalue[wordnumber+1] = n;
|
||||
wordnumber = shoot();
|
||||
}
|
||||
wordnumber++;
|
||||
wordnumber++;
|
||||
}
|
||||
else
|
||||
shoot();
|
||||
break;
|
||||
case RIGHT:
|
||||
if (!move(right, RIGHT))
|
||||
return (-1);
|
||||
lflag = 0;
|
||||
break;
|
||||
|
||||
case TAKE:
|
||||
if (wordnumber < wordcount && wordvalue[wordnumber+1] == EVERYTHING){
|
||||
for (n=0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(location[position].objects,n) && *objsht[n]){
|
||||
wordvalue[wordnumber+1] = n;
|
||||
wordnumber = take(location[position].objects);
|
||||
}
|
||||
wordnumber++;
|
||||
wordnumber++;
|
||||
}
|
||||
else
|
||||
take(location[position].objects);
|
||||
break;
|
||||
case AHEAD:
|
||||
if (!move(ahead, AHEAD))
|
||||
return (-1);
|
||||
lflag = 0;
|
||||
break;
|
||||
|
||||
case DROP:
|
||||
case BACK:
|
||||
if (!move(back, BACK))
|
||||
return (-1);
|
||||
lflag = 0;
|
||||
break;
|
||||
|
||||
if (wordnumber < wordcount && wordvalue[wordnumber+1] == EVERYTHING){
|
||||
for (n=0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(inven,n)){
|
||||
wordvalue[wordnumber+1] = n;
|
||||
wordnumber = drop("Dropped");
|
||||
}
|
||||
wordnumber++;
|
||||
wordnumber++;
|
||||
}
|
||||
else
|
||||
drop("Dropped");
|
||||
break;
|
||||
|
||||
|
||||
case KICK:
|
||||
case THROW:
|
||||
if (wordnumber < wordcount && wordvalue[wordnumber+1] == EVERYTHING){
|
||||
for (n=0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(inven,n) ||
|
||||
(testbit(location[position].objects, n) && *objsht[n])){
|
||||
wordvalue[wordnumber+1] = n;
|
||||
wordnumber = throw(wordvalue[wordnumber] == KICK ? "Kicked" : "Thrown");
|
||||
}
|
||||
wordnumber += 2;
|
||||
} else
|
||||
throw(wordvalue[wordnumber] == KICK ? "Kicked" : "Thrown");
|
||||
break;
|
||||
|
||||
case TAKEOFF:
|
||||
if (wordnumber < wordcount && wordvalue[wordnumber+1] == EVERYTHING){
|
||||
for (n=0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(wear,n)){
|
||||
wordvalue[wordnumber+1] = n;
|
||||
wordnumber = takeoff();
|
||||
}
|
||||
wordnumber += 2;
|
||||
}
|
||||
else
|
||||
takeoff();
|
||||
break;
|
||||
|
||||
|
||||
case DRAW:
|
||||
|
||||
if (wordnumber < wordcount && wordvalue[wordnumber+1] == EVERYTHING){
|
||||
for (n=0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(wear,n)){
|
||||
wordvalue[wordnumber+1] = n;
|
||||
wordnumber = draw();
|
||||
}
|
||||
wordnumber += 2;
|
||||
}
|
||||
else
|
||||
draw();
|
||||
break;
|
||||
|
||||
|
||||
case PUTON:
|
||||
|
||||
if (wordnumber < wordcount && wordvalue[wordnumber+1] == EVERYTHING){
|
||||
for (n=0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(location[position].objects,n) && *objsht[n]){
|
||||
wordvalue[wordnumber+1] = n;
|
||||
wordnumber = puton();
|
||||
}
|
||||
wordnumber += 2;
|
||||
}
|
||||
else
|
||||
puton();
|
||||
break;
|
||||
|
||||
case WEARIT:
|
||||
|
||||
if (wordnumber < wordcount && wordvalue[wordnumber+1] == EVERYTHING){
|
||||
for (n=0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(inven,n)){
|
||||
wordvalue[wordnumber+1] = n;
|
||||
wordnumber = wearit();
|
||||
}
|
||||
wordnumber += 2;
|
||||
}
|
||||
else
|
||||
wearit();
|
||||
break;
|
||||
|
||||
|
||||
case EAT:
|
||||
|
||||
if (wordnumber < wordcount && wordvalue[wordnumber+1] == EVERYTHING){
|
||||
for (n=0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(inven,n)){
|
||||
wordvalue[wordnumber+1] = n;
|
||||
wordnumber = eat();
|
||||
}
|
||||
wordnumber += 2;
|
||||
}
|
||||
else
|
||||
eat();
|
||||
break;
|
||||
|
||||
|
||||
case PUT:
|
||||
put();
|
||||
break;
|
||||
|
||||
|
||||
case INVEN:
|
||||
if (ucard(inven)){
|
||||
puts("You are holding:\n");
|
||||
for (n=0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(inven,n))
|
||||
printf("\t%s\n", objsht[n]);
|
||||
printf("\n= %d kilogram%s (%d%%)\n", carrying, (carrying == 1 ? "." : "s."),(WEIGHT ? carrying*100/WEIGHT : -1));
|
||||
printf("Your arms are %d%% full.\n",encumber*100/CUMBER);
|
||||
}
|
||||
else
|
||||
puts("You aren't carrying anything.");
|
||||
|
||||
if (ucard(wear)){
|
||||
puts("\nYou are wearing:\n");
|
||||
for (n=0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(wear,n))
|
||||
printf("\t%s\n", objsht[n]);
|
||||
}
|
||||
else
|
||||
puts("\nYou are stark naked.");
|
||||
if (card(injuries,NUMOFINJURIES)){
|
||||
puts("\nYou have suffered:\n");
|
||||
for (n=0; n < NUMOFINJURIES; n++)
|
||||
if (injuries[n])
|
||||
printf("\t%s\n",ouch[n]);
|
||||
printf("\nYou can still carry up to %d kilogram%s\n",WEIGHT,(WEIGHT == 1 ? "." : "s."));
|
||||
}
|
||||
else
|
||||
puts("\nYou are in perfect health.");
|
||||
break;
|
||||
|
||||
case USE:
|
||||
lflag = use();
|
||||
break;
|
||||
|
||||
case LOOK:
|
||||
if (!notes[CANTSEE] || testbit(inven,LAMPON) ||
|
||||
testbit(location[position].objects,LAMPON)
|
||||
|| matchlight) {
|
||||
beenthere[position] = 2;
|
||||
writedes();
|
||||
printobjs();
|
||||
if (matchlight){
|
||||
puts("\nYour match splutters out.");
|
||||
matchlight = 0;
|
||||
case SHOOT:
|
||||
if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
|
||||
for (n = 0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(location[position].objects, n) && *objsht[n]) {
|
||||
wordvalue[wordnumber + 1] = n;
|
||||
wordnumber = shoot();
|
||||
}
|
||||
} else
|
||||
puts("I can't see anything.");
|
||||
return(-1);
|
||||
break;
|
||||
wordnumber++;
|
||||
wordnumber++;
|
||||
} else
|
||||
shoot();
|
||||
break;
|
||||
|
||||
case SU:
|
||||
if (wiz || tempwiz){
|
||||
case TAKE:
|
||||
if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
|
||||
for (n = 0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(location[position].objects, n) && *objsht[n]) {
|
||||
wordvalue[wordnumber + 1] = n;
|
||||
wordnumber = take(location[position].objects);
|
||||
}
|
||||
wordnumber++;
|
||||
wordnumber++;
|
||||
} else
|
||||
take(location[position].objects);
|
||||
break;
|
||||
|
||||
case DROP:
|
||||
|
||||
if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
|
||||
for (n = 0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(inven, n)) {
|
||||
wordvalue[wordnumber + 1] = n;
|
||||
wordnumber = drop("Dropped");
|
||||
}
|
||||
wordnumber++;
|
||||
wordnumber++;
|
||||
} else
|
||||
drop("Dropped");
|
||||
break;
|
||||
|
||||
|
||||
case KICK:
|
||||
case THROW:
|
||||
if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
|
||||
for (n = 0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(inven, n) ||
|
||||
(testbit(location[position].objects, n) && *objsht[n])) {
|
||||
wordvalue[wordnumber + 1] = n;
|
||||
wordnumber = throw(wordvalue[wordnumber] == KICK ? "Kicked" : "Thrown");
|
||||
}
|
||||
wordnumber += 2;
|
||||
} else
|
||||
throw(wordvalue[wordnumber] == KICK ? "Kicked" : "Thrown");
|
||||
break;
|
||||
|
||||
case TAKEOFF:
|
||||
if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
|
||||
for (n = 0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(wear, n)) {
|
||||
wordvalue[wordnumber + 1] = n;
|
||||
wordnumber = takeoff();
|
||||
}
|
||||
wordnumber += 2;
|
||||
} else
|
||||
takeoff();
|
||||
break;
|
||||
|
||||
|
||||
case DRAW:
|
||||
|
||||
if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
|
||||
for (n = 0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(wear, n)) {
|
||||
wordvalue[wordnumber + 1] = n;
|
||||
wordnumber = draw();
|
||||
}
|
||||
wordnumber += 2;
|
||||
} else
|
||||
draw();
|
||||
break;
|
||||
|
||||
|
||||
case PUTON:
|
||||
|
||||
if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
|
||||
for (n = 0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(location[position].objects, n) && *objsht[n]) {
|
||||
wordvalue[wordnumber + 1] = n;
|
||||
wordnumber = puton();
|
||||
}
|
||||
wordnumber += 2;
|
||||
} else
|
||||
puton();
|
||||
break;
|
||||
|
||||
case WEARIT:
|
||||
|
||||
if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
|
||||
for (n = 0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(inven, n)) {
|
||||
wordvalue[wordnumber + 1] = n;
|
||||
wordnumber = wearit();
|
||||
}
|
||||
wordnumber += 2;
|
||||
} else
|
||||
wearit();
|
||||
break;
|
||||
|
||||
|
||||
case EAT:
|
||||
|
||||
if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
|
||||
for (n = 0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(inven, n)) {
|
||||
wordvalue[wordnumber + 1] = n;
|
||||
wordnumber = eat();
|
||||
}
|
||||
wordnumber += 2;
|
||||
} else
|
||||
eat();
|
||||
break;
|
||||
|
||||
|
||||
case PUT:
|
||||
put();
|
||||
break;
|
||||
|
||||
|
||||
case INVEN:
|
||||
if (ucard(inven)) {
|
||||
puts("You are holding:\n");
|
||||
for (n = 0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(inven, n))
|
||||
printf("\t%s\n", objsht[n]);
|
||||
printf("\n= %d kilogram%s (%d%%)\n", carrying, (carrying == 1 ? "." : "s."), (WEIGHT ? carrying * 100 / WEIGHT : -1));
|
||||
printf("Your arms are %d%% full.\n", encumber * 100 / CUMBER);
|
||||
} else
|
||||
puts("You aren't carrying anything.");
|
||||
|
||||
if (ucard(wear)) {
|
||||
puts("\nYou are wearing:\n");
|
||||
for (n = 0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(wear, n))
|
||||
printf("\t%s\n", objsht[n]);
|
||||
} else
|
||||
puts("\nYou are stark naked.");
|
||||
if (card(injuries, NUMOFINJURIES)) {
|
||||
puts("\nYou have suffered:\n");
|
||||
for (n = 0; n < NUMOFINJURIES; n++)
|
||||
if (injuries[n])
|
||||
printf("\t%s\n", ouch[n]);
|
||||
printf("\nYou can still carry up to %d kilogram%s\n", WEIGHT, (WEIGHT == 1 ? "." : "s."));
|
||||
} else
|
||||
puts("\nYou are in perfect health.");
|
||||
break;
|
||||
|
||||
case USE:
|
||||
lflag = use();
|
||||
break;
|
||||
|
||||
case LOOK:
|
||||
if (!notes[CANTSEE] || testbit(inven, LAMPON) ||
|
||||
testbit(location[position].objects, LAMPON)
|
||||
|| matchlight) {
|
||||
beenthere[position] = 2;
|
||||
writedes();
|
||||
printobjs();
|
||||
if (matchlight) {
|
||||
puts("\nYour match splutters out.");
|
||||
matchlight = 0;
|
||||
}
|
||||
} else
|
||||
puts("I can't see anything.");
|
||||
return (-1);
|
||||
break;
|
||||
|
||||
case SU:
|
||||
if (wiz || tempwiz) {
|
||||
printf("\nRoom (was %d) = ", position);
|
||||
fgets(buffer,10,stdin);
|
||||
fgets(buffer, 10, stdin);
|
||||
if (*buffer != '\n')
|
||||
sscanf(buffer,"%d", &position);
|
||||
sscanf(buffer, "%d", &position);
|
||||
printf("Time (was %d) = ", ourtime);
|
||||
fgets(buffer,10,stdin);
|
||||
fgets(buffer, 10, stdin);
|
||||
if (*buffer != '\n')
|
||||
sscanf(buffer,"%d", &ourtime);
|
||||
printf("Fuel (was %d) = ",fuel);
|
||||
fgets(buffer,10,stdin);
|
||||
sscanf(buffer, "%d", &ourtime);
|
||||
printf("Fuel (was %d) = ", fuel);
|
||||
fgets(buffer, 10, stdin);
|
||||
if (*buffer != '\n')
|
||||
sscanf(buffer,"%d", &fuel);
|
||||
printf("Torps (was %d) = ",torps);
|
||||
fgets(buffer,10,stdin);
|
||||
sscanf(buffer, "%d", &fuel);
|
||||
printf("Torps (was %d) = ", torps);
|
||||
fgets(buffer, 10, stdin);
|
||||
if (*buffer != '\n')
|
||||
sscanf(buffer,"%d", &torps);
|
||||
printf("CUMBER (was %d) = ",CUMBER);
|
||||
fgets(buffer,10,stdin);
|
||||
sscanf(buffer, "%d", &torps);
|
||||
printf("CUMBER (was %d) = ", CUMBER);
|
||||
fgets(buffer, 10, stdin);
|
||||
if (*buffer != '\n')
|
||||
sscanf(buffer,"%d", &CUMBER);
|
||||
printf("WEIGHT (was %d) = ",WEIGHT);
|
||||
fgets(buffer,10,stdin);
|
||||
sscanf(buffer, "%d", &CUMBER);
|
||||
printf("WEIGHT (was %d) = ", WEIGHT);
|
||||
fgets(buffer, 10, stdin);
|
||||
if (*buffer != '\n')
|
||||
sscanf(buffer,"%d",&WEIGHT);
|
||||
sscanf(buffer, "%d", &WEIGHT);
|
||||
printf("Clock (was %d) = ", ourclock);
|
||||
fgets(buffer,10,stdin);
|
||||
fgets(buffer, 10, stdin);
|
||||
if (*buffer != '\n')
|
||||
sscanf(buffer,"%d", &ourclock);
|
||||
printf("Wizard (was %d, %d) = ",wiz, tempwiz);
|
||||
fgets(buffer,10,stdin);
|
||||
if (*buffer != '\n'){
|
||||
sscanf(buffer,"%d",&junk);
|
||||
sscanf(buffer, "%d", &ourclock);
|
||||
printf("Wizard (was %d, %d) = ", wiz, tempwiz);
|
||||
fgets(buffer, 10, stdin);
|
||||
if (*buffer != '\n') {
|
||||
sscanf(buffer, "%d", &junk);
|
||||
if (!junk)
|
||||
tempwiz = wiz = 0;
|
||||
}
|
||||
printf("\nDONE.\n");
|
||||
return(0);
|
||||
}
|
||||
else
|
||||
puts("You aren't a wizard.");
|
||||
break;
|
||||
|
||||
case SCORE:
|
||||
printf("\tPLEASURE\tPOWER\t\tEGO\n");
|
||||
printf("\t%3d\t\t%3d\t\t%3d\n\n",pleasure,power,ego);
|
||||
printf("This gives you the rating of %s in %d turns.\n",rate(),ourtime);
|
||||
printf("You have visited %d out of %d rooms this run (%d%%).\n",card(beenthere,NUMOFROOMS),NUMOFROOMS,card(beenthere,NUMOFROOMS)*100/NUMOFROOMS);
|
||||
break;
|
||||
return (0);
|
||||
} else
|
||||
puts("You aren't a wizard.");
|
||||
break;
|
||||
|
||||
case KNIFE:
|
||||
case KILL:
|
||||
murder();
|
||||
break;
|
||||
case SCORE:
|
||||
printf("\tPLEASURE\tPOWER\t\tEGO\n");
|
||||
printf("\t%3d\t\t%3d\t\t%3d\n\n", pleasure, power, ego);
|
||||
printf("This gives you the rating of %s in %d turns.\n", rate(), ourtime);
|
||||
printf("You have visited %d out of %d rooms this run (%d%%).\n", card(beenthere, NUMOFROOMS), NUMOFROOMS, card(beenthere, NUMOFROOMS) * 100 / NUMOFROOMS);
|
||||
break;
|
||||
|
||||
case UNDRESS:
|
||||
case RAVAGE:
|
||||
ravage();
|
||||
break;
|
||||
case KNIFE:
|
||||
case KILL:
|
||||
murder();
|
||||
break;
|
||||
|
||||
case SAVE:
|
||||
save();
|
||||
break;
|
||||
case UNDRESS:
|
||||
case RAVAGE:
|
||||
ravage();
|
||||
break;
|
||||
|
||||
case FOLLOW:
|
||||
lflag = follow();
|
||||
break;
|
||||
case SAVE:
|
||||
save();
|
||||
break;
|
||||
|
||||
case GIVE:
|
||||
give();
|
||||
break;
|
||||
case FOLLOW:
|
||||
lflag = follow();
|
||||
break;
|
||||
|
||||
case KISS:
|
||||
kiss();
|
||||
break;
|
||||
case GIVE:
|
||||
give();
|
||||
break;
|
||||
|
||||
case LOVE:
|
||||
love();
|
||||
break;
|
||||
case KISS:
|
||||
kiss();
|
||||
break;
|
||||
|
||||
case RIDE:
|
||||
lflag = ride();
|
||||
break;
|
||||
case LOVE:
|
||||
love();
|
||||
break;
|
||||
|
||||
case DRIVE:
|
||||
lflag = drive();
|
||||
break;
|
||||
case RIDE:
|
||||
lflag = ride();
|
||||
break;
|
||||
|
||||
case LIGHT:
|
||||
light();
|
||||
break;
|
||||
case DRIVE:
|
||||
lflag = drive();
|
||||
break;
|
||||
|
||||
case LAUNCH:
|
||||
if (!launch())
|
||||
return(-1);
|
||||
else
|
||||
lflag = 0;
|
||||
break;
|
||||
case LIGHT:
|
||||
light();
|
||||
break;
|
||||
|
||||
case LANDIT:
|
||||
if (!land())
|
||||
return(-1);
|
||||
else
|
||||
lflag = 0;
|
||||
break;
|
||||
case LAUNCH:
|
||||
if (!launch())
|
||||
return (-1);
|
||||
else
|
||||
lflag = 0;
|
||||
break;
|
||||
|
||||
case TIME:
|
||||
chime();
|
||||
break;
|
||||
case LANDIT:
|
||||
if (!land())
|
||||
return (-1);
|
||||
else
|
||||
lflag = 0;
|
||||
break;
|
||||
|
||||
case SLEEP:
|
||||
zzz();
|
||||
break;
|
||||
case TIME:
|
||||
chime();
|
||||
break;
|
||||
|
||||
case DIG:
|
||||
dig();
|
||||
break;
|
||||
case SLEEP:
|
||||
zzz();
|
||||
break;
|
||||
|
||||
case JUMP:
|
||||
lflag = jump();
|
||||
break;
|
||||
case DIG:
|
||||
dig();
|
||||
break;
|
||||
|
||||
case BURY:
|
||||
bury();
|
||||
break;
|
||||
case JUMP:
|
||||
lflag = jump();
|
||||
break;
|
||||
|
||||
case SWIM:
|
||||
puts("Surf's up!");
|
||||
break;
|
||||
case BURY:
|
||||
bury();
|
||||
break;
|
||||
|
||||
case DRINK:
|
||||
drink();
|
||||
break;
|
||||
case SWIM:
|
||||
puts("Surf's up!");
|
||||
break;
|
||||
|
||||
case QUIT:
|
||||
die();
|
||||
case DRINK:
|
||||
drink();
|
||||
break;
|
||||
|
||||
case QUIT:
|
||||
die();
|
||||
|
||||
default:
|
||||
puts("How's that?");
|
||||
return (-1);
|
||||
break;
|
||||
|
||||
default:
|
||||
puts("How's that?");
|
||||
return(-1);
|
||||
break;
|
||||
|
||||
|
||||
}
|
||||
if (wordnumber < wordcount && *words[wordnumber++] == ',')
|
||||
continue;
|
||||
else return(lflag);
|
||||
}
|
||||
return(lflag);
|
||||
else
|
||||
return (lflag);
|
||||
}
|
||||
return (lflag);
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: dayobjs.c,v 1.5 1997/10/10 11:39:45 lukem Exp $ */
|
||||
/* $NetBSD: dayobjs.c,v 1.6 1997/10/11 02:07:16 lukem Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1993
|
||||
@ -38,108 +38,108 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)dayobjs.c 8.2 (Berkeley) 4/28/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: dayobjs.c,v 1.5 1997/10/10 11:39:45 lukem Exp $");
|
||||
__RCSID("$NetBSD: dayobjs.c,v 1.6 1997/10/11 02:07:16 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif /* not lint */
|
||||
|
||||
#include "extern.h"
|
||||
|
||||
struct objs dayobjs[] = {
|
||||
{ 236, HORSE },
|
||||
{ 237, CAR },
|
||||
{ 275, POT },
|
||||
{ 275, BAR },
|
||||
{ 275, BLOCK },
|
||||
{ 260, COINS },
|
||||
{ 266, DARK },
|
||||
{ 235, TIMER },
|
||||
{ 51, 51 },
|
||||
{ 59, 51 },
|
||||
{ 48, 51 },
|
||||
{ 66, 52 },
|
||||
{ 65, 52 },
|
||||
{ 19, BOMB },
|
||||
{ 167, NATIVE },
|
||||
{ 21, KNIFE },
|
||||
{ 30, KNIFE },
|
||||
{ 30, CLEAVER },
|
||||
{ 260, SWORD },
|
||||
{ 70, LAND },
|
||||
{ 71, LAND },
|
||||
{ 72, LAND },
|
||||
{ 73, LAND },
|
||||
{ 74, LAND },
|
||||
{ 75, LAND },
|
||||
{ 76, LAND },
|
||||
{ 77, LAND },
|
||||
{ 78, LAND },
|
||||
{ 79, LAND },
|
||||
{ 81, LAND },
|
||||
{ 82, LAND },
|
||||
{ 83, LAND },
|
||||
{ 84, LAND },
|
||||
{ 85, LAND },
|
||||
{ 86, LAND },
|
||||
{ 87, LAND },
|
||||
{ 88, LAND },
|
||||
{ 90, LAND },
|
||||
{ 95, LAND },
|
||||
{ 96, LAND },
|
||||
{ 97, LAND },
|
||||
{ 99, LAND },
|
||||
{ 100, LAND },
|
||||
{ 104, LAND },
|
||||
{ 172, WOODSMAN },
|
||||
{ 172, DEADWOOD },
|
||||
{ 172, MALLET },
|
||||
{ 146, ELF },
|
||||
{ 146, HALBERD },
|
||||
{ 146, SHIELD },
|
||||
{ 190, TWO_HANDED },
|
||||
{ 190, POTION },
|
||||
{ 142, BROAD },
|
||||
{ 258, MAIL },
|
||||
{ 258, HELM },
|
||||
{ 21, MAID },
|
||||
{ 7, VIPER },
|
||||
{ 216, SHOES },
|
||||
{ 64, CYLON },
|
||||
{ 36, CYLON },
|
||||
{ 49, CYLON },
|
||||
{ 8, ROBE },
|
||||
{ 13, AMULET },
|
||||
{ 20, LASER },
|
||||
{ 126, BATHGOD },
|
||||
{ 26, GRENADE },
|
||||
{ 256, GRENADE },
|
||||
{ 237, CHAIN },
|
||||
{ 237, COMPASS },
|
||||
{ 218, LEVIS },
|
||||
{ 164, MACE },
|
||||
{ 137, SHOVEL },
|
||||
{ 11, COINS },
|
||||
{ 24, MATCHES },
|
||||
{ 235, MATCHES },
|
||||
{ 93, MAN },
|
||||
{ 109, PAPAYAS },
|
||||
{ 110, PINEAPPLE },
|
||||
{ 152, PINEAPPLE },
|
||||
{ 154, PINEAPPLE },
|
||||
{ 111, KIWI },
|
||||
{ 149, MANGO },
|
||||
{ 112, COCONUTS },
|
||||
{ 150, COCONUTS },
|
||||
{ 151, COCONUTS },
|
||||
{ 153, COCONUTS },
|
||||
{ 192, COCONUTS },
|
||||
{ 204, COCONUTS },
|
||||
{ 207, COCONUTS },
|
||||
{ 209, COCONUTS },
|
||||
{ 213, COCONUTS },
|
||||
{ 240, COCONUTS },
|
||||
{ 218, RING },
|
||||
{ 130, BRACELET },
|
||||
{ 93, GIRL },
|
||||
{ 268, LAMPON },
|
||||
{ 0 }
|
||||
{236, HORSE},
|
||||
{237, CAR},
|
||||
{275, POT},
|
||||
{275, BAR},
|
||||
{275, BLOCK},
|
||||
{260, COINS},
|
||||
{266, DARK},
|
||||
{235, TIMER},
|
||||
{51, 51},
|
||||
{59, 51},
|
||||
{48, 51},
|
||||
{66, 52},
|
||||
{65, 52},
|
||||
{19, BOMB},
|
||||
{167, NATIVE},
|
||||
{21, KNIFE},
|
||||
{30, KNIFE},
|
||||
{30, CLEAVER},
|
||||
{260, SWORD},
|
||||
{70, LAND},
|
||||
{71, LAND},
|
||||
{72, LAND},
|
||||
{73, LAND},
|
||||
{74, LAND},
|
||||
{75, LAND},
|
||||
{76, LAND},
|
||||
{77, LAND},
|
||||
{78, LAND},
|
||||
{79, LAND},
|
||||
{81, LAND},
|
||||
{82, LAND},
|
||||
{83, LAND},
|
||||
{84, LAND},
|
||||
{85, LAND},
|
||||
{86, LAND},
|
||||
{87, LAND},
|
||||
{88, LAND},
|
||||
{90, LAND},
|
||||
{95, LAND},
|
||||
{96, LAND},
|
||||
{97, LAND},
|
||||
{99, LAND},
|
||||
{100, LAND},
|
||||
{104, LAND},
|
||||
{172, WOODSMAN},
|
||||
{172, DEADWOOD},
|
||||
{172, MALLET},
|
||||
{146, ELF},
|
||||
{146, HALBERD},
|
||||
{146, SHIELD},
|
||||
{190, TWO_HANDED},
|
||||
{190, POTION},
|
||||
{142, BROAD},
|
||||
{258, MAIL},
|
||||
{258, HELM},
|
||||
{21, MAID},
|
||||
{7, VIPER},
|
||||
{216, SHOES},
|
||||
{64, CYLON},
|
||||
{36, CYLON},
|
||||
{49, CYLON},
|
||||
{8, ROBE},
|
||||
{13, AMULET},
|
||||
{20, LASER},
|
||||
{126, BATHGOD},
|
||||
{26, GRENADE},
|
||||
{256, GRENADE},
|
||||
{237, CHAIN},
|
||||
{237, COMPASS},
|
||||
{218, LEVIS},
|
||||
{164, MACE},
|
||||
{137, SHOVEL},
|
||||
{11, COINS},
|
||||
{24, MATCHES},
|
||||
{235, MATCHES},
|
||||
{93, MAN},
|
||||
{109, PAPAYAS},
|
||||
{110, PINEAPPLE},
|
||||
{152, PINEAPPLE},
|
||||
{154, PINEAPPLE},
|
||||
{111, KIWI},
|
||||
{149, MANGO},
|
||||
{112, COCONUTS},
|
||||
{150, COCONUTS},
|
||||
{151, COCONUTS},
|
||||
{153, COCONUTS},
|
||||
{192, COCONUTS},
|
||||
{204, COCONUTS},
|
||||
{207, COCONUTS},
|
||||
{209, COCONUTS},
|
||||
{213, COCONUTS},
|
||||
{240, COCONUTS},
|
||||
{218, RING},
|
||||
{130, BRACELET},
|
||||
{93, GIRL},
|
||||
{268, LAMPON},
|
||||
{0}
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: extern.h,v 1.5 1997/10/10 11:39:47 lukem Exp $ */
|
||||
/* $NetBSD: extern.h,v 1.6 1997/10/11 02:07:18 lukem Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1993
|
||||
@ -36,6 +36,7 @@
|
||||
*/
|
||||
|
||||
#include <ctype.h>
|
||||
#include <err.h>
|
||||
#include <pwd.h>
|
||||
#include <signal.h>
|
||||
#include <stdio.h>
|
||||
@ -52,13 +53,13 @@
|
||||
#define setbit(array, index) (array[index/BITS] |= (1 << (index % BITS)))
|
||||
#define clearbit(array, index) (array[index/BITS] &= ~(1 << (index % BITS)))
|
||||
|
||||
/* well known rooms */
|
||||
/* well known rooms */
|
||||
#define FINAL 275
|
||||
#define GARDEN 197
|
||||
#define POOLS 126
|
||||
#define DOCK 93
|
||||
|
||||
/* word types */
|
||||
/* word types */
|
||||
#define VERB 0
|
||||
#define OBJECT 1
|
||||
#define NOUNS 2
|
||||
@ -66,8 +67,8 @@
|
||||
#define ADJS 4
|
||||
#define CONJ 5
|
||||
|
||||
/* words numbers */
|
||||
#define KNIFE 0
|
||||
/* words numbers */
|
||||
#define KNIFE 0
|
||||
#define SWORD 1
|
||||
#define LAND 2
|
||||
#define WOODSMAN 3
|
||||
@ -131,7 +132,7 @@
|
||||
#define BAR 62
|
||||
#define BLOCK 63
|
||||
#define NUMOFOBJECTS 64
|
||||
/* non-objects below */
|
||||
/* non-objects below */
|
||||
#define UP 1000
|
||||
#define DOWN 1001
|
||||
#define AHEAD 1002
|
||||
@ -182,11 +183,11 @@
|
||||
#define RIDE 1047
|
||||
#define DRIVE 1048
|
||||
#define SCORE 1049
|
||||
#define BURY 1050
|
||||
#define BURY 1050
|
||||
#define JUMP 1051
|
||||
#define KICK 1052
|
||||
|
||||
/* injuries */
|
||||
/* injuries */
|
||||
#define ARM 6 /* broken arm */
|
||||
#define RIBS 7 /* broken ribs */
|
||||
#define SPINE 9 /* broken back */
|
||||
@ -195,16 +196,16 @@
|
||||
#define NECK 12 /* broken NECK */
|
||||
#define NUMOFINJURIES 13
|
||||
|
||||
/* notes */
|
||||
/* notes */
|
||||
#define CANTLAUNCH 0
|
||||
#define LAUNCHED 1
|
||||
#define CANTSEE 2
|
||||
#define CANTMOVE 3
|
||||
#define CANTMOVE 3
|
||||
#define JINXED 4
|
||||
#define DUG 5
|
||||
#define NUMOFNOTES 6
|
||||
|
||||
/* fundamental constants */
|
||||
/* fundamental constants */
|
||||
#define NUMOFROOMS 275
|
||||
#define NUMOFWORDS ((NUMOFOBJECTS + BITS - 1) / BITS)
|
||||
#define LINELENGTH 81
|
||||
@ -213,15 +214,15 @@
|
||||
#define TONIGHT 1
|
||||
#define CYCLE 100
|
||||
|
||||
/* initial variable values */
|
||||
/* initial variable values */
|
||||
#define TANKFULL 250
|
||||
#define TORPEDOES 10
|
||||
#define MAXWEIGHT 60
|
||||
#define MAXCUMBER 10
|
||||
|
||||
struct room {
|
||||
char *name;
|
||||
int link[8];
|
||||
char *name;
|
||||
int link[8];
|
||||
#define north link[0]
|
||||
#define south link[1]
|
||||
#define east link[2]
|
||||
@ -230,61 +231,61 @@ struct room {
|
||||
#define access link[5]
|
||||
#define down link[6]
|
||||
#define flyhere link[7]
|
||||
char *desc;
|
||||
char *desc;
|
||||
unsigned int objects[NUMOFWORDS];
|
||||
};
|
||||
struct room dayfile[];
|
||||
struct room nightfile[];
|
||||
struct room *location;
|
||||
|
||||
/* object characteristics */
|
||||
char *objdes[NUMOFOBJECTS];
|
||||
char *objsht[NUMOFOBJECTS];
|
||||
char *ouch[NUMOFINJURIES];
|
||||
int objwt[NUMOFOBJECTS];
|
||||
int objcumber[NUMOFOBJECTS];
|
||||
/* object characteristics */
|
||||
char *objdes[NUMOFOBJECTS];
|
||||
char *objsht[NUMOFOBJECTS];
|
||||
char *ouch[NUMOFINJURIES];
|
||||
int objwt[NUMOFOBJECTS];
|
||||
int objcumber[NUMOFOBJECTS];
|
||||
|
||||
/* current input line */
|
||||
#define NWORD 20 /* words per line */
|
||||
char words[NWORD][15];
|
||||
int wordvalue[NWORD];
|
||||
int wordtype[NWORD];
|
||||
int wordcount, wordnumber;
|
||||
/* current input line */
|
||||
#define NWORD 20 /* words per line */
|
||||
char words[NWORD][15];
|
||||
int wordvalue[NWORD];
|
||||
int wordtype[NWORD];
|
||||
int wordcount, wordnumber;
|
||||
|
||||
/* state of the game */
|
||||
int ourtime;
|
||||
int position;
|
||||
int direction;
|
||||
int left, right, ahead, back;
|
||||
int ourclock, fuel, torps;
|
||||
int carrying, encumber;
|
||||
int rythmn;
|
||||
int followfight;
|
||||
int ate;
|
||||
int snooze;
|
||||
int meetgirl;
|
||||
int followgod;
|
||||
int godready;
|
||||
int win;
|
||||
int wintime;
|
||||
int wiz;
|
||||
int tempwiz;
|
||||
int matchlight, matchcount;
|
||||
int loved;
|
||||
int pleasure, power, ego;
|
||||
int WEIGHT;
|
||||
int CUMBER;
|
||||
int notes[NUMOFNOTES];
|
||||
/* state of the game */
|
||||
int ourtime;
|
||||
int position;
|
||||
int direction;
|
||||
int left, right, ahead, back;
|
||||
int ourclock, fuel, torps;
|
||||
int carrying, encumber;
|
||||
int rythmn;
|
||||
int followfight;
|
||||
int ate;
|
||||
int snooze;
|
||||
int meetgirl;
|
||||
int followgod;
|
||||
int godready;
|
||||
int win;
|
||||
int wintime;
|
||||
int wiz;
|
||||
int tempwiz;
|
||||
int matchlight, matchcount;
|
||||
int loved;
|
||||
int pleasure, power, ego;
|
||||
int WEIGHT;
|
||||
int CUMBER;
|
||||
int notes[NUMOFNOTES];
|
||||
unsigned int inven[NUMOFWORDS];
|
||||
unsigned int wear[NUMOFWORDS];
|
||||
char beenthere[NUMOFROOMS+1];
|
||||
char injuries[NUMOFINJURIES];
|
||||
char beenthere[NUMOFROOMS + 1];
|
||||
char injuries[NUMOFINJURIES];
|
||||
|
||||
char uname[9];
|
||||
char uname[9];
|
||||
|
||||
struct wlist {
|
||||
char *string;
|
||||
int value, article;
|
||||
char *string;
|
||||
int value, article;
|
||||
struct wlist *next;
|
||||
};
|
||||
#define HASHSIZE 256
|
||||
@ -294,74 +295,74 @@ struct wlist *hashtab[HASHSIZE];
|
||||
struct wlist wlist[];
|
||||
|
||||
struct objs {
|
||||
short room;
|
||||
short obj;
|
||||
short room;
|
||||
short obj;
|
||||
};
|
||||
struct objs dayobjs[];
|
||||
struct objs nightobjs[];
|
||||
|
||||
void blast __P((void));
|
||||
void bury __P((void));
|
||||
int card __P((char *, int));
|
||||
int checkout __P((char *));
|
||||
void chime __P((void));
|
||||
void convert __P((int));
|
||||
void crash __P((void));
|
||||
int cypher __P((void));
|
||||
void die __P((void));
|
||||
void diesig __P((int));
|
||||
void dig __P((void));
|
||||
int draw __P((void));
|
||||
void drink __P((void));
|
||||
int drive __P((void));
|
||||
int drop __P((char *));
|
||||
int eat __P((void));
|
||||
void endfly __P((void));
|
||||
int fight __P((int, int));
|
||||
int follow __P((void));
|
||||
void getutmp __P((char *));
|
||||
int give __P((void));
|
||||
int hash __P((char *));
|
||||
void initialize __P((char));
|
||||
void install __P((struct wlist *));
|
||||
int jump __P((void));
|
||||
void kiss __P((void));
|
||||
int land __P((void));
|
||||
int launch __P((void));
|
||||
void light __P((void));
|
||||
void live __P((void));
|
||||
void love __P((void));
|
||||
int move __P((int, int));
|
||||
void moveenemy __P((int));
|
||||
void murder __P((void));
|
||||
void news __P((void));
|
||||
void newway __P((int));
|
||||
void notarget __P((void));
|
||||
void parse __P((void));
|
||||
void post __P((char));
|
||||
void printobjs __P((void));
|
||||
int put __P((void));
|
||||
int puton __P((void));
|
||||
void ravage __P((void));
|
||||
void restore __P((void));
|
||||
int ride __P((void));
|
||||
void save __P((void));
|
||||
void screen __P((void));
|
||||
int shoot __P((void));
|
||||
void succumb __P((int));
|
||||
int take __P((unsigned int []));
|
||||
int takeoff __P((void));
|
||||
void target __P((void));
|
||||
int throw __P((char *));
|
||||
int ucard __P((unsigned int *));
|
||||
int use __P((void));
|
||||
int visual __P((void));
|
||||
int wearit __P((void));
|
||||
void whichway __P((struct room));
|
||||
int wizard __P((char *));
|
||||
void wordinit __P((void));
|
||||
void writedes __P((void));
|
||||
int zzz __P((void));
|
||||
void blast __P((void));
|
||||
void bury __P((void));
|
||||
int card __P((char *, int));
|
||||
int checkout __P((char *));
|
||||
void chime __P((void));
|
||||
void convert __P((int));
|
||||
void crash __P((void));
|
||||
int cypher __P((void));
|
||||
void die __P((void));
|
||||
void diesig __P((int));
|
||||
void dig __P((void));
|
||||
int draw __P((void));
|
||||
void drink __P((void));
|
||||
int drive __P((void));
|
||||
int drop __P((char *));
|
||||
int eat __P((void));
|
||||
void endfly __P((void));
|
||||
int fight __P((int, int));
|
||||
int follow __P((void));
|
||||
void getutmp __P((char *));
|
||||
int give __P((void));
|
||||
int hash __P((char *));
|
||||
void initialize __P((char));
|
||||
void install __P((struct wlist *));
|
||||
int jump __P((void));
|
||||
void kiss __P((void));
|
||||
int land __P((void));
|
||||
int launch __P((void));
|
||||
void light __P((void));
|
||||
void live __P((void));
|
||||
void love __P((void));
|
||||
int move __P((int, int));
|
||||
void moveenemy __P((int));
|
||||
void murder __P((void));
|
||||
void news __P((void));
|
||||
void newway __P((int));
|
||||
void notarget __P((void));
|
||||
void parse __P((void));
|
||||
void post __P((char));
|
||||
void printobjs __P((void));
|
||||
int put __P((void));
|
||||
int puton __P((void));
|
||||
void ravage __P((void));
|
||||
void restore __P((void));
|
||||
int ride __P((void));
|
||||
void save __P((void));
|
||||
void screen __P((void));
|
||||
int shoot __P((void));
|
||||
void succumb __P((int));
|
||||
int take __P((unsigned int[]));
|
||||
int takeoff __P((void));
|
||||
void target __P((void));
|
||||
int throw __P((char *));
|
||||
int ucard __P((unsigned int *));
|
||||
int use __P((void));
|
||||
int visual __P((void));
|
||||
int wearit __P((void));
|
||||
void whichway __P((struct room));
|
||||
int wizard __P((char *));
|
||||
void wordinit __P((void));
|
||||
void writedes __P((void));
|
||||
int zzz __P((void));
|
||||
char *getcom __P((char *, int, char *, char *));
|
||||
char *getword __P((char *, char *, int));
|
||||
char *rate __P((void));
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: fly.c,v 1.5 1997/10/10 11:39:50 lukem Exp $ */
|
||||
/* $NetBSD: fly.c,v 1.6 1997/10/11 02:07:20 lukem Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1993
|
||||
@ -38,9 +38,9 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)fly.c 8.2 (Berkeley) 4/28/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: fly.c,v 1.5 1997/10/10 11:39:50 lukem Exp $");
|
||||
__RCSID("$NetBSD: fly.c,v 1.6 1997/10/11 02:07:20 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif /* not lint */
|
||||
|
||||
#include "extern.h"
|
||||
#undef UP
|
||||
@ -50,16 +50,16 @@ __RCSID("$NetBSD: fly.c,v 1.5 1997/10/10 11:39:50 lukem Exp $");
|
||||
#define MIDR (LINES/2 - 1)
|
||||
#define MIDC (COLS/2 - 1)
|
||||
|
||||
int row, column;
|
||||
int dr = 0, dc = 0;
|
||||
char destroyed;
|
||||
int ourclock = 120; /* time for all the flights in the game */
|
||||
char cross = 0;
|
||||
sig_t oldsig;
|
||||
int row, column;
|
||||
int dr = 0, dc = 0;
|
||||
char destroyed;
|
||||
int ourclock = 120; /* time for all the flights in the game */
|
||||
char cross = 0;
|
||||
sig_t oldsig;
|
||||
|
||||
void
|
||||
succumb(dummy)
|
||||
int dummy;
|
||||
int dummy;
|
||||
{
|
||||
if (oldsig == SIG_DFL) {
|
||||
endfly();
|
||||
@ -67,7 +67,7 @@ succumb(dummy)
|
||||
}
|
||||
if (oldsig != SIG_IGN) {
|
||||
endfly();
|
||||
(*oldsig)(SIGINT);
|
||||
(*oldsig) (SIGINT);
|
||||
}
|
||||
}
|
||||
|
||||
@ -75,105 +75,103 @@ int
|
||||
visual()
|
||||
{
|
||||
destroyed = 0;
|
||||
if(initscr() == ERR){
|
||||
if (initscr() == ERR) {
|
||||
puts("Whoops! No more memory...");
|
||||
return(0);
|
||||
return (0);
|
||||
}
|
||||
oldsig = signal(SIGINT, succumb);
|
||||
crmode();
|
||||
noecho();
|
||||
screen();
|
||||
row = rnd(LINES-3) + 1;
|
||||
column = rnd(COLS-2) + 1;
|
||||
row = rnd(LINES - 3) + 1;
|
||||
column = rnd(COLS - 2) + 1;
|
||||
moveenemy(0);
|
||||
for (;;) {
|
||||
switch(getchar()){
|
||||
switch (getchar()) {
|
||||
|
||||
case 'h':
|
||||
case 'r':
|
||||
dc = -1;
|
||||
fuel--;
|
||||
break;
|
||||
case 'h':
|
||||
case 'r':
|
||||
dc = -1;
|
||||
fuel--;
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
case 'R':
|
||||
dc = -5;
|
||||
fuel -= 10;
|
||||
break;
|
||||
case 'H':
|
||||
case 'R':
|
||||
dc = -5;
|
||||
fuel -= 10;
|
||||
break;
|
||||
|
||||
case 'l':
|
||||
dc = 1;
|
||||
fuel--;
|
||||
break;
|
||||
case 'l':
|
||||
dc = 1;
|
||||
fuel--;
|
||||
break;
|
||||
|
||||
case 'L':
|
||||
dc = 5;
|
||||
fuel -= 10;
|
||||
break;
|
||||
case 'L':
|
||||
dc = 5;
|
||||
fuel -= 10;
|
||||
break;
|
||||
|
||||
case 'j':
|
||||
case 'u':
|
||||
dr = 1;
|
||||
fuel--;
|
||||
break;
|
||||
case 'j':
|
||||
case 'u':
|
||||
dr = 1;
|
||||
fuel--;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
case 'U':
|
||||
dr = 5;
|
||||
fuel -= 10;
|
||||
break;
|
||||
case 'J':
|
||||
case 'U':
|
||||
dr = 5;
|
||||
fuel -= 10;
|
||||
break;
|
||||
|
||||
case 'k':
|
||||
case 'd':
|
||||
dr = -1;
|
||||
fuel--;
|
||||
break;
|
||||
case 'k':
|
||||
case 'd':
|
||||
dr = -1;
|
||||
fuel--;
|
||||
break;
|
||||
|
||||
case 'K':
|
||||
case 'D':
|
||||
dr = -5;
|
||||
fuel -= 10;
|
||||
break;
|
||||
case 'K':
|
||||
case 'D':
|
||||
dr = -5;
|
||||
fuel -= 10;
|
||||
break;
|
||||
|
||||
case '+':
|
||||
if (cross){
|
||||
cross = 0;
|
||||
notarget();
|
||||
case '+':
|
||||
if (cross) {
|
||||
cross = 0;
|
||||
notarget();
|
||||
} else
|
||||
cross = 1;
|
||||
break;
|
||||
|
||||
case ' ':
|
||||
case 'f':
|
||||
if (torps) {
|
||||
torps -= 2;
|
||||
blast();
|
||||
if (row == MIDR && column - MIDC < 2 && MIDC - column < 2) {
|
||||
destroyed = 1;
|
||||
alarm(0);
|
||||
}
|
||||
else
|
||||
cross = 1;
|
||||
break;
|
||||
} else
|
||||
mvaddstr(0, 0, "*** Out of torpedoes. ***");
|
||||
break;
|
||||
|
||||
case ' ':
|
||||
case 'f':
|
||||
if (torps){
|
||||
torps -= 2;
|
||||
blast();
|
||||
if (row == MIDR && column - MIDC < 2 && MIDC - column < 2){
|
||||
destroyed = 1;
|
||||
alarm(0);
|
||||
}
|
||||
}
|
||||
else
|
||||
mvaddstr(0,0,"*** Out of torpedoes. ***");
|
||||
break;
|
||||
|
||||
case 'q':
|
||||
endfly();
|
||||
return(0);
|
||||
|
||||
default:
|
||||
mvaddstr(0,26,"Commands = r,R,l,L,u,U,d,D,f,+,q");
|
||||
continue;
|
||||
|
||||
case EOF:
|
||||
break;
|
||||
}
|
||||
if (destroyed){
|
||||
case 'q':
|
||||
endfly();
|
||||
return(1);
|
||||
return (0);
|
||||
|
||||
default:
|
||||
mvaddstr(0, 26, "Commands = r,R,l,L,u,U,d,D,f,+,q");
|
||||
continue;
|
||||
|
||||
case EOF:
|
||||
break;
|
||||
}
|
||||
if (ourclock <= 0){
|
||||
if (destroyed) {
|
||||
endfly();
|
||||
return (1);
|
||||
}
|
||||
if (ourclock <= 0) {
|
||||
endfly();
|
||||
die();
|
||||
}
|
||||
@ -183,63 +181,63 @@ visual()
|
||||
void
|
||||
screen()
|
||||
{
|
||||
int r,c,n;
|
||||
int i;
|
||||
int r, c, n;
|
||||
int i;
|
||||
|
||||
clear();
|
||||
i = rnd(100);
|
||||
for (n=0; n < i; n++){
|
||||
r = rnd(LINES-3) + 1;
|
||||
for (n = 0; n < i; n++) {
|
||||
r = rnd(LINES - 3) + 1;
|
||||
c = rnd(COLS);
|
||||
mvaddch(r, c, '.');
|
||||
}
|
||||
mvaddstr(LINES-1-1,21,"TORPEDOES FUEL TIME");
|
||||
mvaddstr(LINES - 1 - 1, 21, "TORPEDOES FUEL TIME");
|
||||
refresh();
|
||||
}
|
||||
|
||||
void
|
||||
target()
|
||||
{
|
||||
int n;
|
||||
int n;
|
||||
|
||||
move(MIDR,MIDC-10);
|
||||
move(MIDR, MIDC - 10);
|
||||
addstr("------- + -------");
|
||||
for (n = MIDR-4; n < MIDR-1; n++){
|
||||
mvaddch(n,MIDC,'|');
|
||||
mvaddch(n+6,MIDC,'|');
|
||||
for (n = MIDR - 4; n < MIDR - 1; n++) {
|
||||
mvaddch(n, MIDC, '|');
|
||||
mvaddch(n + 6, MIDC, '|');
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
notarget()
|
||||
{
|
||||
int n;
|
||||
int n;
|
||||
|
||||
move(MIDR,MIDC-10);
|
||||
move(MIDR, MIDC - 10);
|
||||
addstr(" ");
|
||||
for (n = MIDR-4; n < MIDR-1; n++){
|
||||
mvaddch(n,MIDC,' ');
|
||||
mvaddch(n+6,MIDC,' ');
|
||||
for (n = MIDR - 4; n < MIDR - 1; n++) {
|
||||
mvaddch(n, MIDC, ' ');
|
||||
mvaddch(n + 6, MIDC, ' ');
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
blast()
|
||||
{
|
||||
int n;
|
||||
int n;
|
||||
|
||||
alarm(0);
|
||||
move(LINES-1, 24);
|
||||
move(LINES - 1, 24);
|
||||
printw("%3d", torps);
|
||||
for(n = LINES-1-2; n >= MIDR + 1; n--){
|
||||
mvaddch(n, MIDC+MIDR-n, '/');
|
||||
mvaddch(n, MIDC-MIDR+n, '\\');
|
||||
for (n = LINES - 1 - 2; n >= MIDR + 1; n--) {
|
||||
mvaddch(n, MIDC + MIDR - n, '/');
|
||||
mvaddch(n, MIDC - MIDR + n, '\\');
|
||||
refresh();
|
||||
}
|
||||
mvaddch(MIDR,MIDC,'*');
|
||||
for(n = LINES-1-2; n >= MIDR + 1; n--){
|
||||
mvaddch(n, MIDC+MIDR-n, ' ');
|
||||
mvaddch(n, MIDC-MIDR+n, ' ');
|
||||
mvaddch(MIDR, MIDC, '*');
|
||||
for (n = LINES - 1 - 2; n >= MIDR + 1; n--) {
|
||||
mvaddch(n, MIDC + MIDR - n, ' ');
|
||||
mvaddch(n, MIDC - MIDR + n, ' ');
|
||||
refresh();
|
||||
}
|
||||
alarm(1);
|
||||
@ -247,24 +245,25 @@ blast()
|
||||
|
||||
void
|
||||
moveenemy(dummy)
|
||||
int dummy;
|
||||
int dummy;
|
||||
{
|
||||
double d;
|
||||
int oldr, oldc;
|
||||
double d;
|
||||
int oldr, oldc;
|
||||
|
||||
oldr = row;
|
||||
oldc = column;
|
||||
if (fuel > 0){
|
||||
if (row + dr <= LINES-3 && row + dr > 0)
|
||||
if (fuel > 0) {
|
||||
if (row + dr <= LINES - 3 && row + dr > 0)
|
||||
row += dr;
|
||||
if (column + dc < COLS-1 && column + dc > 0)
|
||||
if (column + dc < COLS - 1 && column + dc > 0)
|
||||
column += dc;
|
||||
} else if (fuel < 0){
|
||||
fuel = 0;
|
||||
mvaddstr(0,60,"*** Out of fuel ***");
|
||||
}
|
||||
d = (double) ((row - MIDR)*(row - MIDR) + (column - MIDC)*(column - MIDC));
|
||||
if (d < 16){
|
||||
} else
|
||||
if (fuel < 0) {
|
||||
fuel = 0;
|
||||
mvaddstr(0, 60, "*** Out of fuel ***");
|
||||
}
|
||||
d = (double) ((row - MIDR) * (row - MIDR) + (column - MIDC) * (column - MIDC));
|
||||
if (d < 16) {
|
||||
row += (rnd(9) - 4) % (4 - abs(row - MIDR));
|
||||
column += (rnd(9) - 4) % (4 - abs(column - MIDC));
|
||||
}
|
||||
@ -273,11 +272,11 @@ moveenemy(dummy)
|
||||
if (cross)
|
||||
target();
|
||||
mvaddstr(row, column - 1, "/-\\");
|
||||
move(LINES-1, 24);
|
||||
move(LINES - 1, 24);
|
||||
printw("%3d", torps);
|
||||
move(LINES-1, 42);
|
||||
move(LINES - 1, 42);
|
||||
printw("%3d", fuel);
|
||||
move(LINES-1, 57);
|
||||
move(LINES - 1, 57);
|
||||
printw("%3d", ourclock);
|
||||
refresh();
|
||||
signal(SIGALRM, moveenemy);
|
||||
@ -289,7 +288,7 @@ endfly()
|
||||
{
|
||||
alarm(0);
|
||||
signal(SIGALRM, SIG_DFL);
|
||||
mvcur(0,COLS-1,LINES-1,0);
|
||||
mvcur(0, COLS - 1, LINES - 1, 0);
|
||||
endwin();
|
||||
signal(SIGTSTP, SIG_DFL);
|
||||
signal(SIGINT, oldsig);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: getcom.c,v 1.4 1997/10/10 11:39:53 lukem Exp $ */
|
||||
/* $NetBSD: getcom.c,v 1.5 1997/10/11 02:07:21 lukem Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1993
|
||||
@ -38,20 +38,20 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)getcom.c 8.1 (Berkeley) 5/31/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: getcom.c,v 1.4 1997/10/10 11:39:53 lukem Exp $");
|
||||
__RCSID("$NetBSD: getcom.c,v 1.5 1997/10/11 02:07:21 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif /* not lint */
|
||||
|
||||
#include "extern.h"
|
||||
|
||||
char *
|
||||
char *
|
||||
getcom(buf, size, prompt, error)
|
||||
char *buf;
|
||||
int size;
|
||||
char *prompt, *error;
|
||||
char *buf;
|
||||
int size;
|
||||
char *prompt, *error;
|
||||
{
|
||||
for (;;) {
|
||||
fputs(prompt, stdout);
|
||||
fputs(prompt, stdout);
|
||||
if (fgets(buf, size, stdin) == 0) {
|
||||
clearerr(stdin);
|
||||
continue;
|
||||
@ -71,10 +71,10 @@ getcom(buf, size, prompt, error)
|
||||
* shifts to UPPERCASE if flag > 0, lowercase if flag < 0,
|
||||
* and leaves it unchanged if flag = 0
|
||||
*/
|
||||
char *
|
||||
char *
|
||||
getword(buf1, buf2, flag)
|
||||
char *buf1, *buf2;
|
||||
int flag;
|
||||
char *buf1, *buf2;
|
||||
int flag;
|
||||
{
|
||||
while (isspace(*buf1))
|
||||
buf1++;
|
||||
@ -89,13 +89,14 @@ getword(buf1, buf2, flag)
|
||||
*buf2++ = tolower(*buf1++);
|
||||
else
|
||||
*buf2++ = *buf1++;
|
||||
else if (flag > 0)
|
||||
if (islower(*buf1))
|
||||
*buf2++ = toupper(*buf1++);
|
||||
else
|
||||
if (flag > 0)
|
||||
if (islower(*buf1))
|
||||
*buf2++ = toupper(*buf1++);
|
||||
else
|
||||
*buf2++ = *buf1++;
|
||||
else
|
||||
*buf2++ = *buf1++;
|
||||
else
|
||||
*buf2++ = *buf1++;
|
||||
} else
|
||||
*buf2++ = *buf1++;
|
||||
*buf2 = 0;
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: globals.c,v 1.5 1997/10/10 11:39:56 lukem Exp $ */
|
||||
/* $NetBSD: globals.c,v 1.6 1997/10/11 02:07:23 lukem Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1993
|
||||
@ -38,19 +38,19 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)globals.c 8.2 (Berkeley) 4/28/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: globals.c,v 1.5 1997/10/10 11:39:56 lukem Exp $");
|
||||
__RCSID("$NetBSD: globals.c,v 1.6 1997/10/11 02:07:23 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif /* not lint */
|
||||
|
||||
#include "extern.h"
|
||||
|
||||
int WEIGHT = MAXWEIGHT;
|
||||
int CUMBER = MAXCUMBER;
|
||||
int WEIGHT = MAXWEIGHT;
|
||||
int CUMBER = MAXCUMBER;
|
||||
|
||||
char *objdes[NUMOFOBJECTS] = {
|
||||
char *objdes[NUMOFOBJECTS] = {
|
||||
"There is a knife here",
|
||||
"There is an exquisitely crafted sword and scabbard here.",
|
||||
0, /* can land from here */
|
||||
0, /* can land from here */
|
||||
"There is a fierce woodsman here brandishing a heavy mallet.",
|
||||
"There is an unweildly two-handed sword here.",
|
||||
"There is a bloody meat cleaver here.",
|
||||
@ -62,7 +62,7 @@ char *objdes[NUMOFOBJECTS] = {
|
||||
"There is a Viper ready for launch here.",
|
||||
"A kerosene lantern is burning luridly here.",
|
||||
"An old pair of shoes has been discarded here.",
|
||||
0, /* cylon */
|
||||
0, /* cylon */
|
||||
"There is a pair of pajamas here.",
|
||||
"A kingly robe of royal purple and spun gold is draped here.",
|
||||
"There is a strange golden amulet on the floor here.",
|
||||
@ -71,7 +71,7 @@ char *objdes[NUMOFOBJECTS] = {
|
||||
"A dead woodsman has fallen here. He was savagely murdered.",
|
||||
"A heavy wooden mallet lies nearby.",
|
||||
"There is a laser pistol here.",
|
||||
"A flower-like young goddess is bathing in the hot mineral pools. She is \nwatching you, but continues to steep and sing softly.",
|
||||
"A flower-like young goddess is bathing in the hot mineral pools. She is \nwatching you, but continues to steep and sing softly.",
|
||||
"The goddess is reclining on a bed of ferns and studying you intently.",
|
||||
"There is a grenade here",
|
||||
"There is a length of heavy chain here.",
|
||||
@ -86,36 +86,36 @@ char *objdes[NUMOFOBJECTS] = {
|
||||
"I think I hear footsteps behind us.",
|
||||
"There are a few coins here.",
|
||||
"There are some matches here.",
|
||||
"An unctuous man in a white suit and a dwarf are standing here.",
|
||||
"There are some ripe papayas here.",
|
||||
"There is a ripe pineapple here.",
|
||||
"There are some kiwi fruit here.",
|
||||
"There are some coconuts here.",
|
||||
"There is a ripe mango here.",
|
||||
"There is a sparkling diamond ring here.",
|
||||
"There is a colorful pink potion in a small crystal vial here.",
|
||||
"A gold bracelet is on the ground here.",
|
||||
"A swarthy woman with stern features pulls you aside from the crowd,\n'I must talk to you -- but not here. Meet me at midnight in the gardens.'",
|
||||
"The swarthy woman has been awaiting you anxiousy. 'I must warn you that the\nIsland has anticipated your Quest. You will not be welcomed. The Darkness is\nstrong where you must search. Seek not the shadows save only at night, for\nthen are they the weakest. In the mountains far from here a canyon winds\nwith ferns and streams and forgotten vines. There you must go. Take this\nrope.'",
|
||||
"Out from the shadows a figure leaps! His black cape swirls around, and he\nholds a laser sword at your chest. 'So, you have come to fulfill the Quest.\nHa! Your weapons are no match for me!'",
|
||||
"An old timer with one eye missing and no money for a drink sits at the bar.",
|
||||
"You are flying through an asteroid field!",
|
||||
"A planet is nearby.",
|
||||
"The ground is charred here.",
|
||||
"There is a thermonuclear warhead here.",
|
||||
"The fragile, beautiful young goddess lies here. You murdered her horribly.",
|
||||
"The old timer is lying here. He is dead.",
|
||||
"The native girl's body is lying here.",
|
||||
"A native girl is sitting here.",
|
||||
"A gorgeous white stallion is standing here.",
|
||||
"The keys are in the ignition.",
|
||||
"A pot of pearls and jewels is sitting here.",
|
||||
"A bar of solid gold is here.",
|
||||
"There is a 10 kilogram diamond block here."
|
||||
"An unctuous man in a white suit and a dwarf are standing here.",
|
||||
"There are some ripe papayas here.",
|
||||
"There is a ripe pineapple here.",
|
||||
"There are some kiwi fruit here.",
|
||||
"There are some coconuts here.",
|
||||
"There is a ripe mango here.",
|
||||
"There is a sparkling diamond ring here.",
|
||||
"There is a colorful pink potion in a small crystal vial here.",
|
||||
"A gold bracelet is on the ground here.",
|
||||
"A swarthy woman with stern features pulls you aside from the crowd,\n'I must talk to you -- but not here. Meet me at midnight in the gardens.'",
|
||||
"The swarthy woman has been awaiting you anxiousy. 'I must warn you that the\nIsland has anticipated your Quest. You will not be welcomed. The Darkness is\nstrong where you must search. Seek not the shadows save only at night, for\nthen are they the weakest. In the mountains far from here a canyon winds\nwith ferns and streams and forgotten vines. There you must go. Take this\nrope.'",
|
||||
"Out from the shadows a figure leaps! His black cape swirls around, and he\nholds a laser sword at your chest. 'So, you have come to fulfill the Quest.\nHa! Your weapons are no match for me!'",
|
||||
"An old timer with one eye missing and no money for a drink sits at the bar.",
|
||||
"You are flying through an asteroid field!",
|
||||
"A planet is nearby.",
|
||||
"The ground is charred here.",
|
||||
"There is a thermonuclear warhead here.",
|
||||
"The fragile, beautiful young goddess lies here. You murdered her horribly.",
|
||||
"The old timer is lying here. He is dead.",
|
||||
"The native girl's body is lying here.",
|
||||
"A native girl is sitting here.",
|
||||
"A gorgeous white stallion is standing here.",
|
||||
"The keys are in the ignition.",
|
||||
"A pot of pearls and jewels is sitting here.",
|
||||
"A bar of solid gold is here.",
|
||||
"There is a 10 kilogram diamond block here."
|
||||
|
||||
};
|
||||
|
||||
char *objsht[NUMOFOBJECTS] = {
|
||||
char *objsht[NUMOFOBJECTS] = {
|
||||
"knife",
|
||||
"fine sword",
|
||||
0,
|
||||
@ -182,7 +182,7 @@ char *objsht[NUMOFOBJECTS] = {
|
||||
"diamond block"
|
||||
};
|
||||
|
||||
char *ouch[NUMOFINJURIES] = {
|
||||
char *ouch[NUMOFINJURIES] = {
|
||||
"some minor abrasions",
|
||||
"some minor lacerations",
|
||||
"a minor puncture wound",
|
||||
@ -193,34 +193,34 @@ char *ouch[NUMOFINJURIES] = {
|
||||
"a few broken ribs",
|
||||
"a broken leg and torn ligaments",
|
||||
"a broken back and ruptured spleen",
|
||||
"some deep incisions and a loss of blood",
|
||||
"some deep incisions and a loss of blood",
|
||||
"a fractured skull and mashed face",
|
||||
"a broken neck"
|
||||
};
|
||||
|
||||
int objwt[NUMOFOBJECTS] = {
|
||||
1, 5, 0, 10, 15, 2, 10, 10,
|
||||
3, 5, 50, 2500, 2, 1, 100, 1,
|
||||
2, 1, 1, 1, 60, 10, 5, 0,
|
||||
50, 5, 15, 5, 1, 20, 10, 10,
|
||||
0, 0, 0, 0, 1, 0, 0, 1,
|
||||
1, 1, 2, 1, 0, 0, 0, 0,
|
||||
0, 0, 100, 0, 0, 0, 55, 47,
|
||||
50, 45, 45, 100, 2000, 30, 20, 10
|
||||
int objwt[NUMOFOBJECTS] = {
|
||||
1, 5, 0, 10, 15, 2, 10, 10,
|
||||
3, 5, 50, 2500, 2, 1, 100, 1,
|
||||
2, 1, 1, 1, 60, 10, 5, 0,
|
||||
50, 5, 15, 5, 1, 20, 10, 10,
|
||||
0, 0, 0, 0, 1, 0, 0, 1,
|
||||
1, 1, 2, 1, 0, 0, 0, 0,
|
||||
0, 0, 100, 0, 0, 0, 55, 47,
|
||||
50, 45, 45, 100, 2000, 30, 20, 10
|
||||
};
|
||||
|
||||
int objcumber[NUMOFOBJECTS] = {
|
||||
1, 5, 0, 150, 10, 1, 5, 2,
|
||||
2, 1, 5, 10, 1, 1, 10, 1,
|
||||
1, 1, 1, 1, 7, 5, 4, 0,
|
||||
0, 1, 1, 1, 1, 5, 4, 4,
|
||||
1, 0, 0, 0, 1, 0, 0, 1,
|
||||
1, 1, 3, 1, 0, 0, 1, 0,
|
||||
0, 0, 10, 0, 0, 0, 7, 8,
|
||||
10, 8, 8, 10, 10, 3, 1, 2
|
||||
int objcumber[NUMOFOBJECTS] = {
|
||||
1, 5, 0, 150, 10, 1, 5, 2,
|
||||
2, 1, 5, 10, 1, 1, 10, 1,
|
||||
1, 1, 1, 1, 7, 5, 4, 0,
|
||||
0, 1, 1, 1, 1, 5, 4, 4,
|
||||
1, 0, 0, 0, 1, 0, 0, 1,
|
||||
1, 1, 3, 1, 0, 0, 1, 0,
|
||||
0, 0, 10, 0, 0, 0, 7, 8,
|
||||
10, 8, 8, 10, 10, 3, 1, 2
|
||||
};
|
||||
|
||||
int win = 1;
|
||||
int matchcount = 20;
|
||||
int followgod = -1;
|
||||
int followfight = -1;
|
||||
int win = 1;
|
||||
int matchcount = 20;
|
||||
int followgod = -1;
|
||||
int followfight = -1;
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: init.c,v 1.6 1997/10/10 11:40:01 lukem Exp $ */
|
||||
/* $NetBSD: init.c,v 1.7 1997/10/11 02:07:25 lukem Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1993
|
||||
@ -38,15 +38,15 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)init.c 8.4 (Berkeley) 4/30/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: init.c,v 1.6 1997/10/10 11:40:01 lukem Exp $");
|
||||
__RCSID("$NetBSD: init.c,v 1.7 1997/10/11 02:07:25 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif /* not lint */
|
||||
|
||||
#include "extern.h"
|
||||
|
||||
void
|
||||
initialize(startup)
|
||||
char startup;
|
||||
char startup;
|
||||
{
|
||||
struct objs *p;
|
||||
|
||||
@ -75,7 +75,7 @@ initialize(startup)
|
||||
|
||||
void
|
||||
getutmp(uname)
|
||||
char *uname;
|
||||
char *uname;
|
||||
{
|
||||
struct passwd *ptr;
|
||||
|
||||
@ -83,7 +83,7 @@ getutmp(uname)
|
||||
strcpy(uname, ptr ? ptr->pw_name : "");
|
||||
}
|
||||
|
||||
char *list[] = { /* hereditary wizards */
|
||||
char *list[] = { /* hereditary wizards */
|
||||
"riggle",
|
||||
"chris",
|
||||
"edward",
|
||||
@ -94,7 +94,7 @@ char *list[] = { /* hereditary wizards */
|
||||
0
|
||||
};
|
||||
|
||||
char *badguys[] = {
|
||||
char *badguys[] = {
|
||||
"wnj",
|
||||
"root",
|
||||
"ted",
|
||||
@ -103,9 +103,9 @@ char *badguys[] = {
|
||||
|
||||
int
|
||||
wizard(uname)
|
||||
char *uname;
|
||||
char *uname;
|
||||
{
|
||||
int flag;
|
||||
int flag;
|
||||
|
||||
if ((flag = checkout(uname)) != 0)
|
||||
printf("You are the Great wizard %s.\n", uname);
|
||||
@ -114,9 +114,9 @@ wizard(uname)
|
||||
|
||||
int
|
||||
checkout(uname)
|
||||
char *uname;
|
||||
char *uname;
|
||||
{
|
||||
char **ptr;
|
||||
char **ptr;
|
||||
|
||||
for (ptr = list; *ptr; ptr++)
|
||||
if (strcmp(*ptr, uname) == 0)
|
||||
@ -124,7 +124,7 @@ checkout(uname)
|
||||
for (ptr = badguys; *ptr; ptr++)
|
||||
if (strcmp(*ptr, uname) == 0) {
|
||||
printf("You are the Poor anti-wizard %s. Good Luck!\n",
|
||||
uname);
|
||||
uname);
|
||||
CUMBER = 3;
|
||||
WEIGHT = 9; /* that'll get him! */
|
||||
ourclock = 10;
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: misc.c,v 1.5 1997/10/10 11:40:04 lukem Exp $ */
|
||||
/* $NetBSD: misc.c,v 1.6 1997/10/11 02:07:27 lukem Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1993
|
||||
@ -38,19 +38,19 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)misc.c 8.2 (Berkeley) 4/28/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: misc.c,v 1.5 1997/10/10 11:40:04 lukem Exp $");
|
||||
__RCSID("$NetBSD: misc.c,v 1.6 1997/10/11 02:07:27 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif /* not lint */
|
||||
|
||||
#include "extern.h"
|
||||
|
||||
int
|
||||
card(array, size) /* for beenthere, injuries */
|
||||
char *array;
|
||||
int size;
|
||||
char *array;
|
||||
int size;
|
||||
{
|
||||
char *end = array + size;
|
||||
int i = 0;
|
||||
char *end = array + size;
|
||||
int i = 0;
|
||||
|
||||
while (array < end)
|
||||
if (*array++)
|
||||
@ -62,10 +62,10 @@ int
|
||||
ucard(array)
|
||||
unsigned int *array;
|
||||
{
|
||||
int j = 0, n;
|
||||
int j = 0, n;
|
||||
|
||||
for (n = 0; n < NUMOFOBJECTS; n++)
|
||||
if (testbit(array, n))
|
||||
j++;
|
||||
j++;
|
||||
return (j);
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: nightobjs.c,v 1.5 1997/10/10 11:40:11 lukem Exp $ */
|
||||
/* $NetBSD: nightobjs.c,v 1.6 1997/10/11 02:07:31 lukem Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1993
|
||||
@ -38,70 +38,70 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)nightobjs.c 8.2 (Berkeley) 4/28/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: nightobjs.c,v 1.5 1997/10/10 11:40:11 lukem Exp $");
|
||||
__RCSID("$NetBSD: nightobjs.c,v 1.6 1997/10/11 02:07:31 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif /* not lint */
|
||||
|
||||
#include "extern.h"
|
||||
|
||||
struct objs nightobjs[] = {
|
||||
{ 218, PAJAMAS },
|
||||
{ 235, NATIVE },
|
||||
{ 92, PAPAYAS },
|
||||
{ 92, PINEAPPLE },
|
||||
{ 92, KIWI },
|
||||
{ 92, MANGO },
|
||||
{ 92, NATIVE },
|
||||
{ 92, MAN },
|
||||
{ 181, LAMPON },
|
||||
{ 236, LAMPON },
|
||||
{ 92, LAMPON },
|
||||
{ 216, WOODSMAN },
|
||||
{ 216, DEADWOOD },
|
||||
{ 216, MALLET },
|
||||
{ 168, WOODSMAN },
|
||||
{ 168, DEADWOOD },
|
||||
{ 168, MALLET },
|
||||
{ 170, WOODSMAN },
|
||||
{ 170, DEADWOOD },
|
||||
{ 170, MALLET },
|
||||
{ 124, SHIELD },
|
||||
{ 124, HALBERD },
|
||||
{ 124, ELF },
|
||||
{ 144, SHIELD },
|
||||
{ 144, HALBERD },
|
||||
{ 144, ELF },
|
||||
{ 113, SHIELD },
|
||||
{ 113, HALBERD },
|
||||
{ 113, ELF },
|
||||
{ 161, SHIELD },
|
||||
{ 161, HALBERD },
|
||||
{ 161, ELF },
|
||||
{ 169, SHIELD },
|
||||
{ 169, HALBERD },
|
||||
{ 169, ELF },
|
||||
{ 182, SHIELD },
|
||||
{ 182, HALBERD },
|
||||
{ 182, ELF },
|
||||
{ 198, SHIELD },
|
||||
{ 198, HALBERD },
|
||||
{ 198, ELF },
|
||||
{ 212, SHIELD },
|
||||
{ 212, HALBERD },
|
||||
{ 212, ELF },
|
||||
{ 216, SHIELD },
|
||||
{ 216, HALBERD },
|
||||
{ 216, ELF },
|
||||
{ 226, SHIELD },
|
||||
{ 226, HALBERD },
|
||||
{ 226, ELF },
|
||||
{ 228, SHIELD },
|
||||
{ 228, HALBERD },
|
||||
{ 228, ELF },
|
||||
{ 68, CYLON },
|
||||
{ 144, SHOVEL },
|
||||
{ 249, FOOT },
|
||||
{ 250, FOOT },
|
||||
{ 93, PAPAYAS },
|
||||
{ 0 }
|
||||
{218, PAJAMAS},
|
||||
{235, NATIVE},
|
||||
{92, PAPAYAS},
|
||||
{92, PINEAPPLE},
|
||||
{92, KIWI},
|
||||
{92, MANGO},
|
||||
{92, NATIVE},
|
||||
{92, MAN},
|
||||
{181, LAMPON},
|
||||
{236, LAMPON},
|
||||
{92, LAMPON},
|
||||
{216, WOODSMAN},
|
||||
{216, DEADWOOD},
|
||||
{216, MALLET},
|
||||
{168, WOODSMAN},
|
||||
{168, DEADWOOD},
|
||||
{168, MALLET},
|
||||
{170, WOODSMAN},
|
||||
{170, DEADWOOD},
|
||||
{170, MALLET},
|
||||
{124, SHIELD},
|
||||
{124, HALBERD},
|
||||
{124, ELF},
|
||||
{144, SHIELD},
|
||||
{144, HALBERD},
|
||||
{144, ELF},
|
||||
{113, SHIELD},
|
||||
{113, HALBERD},
|
||||
{113, ELF},
|
||||
{161, SHIELD},
|
||||
{161, HALBERD},
|
||||
{161, ELF},
|
||||
{169, SHIELD},
|
||||
{169, HALBERD},
|
||||
{169, ELF},
|
||||
{182, SHIELD},
|
||||
{182, HALBERD},
|
||||
{182, ELF},
|
||||
{198, SHIELD},
|
||||
{198, HALBERD},
|
||||
{198, ELF},
|
||||
{212, SHIELD},
|
||||
{212, HALBERD},
|
||||
{212, ELF},
|
||||
{216, SHIELD},
|
||||
{216, HALBERD},
|
||||
{216, ELF},
|
||||
{226, SHIELD},
|
||||
{226, HALBERD},
|
||||
{226, ELF},
|
||||
{228, SHIELD},
|
||||
{228, HALBERD},
|
||||
{228, ELF},
|
||||
{68, CYLON},
|
||||
{144, SHOVEL},
|
||||
{249, FOOT},
|
||||
{250, FOOT},
|
||||
{93, PAPAYAS},
|
||||
{0}
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: parse.c,v 1.5 1997/10/10 11:40:13 lukem Exp $ */
|
||||
/* $NetBSD: parse.c,v 1.6 1997/10/11 02:07:33 lukem Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1993
|
||||
@ -38,9 +38,9 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)parse.c 8.2 (Berkeley) 4/28/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: parse.c,v 1.5 1997/10/10 11:40:13 lukem Exp $");
|
||||
__RCSID("$NetBSD: parse.c,v 1.6 1997/10/11 02:07:33 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif /* not lint */
|
||||
|
||||
#include "extern.h"
|
||||
|
||||
@ -55,9 +55,9 @@ wordinit()
|
||||
|
||||
int
|
||||
hash(s)
|
||||
char *s;
|
||||
char *s;
|
||||
{
|
||||
int hashval = 0;
|
||||
int hashval = 0;
|
||||
|
||||
while (*s) {
|
||||
hashval += *s++;
|
||||
@ -69,7 +69,7 @@ hash(s)
|
||||
|
||||
struct wlist *
|
||||
lookup(s)
|
||||
char *s;
|
||||
char *s;
|
||||
{
|
||||
struct wlist *wp;
|
||||
|
||||
@ -83,7 +83,7 @@ void
|
||||
install(wp)
|
||||
struct wlist *wp;
|
||||
{
|
||||
int hashval;
|
||||
int hashval;
|
||||
|
||||
if (lookup(wp->string) == NULL) {
|
||||
hashval = hash(wp->string);
|
||||
@ -97,16 +97,16 @@ void
|
||||
parse()
|
||||
{
|
||||
struct wlist *wp;
|
||||
int n;
|
||||
int n;
|
||||
|
||||
wordnumber = 0; /* for cypher */
|
||||
wordnumber = 0; /* for cypher */
|
||||
for (n = 0; n <= wordcount; n++) {
|
||||
if ((wp = lookup(words[n])) == NULL) {
|
||||
wordvalue[n] = -1;
|
||||
wordtype[n] = -1;
|
||||
} else {
|
||||
wordvalue[n] = wp -> value;
|
||||
wordtype[n] = wp -> article;
|
||||
wordvalue[n] = wp->value;
|
||||
wordtype[n] = wp->article;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: room.c,v 1.5 1997/10/10 11:40:16 lukem Exp $ */
|
||||
/* $NetBSD: room.c,v 1.6 1997/10/11 02:07:35 lukem Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1993
|
||||
@ -38,18 +38,18 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)room.c 8.2 (Berkeley) 4/28/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: room.c,v 1.5 1997/10/10 11:40:16 lukem Exp $");
|
||||
__RCSID("$NetBSD: room.c,v 1.6 1997/10/11 02:07:35 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif /* not lint */
|
||||
|
||||
#include "extern.h"
|
||||
|
||||
void
|
||||
writedes()
|
||||
{
|
||||
int compass;
|
||||
char *p;
|
||||
int c;
|
||||
int compass;
|
||||
char *p;
|
||||
int c;
|
||||
|
||||
printf("\n\t%s\n", location[position].name);
|
||||
if (beenthere[position] < 3) {
|
||||
@ -69,7 +69,7 @@ void
|
||||
printobjs()
|
||||
{
|
||||
unsigned int *p = location[position].objects;
|
||||
int n;
|
||||
int n;
|
||||
|
||||
printf("\n");
|
||||
for (n = 0; n < NUMOFOBJECTS; n++)
|
||||
@ -81,161 +81,161 @@ void
|
||||
whichway(here)
|
||||
struct room here;
|
||||
{
|
||||
switch(direction) {
|
||||
switch (direction) {
|
||||
|
||||
case NORTH:
|
||||
left = here.west;
|
||||
right = here.east;
|
||||
ahead = here.north;
|
||||
back = here.south;
|
||||
break;
|
||||
|
||||
case SOUTH:
|
||||
left = here.east;
|
||||
right = here.west;
|
||||
ahead = here.south;
|
||||
back = here.north;
|
||||
break;
|
||||
case NORTH:
|
||||
left = here.west;
|
||||
right = here.east;
|
||||
ahead = here.north;
|
||||
back = here.south;
|
||||
break;
|
||||
|
||||
case EAST:
|
||||
left = here.north;
|
||||
right = here.south;
|
||||
ahead = here.east;
|
||||
back = here.west;
|
||||
break;
|
||||
case SOUTH:
|
||||
left = here.east;
|
||||
right = here.west;
|
||||
ahead = here.south;
|
||||
back = here.north;
|
||||
break;
|
||||
|
||||
case WEST:
|
||||
left = here.south;
|
||||
right = here.north;
|
||||
ahead = here.west;
|
||||
back = here.east;
|
||||
break;
|
||||
case EAST:
|
||||
left = here.north;
|
||||
right = here.south;
|
||||
ahead = here.east;
|
||||
back = here.west;
|
||||
break;
|
||||
|
||||
case WEST:
|
||||
left = here.south;
|
||||
right = here.north;
|
||||
ahead = here.west;
|
||||
back = here.east;
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
char *
|
||||
char *
|
||||
truedirec(way, option)
|
||||
int way;
|
||||
char option;
|
||||
int way;
|
||||
char option;
|
||||
{
|
||||
switch(way) {
|
||||
switch (way) {
|
||||
|
||||
case NORTH:
|
||||
switch (direction) {
|
||||
case NORTH:
|
||||
switch(direction) {
|
||||
case NORTH:
|
||||
return("ahead");
|
||||
case SOUTH:
|
||||
return(option == '+' ? "behind you" :
|
||||
"back");
|
||||
case EAST:
|
||||
return("left");
|
||||
case WEST:
|
||||
return("right");
|
||||
}
|
||||
|
||||
return ("ahead");
|
||||
case SOUTH:
|
||||
switch(direction) {
|
||||
case NORTH:
|
||||
return(option == '+' ? "behind you" :
|
||||
"back");
|
||||
case SOUTH:
|
||||
return("ahead");
|
||||
case EAST:
|
||||
return("right");
|
||||
case WEST:
|
||||
return("left");
|
||||
}
|
||||
|
||||
return (option == '+' ? "behind you" :
|
||||
"back");
|
||||
case EAST:
|
||||
switch(direction) {
|
||||
case NORTH:
|
||||
return("right");
|
||||
case SOUTH:
|
||||
return("left");
|
||||
case EAST:
|
||||
return("ahead");
|
||||
case WEST:
|
||||
return(option == '+' ? "behind you" :
|
||||
"back");
|
||||
}
|
||||
|
||||
return ("left");
|
||||
case WEST:
|
||||
switch(direction) {
|
||||
case NORTH:
|
||||
return("left");
|
||||
case SOUTH:
|
||||
return("right");
|
||||
case EAST:
|
||||
return(option == '+' ? "behind you" :
|
||||
"back");
|
||||
case WEST:
|
||||
return("ahead");
|
||||
}
|
||||
return ("right");
|
||||
}
|
||||
|
||||
default:
|
||||
printf("Error: room %d. More than four directions wanted.", position);
|
||||
return("!!");
|
||||
}
|
||||
case SOUTH:
|
||||
switch (direction) {
|
||||
case NORTH:
|
||||
return (option == '+' ? "behind you" :
|
||||
"back");
|
||||
case SOUTH:
|
||||
return ("ahead");
|
||||
case EAST:
|
||||
return ("right");
|
||||
case WEST:
|
||||
return ("left");
|
||||
}
|
||||
|
||||
case EAST:
|
||||
switch (direction) {
|
||||
case NORTH:
|
||||
return ("right");
|
||||
case SOUTH:
|
||||
return ("left");
|
||||
case EAST:
|
||||
return ("ahead");
|
||||
case WEST:
|
||||
return (option == '+' ? "behind you" :
|
||||
"back");
|
||||
}
|
||||
|
||||
case WEST:
|
||||
switch (direction) {
|
||||
case NORTH:
|
||||
return ("left");
|
||||
case SOUTH:
|
||||
return ("right");
|
||||
case EAST:
|
||||
return (option == '+' ? "behind you" :
|
||||
"back");
|
||||
case WEST:
|
||||
return ("ahead");
|
||||
}
|
||||
|
||||
default:
|
||||
printf("Error: room %d. More than four directions wanted.", position);
|
||||
return ("!!");
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
newway(thisway)
|
||||
int thisway;
|
||||
int thisway;
|
||||
{
|
||||
switch(direction){
|
||||
switch (direction) {
|
||||
|
||||
case NORTH:
|
||||
switch(thisway){
|
||||
case LEFT:
|
||||
direction = WEST;
|
||||
break;
|
||||
case RIGHT:
|
||||
direction = EAST;
|
||||
break;
|
||||
case BACK:
|
||||
direction = SOUTH;
|
||||
break;
|
||||
}
|
||||
case NORTH:
|
||||
switch (thisway) {
|
||||
case LEFT:
|
||||
direction = WEST;
|
||||
break;
|
||||
case SOUTH:
|
||||
switch(thisway){
|
||||
case LEFT:
|
||||
direction = EAST;
|
||||
break;
|
||||
case RIGHT:
|
||||
direction = WEST;
|
||||
break;
|
||||
case BACK:
|
||||
direction = NORTH;
|
||||
break;
|
||||
}
|
||||
case RIGHT:
|
||||
direction = EAST;
|
||||
break;
|
||||
case EAST:
|
||||
switch(thisway){
|
||||
case LEFT:
|
||||
direction = NORTH;
|
||||
break;
|
||||
case RIGHT:
|
||||
direction = SOUTH;
|
||||
break;
|
||||
case BACK:
|
||||
direction = WEST;
|
||||
break;
|
||||
}
|
||||
case BACK:
|
||||
direction = SOUTH;
|
||||
break;
|
||||
case WEST:
|
||||
switch(thisway){
|
||||
case LEFT:
|
||||
direction = SOUTH;
|
||||
break;
|
||||
case RIGHT:
|
||||
direction = NORTH;
|
||||
break;
|
||||
case BACK:
|
||||
direction = EAST;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SOUTH:
|
||||
switch (thisway) {
|
||||
case LEFT:
|
||||
direction = EAST;
|
||||
break;
|
||||
}
|
||||
case RIGHT:
|
||||
direction = WEST;
|
||||
break;
|
||||
case BACK:
|
||||
direction = NORTH;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case EAST:
|
||||
switch (thisway) {
|
||||
case LEFT:
|
||||
direction = NORTH;
|
||||
break;
|
||||
case RIGHT:
|
||||
direction = SOUTH;
|
||||
break;
|
||||
case BACK:
|
||||
direction = WEST;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case WEST:
|
||||
switch (thisway) {
|
||||
case LEFT:
|
||||
direction = SOUTH;
|
||||
break;
|
||||
case RIGHT:
|
||||
direction = NORTH;
|
||||
break;
|
||||
case BACK:
|
||||
direction = EAST;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: save.c,v 1.5 1997/10/10 11:40:19 lukem Exp $ */
|
||||
/* $NetBSD: save.c,v 1.6 1997/10/11 02:07:37 lukem Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1993
|
||||
@ -38,26 +38,26 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)save.c 8.2 (Berkeley) 4/28/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: save.c,v 1.5 1997/10/10 11:40:19 lukem Exp $");
|
||||
__RCSID("$NetBSD: save.c,v 1.6 1997/10/11 02:07:37 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif /* not lint */
|
||||
|
||||
#include "extern.h"
|
||||
|
||||
void
|
||||
restore()
|
||||
{
|
||||
char *home;
|
||||
char home1[100];
|
||||
int n;
|
||||
int tmp;
|
||||
FILE *fp;
|
||||
char *home;
|
||||
char home1[100];
|
||||
int n;
|
||||
int tmp;
|
||||
FILE *fp;
|
||||
|
||||
home = getenv("HOME");
|
||||
strcpy(home1, home);
|
||||
strcat(home1, "/Bstar");
|
||||
if ((fp = fopen(home1, "r")) == 0) {
|
||||
perror(home1);
|
||||
warn("fopen %s", home1);
|
||||
return;
|
||||
}
|
||||
fread(&WEIGHT, sizeof WEIGHT, 1, fp);
|
||||
@ -100,17 +100,17 @@ restore()
|
||||
void
|
||||
save()
|
||||
{
|
||||
char *home;
|
||||
char home1[100];
|
||||
int n;
|
||||
int tmp;
|
||||
FILE *fp;
|
||||
char *home;
|
||||
char home1[100];
|
||||
int n;
|
||||
int tmp;
|
||||
FILE *fp;
|
||||
|
||||
home = getenv("HOME");
|
||||
strcpy(home1, home);
|
||||
strcat(home1, "/Bstar");
|
||||
if ((fp = fopen(home1, "w")) == 0) {
|
||||
perror(home1);
|
||||
warn("fopen %s", home1);
|
||||
return;
|
||||
}
|
||||
printf("Saved in %s.\n", home1);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: words.c,v 1.5 1997/10/10 11:40:22 lukem Exp $ */
|
||||
/* $NetBSD: words.c,v 1.6 1997/10/11 02:07:39 lukem Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1993
|
||||
@ -38,176 +38,176 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)words.c 8.2 (Berkeley) 4/28/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: words.c,v 1.5 1997/10/10 11:40:22 lukem Exp $");
|
||||
__RCSID("$NetBSD: words.c,v 1.6 1997/10/11 02:07:39 lukem Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif /* not lint */
|
||||
|
||||
#include "extern.h"
|
||||
|
||||
struct wlist wlist[] = {
|
||||
{ "knife", KNIFE, OBJECT },
|
||||
{ "sword", SWORD, NOUNS },
|
||||
{ "scabbard", SWORD, OBJECT },
|
||||
{ "fine", SWORD, OBJECT },
|
||||
{ "two-handed", TWO_HANDED, OBJECT },
|
||||
{ "cleaver", CLEAVER, OBJECT },
|
||||
{ "broadsword", BROAD, OBJECT },
|
||||
{ "mail", MAIL, OBJECT },
|
||||
{ "coat", MAIL, OBJECT },
|
||||
{ "helmet", HELM, OBJECT },
|
||||
{ "shield", SHIELD, OBJECT },
|
||||
{ "maid", MAID, OBJECT },
|
||||
{ "maid's", MAID, OBJECT },
|
||||
{ "body", BODY, NOUNS },
|
||||
{ "viper", VIPER, OBJECT },
|
||||
{ "lamp", LAMPON, OBJECT },
|
||||
{ "lantern", LAMPON, OBJECT },
|
||||
{ "shoes", SHOES, OBJECT },
|
||||
{ "pajamas", PAJAMAS, OBJECT },
|
||||
{ "robe", ROBE, OBJECT },
|
||||
{ "amulet", AMULET, NOUNS },
|
||||
{ "medallion", MEDALION, NOUNS },
|
||||
{ "talisman", TALISMAN, NOUNS },
|
||||
{ "woodsman", DEADWOOD, OBJECT },
|
||||
{ "woodsman's", DEADWOOD, OBJECT },
|
||||
{ "mallet", MALLET, OBJECT },
|
||||
{ "laser", LASER, OBJECT },
|
||||
{ "pistol", LASER, OBJECT },
|
||||
{ "blaster", LASER, OBJECT },
|
||||
{ "gun", LASER, OBJECT },
|
||||
{ "goddess", NORMGOD, NOUNS },
|
||||
{ "grenade", GRENADE, OBJECT },
|
||||
{ "chain", CHAIN, OBJECT },
|
||||
{ "rope", ROPE, OBJECT },
|
||||
{ "levis", LEVIS, OBJECT },
|
||||
{ "pants", LEVIS, OBJECT },
|
||||
{ "mace", MACE, OBJECT },
|
||||
{ "shovel", SHOVEL, OBJECT },
|
||||
{ "halberd", HALBERD, OBJECT },
|
||||
{ "compass", COMPASS, OBJECT },
|
||||
{ "elf", ELF, OBJECT },
|
||||
{ "coins", COINS, OBJECT },
|
||||
{ "matches", MATCHES, OBJECT },
|
||||
{ "match", MATCHES, OBJECT },
|
||||
{ "book", MATCHES, OBJECT },
|
||||
{ "man", MAN, NOUNS },
|
||||
{ "papayas", PAPAYAS, OBJECT },
|
||||
{ "pineapple", PINEAPPLE, OBJECT },
|
||||
{ "kiwi", KIWI, OBJECT },
|
||||
{ "coconuts", COCONUTS, OBJECT },
|
||||
{ "mango", MANGO, OBJECT },
|
||||
{ "ring", RING, OBJECT },
|
||||
{ "potion", POTION, OBJECT },
|
||||
{ "bracelet", BRACELET, OBJECT },
|
||||
{ "timer", TIMER, NOUNS },
|
||||
{ "bomb", BOMB, OBJECT },
|
||||
{ "warhead", BOMB, OBJECT },
|
||||
{ "girl", NATIVE, NOUNS },
|
||||
{ "native", NATIVE, NOUNS },
|
||||
{ "horse", HORSE, OBJECT },
|
||||
{ "stallion", HORSE, OBJECT },
|
||||
{ "car", CAR, OBJECT },
|
||||
{ "volare", CAR, OBJECT },
|
||||
{ "pot", POT, OBJECT },
|
||||
{ "jewels", POT, OBJECT },
|
||||
{ "bar", BAR, OBJECT },
|
||||
{ "diamond", BLOCK, OBJECT },
|
||||
{ "block", BLOCK, OBJECT },
|
||||
{ "up", UP, VERB },
|
||||
{ "u", UP, VERB },
|
||||
{ "down", DOWN, VERB },
|
||||
{ "d", DOWN, VERB },
|
||||
{ "ahead", AHEAD, VERB },
|
||||
{ "a", AHEAD, VERB },
|
||||
{ "back", BACK, VERB },
|
||||
{ "b", BACK, VERB },
|
||||
{ "right", RIGHT, VERB },
|
||||
{ "r", RIGHT, VERB },
|
||||
{ "left", LEFT, VERB },
|
||||
{ "l", LEFT, VERB },
|
||||
{ "take", TAKE, VERB },
|
||||
{ "get", TAKE, VERB },
|
||||
{ "use", USE, VERB },
|
||||
{ "look", LOOK, VERB },
|
||||
{ "lo", LOOK, VERB },
|
||||
{ "quit", QUIT, VERB },
|
||||
{ "q", QUIT, VERB },
|
||||
{ "su", SU, VERB },
|
||||
{ "drop", DROP, VERB },
|
||||
{ "draw", DRAW, VERB },
|
||||
{ "pull", DRAW, VERB },
|
||||
{ "carry", DRAW, VERB },
|
||||
{ "wear", WEARIT, VERB },
|
||||
{ "sheathe", WEARIT, VERB },
|
||||
{ "put", PUT, VERB },
|
||||
{ "buckle", PUT, VERB },
|
||||
{ "strap", PUT, VERB },
|
||||
{ "tie", PUT, VERB },
|
||||
{ "inven", INVEN, VERB },
|
||||
{ "i", INVEN, VERB },
|
||||
{ "everything", EVERYTHING, OBJECT },
|
||||
{ "all", EVERYTHING, OBJECT },
|
||||
{ "and", AND, CONJ },
|
||||
{ "kill", KILL, VERB },
|
||||
{ "fight", KILL, VERB },
|
||||
{ "ravage", RAVAGE, VERB },
|
||||
{ "rape", RAVAGE, VERB },
|
||||
{ "undress", UNDRESS, VERB },
|
||||
{ "throw", THROW, VERB },
|
||||
{ "launch", LAUNCH, VERB },
|
||||
{ "land", LANDIT, VERB },
|
||||
{ "light", LIGHT, VERB },
|
||||
{ "strike", LIGHT, VERB },
|
||||
{ "follow", FOLLOW, VERB },
|
||||
{ "chase", FOLLOW, VERB },
|
||||
{ "kiss", KISS, VERB },
|
||||
{ "love", LOVE, VERB },
|
||||
{ "fuck", LOVE, VERB },
|
||||
{ "give", GIVE, VERB },
|
||||
{ "smite", SMITE, VERB },
|
||||
{ "attack", SMITE, VERB },
|
||||
{ "swing", SMITE, VERB },
|
||||
{ "stab", SMITE, VERB },
|
||||
{ "slice", SMITE, VERB },
|
||||
{ "cut", SMITE, VERB },
|
||||
{ "hack", SMITE, VERB },
|
||||
{ "shoot", SHOOT, VERB },
|
||||
{ "blast", SHOOT, VERB },
|
||||
{ "on", ON, PREPS },
|
||||
{ "off", OFF, PREPS },
|
||||
{ "time", TIME, VERB },
|
||||
{ "sleep", SLEEP, VERB },
|
||||
{ "dig", DIG, VERB },
|
||||
{ "eat", EAT, VERB },
|
||||
{ "swim", SWIM, VERB },
|
||||
{ "drink", DRINK, VERB },
|
||||
{ "door", DOOR, NOUNS },
|
||||
{ "save", SAVE, VERB },
|
||||
{ "ride", RIDE, VERB },
|
||||
{ "mount", RIDE, VERB },
|
||||
{ "drive", DRIVE, VERB },
|
||||
{ "start", DRIVE, VERB },
|
||||
{ "score", SCORE, VERB },
|
||||
{ "points", SCORE, VERB },
|
||||
{ "bury", BURY, VERB },
|
||||
{ "jump", JUMP, VERB },
|
||||
{ "kick", KICK, VERB },
|
||||
{ "kerosene", 0, ADJS },
|
||||
{ "plumed", 0, ADJS },
|
||||
{ "ancient", 0, ADJS },
|
||||
{ "golden", 0, ADJS },
|
||||
{ "gold", 0, ADJS },
|
||||
{ "ostrich", 0, ADJS },
|
||||
{ "rusty", 0, ADJS },
|
||||
{ "old", 0, ADJS },
|
||||
{ "dented", 0, ADJS },
|
||||
{ "blue", 0, ADJS },
|
||||
{ "purple", 0, ADJS },
|
||||
{ "kingly", 0, ADJS },
|
||||
{ "the", 0, ADJS },
|
||||
{ "climb", 0, ADJS },
|
||||
{ "move", 0, ADJS },
|
||||
{ "make", 0, ADJS },
|
||||
{ "to", 0, ADJS },
|
||||
{ 0 }
|
||||
{"knife", KNIFE, OBJECT},
|
||||
{"sword", SWORD, NOUNS},
|
||||
{"scabbard", SWORD, OBJECT},
|
||||
{"fine", SWORD, OBJECT},
|
||||
{"two-handed", TWO_HANDED, OBJECT},
|
||||
{"cleaver", CLEAVER, OBJECT},
|
||||
{"broadsword", BROAD, OBJECT},
|
||||
{"mail", MAIL, OBJECT},
|
||||
{"coat", MAIL, OBJECT},
|
||||
{"helmet", HELM, OBJECT},
|
||||
{"shield", SHIELD, OBJECT},
|
||||
{"maid", MAID, OBJECT},
|
||||
{"maid's", MAID, OBJECT},
|
||||
{"body", BODY, NOUNS},
|
||||
{"viper", VIPER, OBJECT},
|
||||
{"lamp", LAMPON, OBJECT},
|
||||
{"lantern", LAMPON, OBJECT},
|
||||
{"shoes", SHOES, OBJECT},
|
||||
{"pajamas", PAJAMAS, OBJECT},
|
||||
{"robe", ROBE, OBJECT},
|
||||
{"amulet", AMULET, NOUNS},
|
||||
{"medallion", MEDALION, NOUNS},
|
||||
{"talisman", TALISMAN, NOUNS},
|
||||
{"woodsman", DEADWOOD, OBJECT},
|
||||
{"woodsman's", DEADWOOD, OBJECT},
|
||||
{"mallet", MALLET, OBJECT},
|
||||
{"laser", LASER, OBJECT},
|
||||
{"pistol", LASER, OBJECT},
|
||||
{"blaster", LASER, OBJECT},
|
||||
{"gun", LASER, OBJECT},
|
||||
{"goddess", NORMGOD, NOUNS},
|
||||
{"grenade", GRENADE, OBJECT},
|
||||
{"chain", CHAIN, OBJECT},
|
||||
{"rope", ROPE, OBJECT},
|
||||
{"levis", LEVIS, OBJECT},
|
||||
{"pants", LEVIS, OBJECT},
|
||||
{"mace", MACE, OBJECT},
|
||||
{"shovel", SHOVEL, OBJECT},
|
||||
{"halberd", HALBERD, OBJECT},
|
||||
{"compass", COMPASS, OBJECT},
|
||||
{"elf", ELF, OBJECT},
|
||||
{"coins", COINS, OBJECT},
|
||||
{"matches", MATCHES, OBJECT},
|
||||
{"match", MATCHES, OBJECT},
|
||||
{"book", MATCHES, OBJECT},
|
||||
{"man", MAN, NOUNS},
|
||||
{"papayas", PAPAYAS, OBJECT},
|
||||
{"pineapple", PINEAPPLE, OBJECT},
|
||||
{"kiwi", KIWI, OBJECT},
|
||||
{"coconuts", COCONUTS, OBJECT},
|
||||
{"mango", MANGO, OBJECT},
|
||||
{"ring", RING, OBJECT},
|
||||
{"potion", POTION, OBJECT},
|
||||
{"bracelet", BRACELET, OBJECT},
|
||||
{"timer", TIMER, NOUNS},
|
||||
{"bomb", BOMB, OBJECT},
|
||||
{"warhead", BOMB, OBJECT},
|
||||
{"girl", NATIVE, NOUNS},
|
||||
{"native", NATIVE, NOUNS},
|
||||
{"horse", HORSE, OBJECT},
|
||||
{"stallion", HORSE, OBJECT},
|
||||
{"car", CAR, OBJECT},
|
||||
{"volare", CAR, OBJECT},
|
||||
{"pot", POT, OBJECT},
|
||||
{"jewels", POT, OBJECT},
|
||||
{"bar", BAR, OBJECT},
|
||||
{"diamond", BLOCK, OBJECT},
|
||||
{"block", BLOCK, OBJECT},
|
||||
{"up", UP, VERB},
|
||||
{"u", UP, VERB},
|
||||
{"down", DOWN, VERB},
|
||||
{"d", DOWN, VERB},
|
||||
{"ahead", AHEAD, VERB},
|
||||
{"a", AHEAD, VERB},
|
||||
{"back", BACK, VERB},
|
||||
{"b", BACK, VERB},
|
||||
{"right", RIGHT, VERB},
|
||||
{"r", RIGHT, VERB},
|
||||
{"left", LEFT, VERB},
|
||||
{"l", LEFT, VERB},
|
||||
{"take", TAKE, VERB},
|
||||
{"get", TAKE, VERB},
|
||||
{"use", USE, VERB},
|
||||
{"look", LOOK, VERB},
|
||||
{"lo", LOOK, VERB},
|
||||
{"quit", QUIT, VERB},
|
||||
{"q", QUIT, VERB},
|
||||
{"su", SU, VERB},
|
||||
{"drop", DROP, VERB},
|
||||
{"draw", DRAW, VERB},
|
||||
{"pull", DRAW, VERB},
|
||||
{"carry", DRAW, VERB},
|
||||
{"wear", WEARIT, VERB},
|
||||
{"sheathe", WEARIT, VERB},
|
||||
{"put", PUT, VERB},
|
||||
{"buckle", PUT, VERB},
|
||||
{"strap", PUT, VERB},
|
||||
{"tie", PUT, VERB},
|
||||
{"inven", INVEN, VERB},
|
||||
{"i", INVEN, VERB},
|
||||
{"everything", EVERYTHING, OBJECT},
|
||||
{"all", EVERYTHING, OBJECT},
|
||||
{"and", AND, CONJ},
|
||||
{"kill", KILL, VERB},
|
||||
{"fight", KILL, VERB},
|
||||
{"ravage", RAVAGE, VERB},
|
||||
{"rape", RAVAGE, VERB},
|
||||
{"undress", UNDRESS, VERB},
|
||||
{"throw", THROW, VERB},
|
||||
{"launch", LAUNCH, VERB},
|
||||
{"land", LANDIT, VERB},
|
||||
{"light", LIGHT, VERB},
|
||||
{"strike", LIGHT, VERB},
|
||||
{"follow", FOLLOW, VERB},
|
||||
{"chase", FOLLOW, VERB},
|
||||
{"kiss", KISS, VERB},
|
||||
{"love", LOVE, VERB},
|
||||
{"fuck", LOVE, VERB},
|
||||
{"give", GIVE, VERB},
|
||||
{"smite", SMITE, VERB},
|
||||
{"attack", SMITE, VERB},
|
||||
{"swing", SMITE, VERB},
|
||||
{"stab", SMITE, VERB},
|
||||
{"slice", SMITE, VERB},
|
||||
{"cut", SMITE, VERB},
|
||||
{"hack", SMITE, VERB},
|
||||
{"shoot", SHOOT, VERB},
|
||||
{"blast", SHOOT, VERB},
|
||||
{"on", ON, PREPS},
|
||||
{"off", OFF, PREPS},
|
||||
{"time", TIME, VERB},
|
||||
{"sleep", SLEEP, VERB},
|
||||
{"dig", DIG, VERB},
|
||||
{"eat", EAT, VERB},
|
||||
{"swim", SWIM, VERB},
|
||||
{"drink", DRINK, VERB},
|
||||
{"door", DOOR, NOUNS},
|
||||
{"save", SAVE, VERB},
|
||||
{"ride", RIDE, VERB},
|
||||
{"mount", RIDE, VERB},
|
||||
{"drive", DRIVE, VERB},
|
||||
{"start", DRIVE, VERB},
|
||||
{"score", SCORE, VERB},
|
||||
{"points", SCORE, VERB},
|
||||
{"bury", BURY, VERB},
|
||||
{"jump", JUMP, VERB},
|
||||
{"kick", KICK, VERB},
|
||||
{"kerosene", 0, ADJS},
|
||||
{"plumed", 0, ADJS},
|
||||
{"ancient", 0, ADJS},
|
||||
{"golden", 0, ADJS},
|
||||
{"gold", 0, ADJS},
|
||||
{"ostrich", 0, ADJS},
|
||||
{"rusty", 0, ADJS},
|
||||
{"old", 0, ADJS},
|
||||
{"dented", 0, ADJS},
|
||||
{"blue", 0, ADJS},
|
||||
{"purple", 0, ADJS},
|
||||
{"kingly", 0, ADJS},
|
||||
{"the", 0, ADJS},
|
||||
{"climb", 0, ADJS},
|
||||
{"move", 0, ADJS},
|
||||
{"make", 0, ADJS},
|
||||
{"to", 0, ADJS},
|
||||
{0}
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user