bool prompt = true;
extern void initialise();
-extern void score(long);
extern int action(FILE *, long, long, long);
void sig_handler(int signo)
/* Start-up, dwarf stuff */
game.zzword=RNDVOC(3,0);
game.novice=YES(stdin, WELCOME_YOU,CAVE_NEARBY,ARB_0);
- game.newloc = LOC_1;
- game.loc = LOC_1;
+ game.newloc = LOC_START;
+ game.loc = LOC_START;
game.limit=330;
if (game.novice)game.limit=1000;
break;
}
/* show score and exit */
- score(1);
+ score(quitgame);
}
static bool fallback_handler(char *buf)
int kk, stick, attack;
long tk[21];
- /* Dwarf stuff. See earlier comments for description of
+ /* Dwarf stuff. See earlier comments for description of
* variables. Remember sixth dwarf is pirate and is thus
* very different except for motion rules. */
/* He died during closing time. No resurrection. Tally up a
* death and exit. */
RSPEAK(DEATH_CLOSING);
- score(0);
+ score(endgame);
} else {
/* FIXME: Arithmetic on message numbers */
if (!YES(cmdin,WATCH_IT+game.numdie*2,WHICH_WAY+game.numdie*2,OK_MAN))
- score(0);
+ score(endgame);
if (game.numdie == MAXDIE)
- score(0);
+ score(endgame);
game.place[WATER]=0;
game.place[OIL]=0;
if (TOTING(LAMP))
int i=NOBJECTS + 1 - j;
if (TOTING(i)) {
/* Always leave lamp where it's accessible aboveground */
- DROP(i, (i == LAMP) ? 1 : game.oldlc2);
+ DROP(i, (i == LAMP) ? LOC_START : game.oldlc2);
}
}
- game.loc = LOC_3;
+ game.loc = LOC_BUILDING;
game.oldloc=game.loc;
}
}
/* Given the current location in "game.loc", and a motion verb number in
- * "K", put the new location in "game.newloc". The current loc is saved
+ * "motion", put the new location in "game.newloc". The current loc is saved
* in "game.oldloc" in case he wants to retreat. The current
* game.oldloc is saved in game.oldlc2, in case he dies. (if he
* does, game.newloc will be limbo, and game.oldloc will be what killed
}
else if (motion == LOOK) {
/* Look. Can't give more detail. Pretend it wasn't dark
- * (though it may "now" be dark) so he won't fall into a
+ * (though it may now be dark) so he won't fall into a
* pit while staring into the gloom. */
- if (game.detail < 3)RSPEAK(NO_MORE_DETAIL);
+ if (game.detail < 3)
+ RSPEAK(NO_MORE_DETAIL);
++game.detail;
game.wzdark=false;
game.abbrev[game.loc]=0;
}
else if (motion == CAVE) {
/* Cave. Different messages depending on whether above ground. */
- RSPEAK((OUTSID(game.loc) && game.loc != 8) ? FOLLOW_STREAM : NEED_DETAIL);
+ RSPEAK((OUTSID(game.loc) && game.loc != LOC_GRATE) ? FOLLOW_STREAM : NEED_DETAIL);
return true;
}
else {
if (MOD(scratchloc,1000) == 1 || MOD(scratchloc,1000) == motion)
break;
if (TRAVEL[kk] < 0) {
+ /* FIXME: Magic numbers! */
/* Non-applicable motion. Various messages depending on
* word given. */
int spk=CANT_APPLY;
* emerald. Note: travel table must include "useless"
* entries going through passage, which can never be used for
* actual motion, but can be spotted by "go back". */
+ /* FIXME: Arithmetic on location numbers */
game.newloc=99+100-game.loc;
if (game.holdng == 0 || (game.holdng == 1 && TOTING(EMRALD)))
return true;
BUG(20);
}
} while
- (false);
+ (false);
+ /* FIXME: Arithmetic on location number, becoming a message number */
RSPEAK(game.newloc-500);
game.newloc=game.loc;
return true;
* objects he might be carrying (lest he have some which
* could cause trouble, such as the keys). We describe the
* flash of light and trundle back. */
- game.prop[BOTTLE]=PUT(BOTTLE,LOC_115,1);
- game.prop[PLANT]=PUT(PLANT,LOC_115,0);
- game.prop[OYSTER]=PUT(OYSTER,LOC_115,0);
+ game.prop[BOTTLE]=PUT(BOTTLE,LOC_NE,1);
+ game.prop[PLANT]=PUT(PLANT,LOC_NE,0);
+ game.prop[OYSTER]=PUT(OYSTER,LOC_NE,0);
OBJTXT[OYSTER]=3;
- game.prop[LAMP]=PUT(LAMP,LOC_115,0);
- game.prop[ROD]=PUT(ROD,LOC_115,0);
- game.prop[DWARF]=PUT(DWARF,LOC_115,0);
- game.loc = LOC_115;
- game.oldloc = LOC_115;
- game.newloc = LOC_115;
+ game.prop[LAMP]=PUT(LAMP,LOC_NE,0);
+ game.prop[ROD]=PUT(ROD,LOC_NE,0);
+ game.prop[DWARF]=PUT(DWARF,LOC_NE,0);
+ game.loc = LOC_NE;
+ game.oldloc = LOC_NE;
+ game.newloc = LOC_NE;
/* Leave the grate with normal (non-negative) property.
* Reuse sign. */
- PUT(GRATE,LOC_116,0);
- PUT(SIGN,LOC_116,0);
+ PUT(GRATE,LOC_SW,0);
+ PUT(SIGN,LOC_SW,0);
++OBJTXT[SIGN];
- game.prop[SNAKE]=PUT(SNAKE,LOC_116,1);
- game.prop[BIRD]=PUT(BIRD,LOC_116,1);
- game.prop[CAGE]=PUT(CAGE,LOC_116,0);
- game.prop[ROD2]=PUT(ROD2,LOC_116,0);
- game.prop[PILLOW]=PUT(PILLOW,LOC_116,0);
+ game.prop[SNAKE]=PUT(SNAKE,LOC_SW,1);
+ game.prop[BIRD]=PUT(BIRD,LOC_SW,1);
+ game.prop[CAGE]=PUT(CAGE,LOC_SW,0);
+ game.prop[ROD2]=PUT(ROD2,LOC_SW,0);
+ game.prop[PILLOW]=PUT(PILLOW,LOC_SW,0);
- game.prop[MIRROR]=PUT(MIRROR,LOC_115,0);
- game.fixed[MIRROR]=LOC_116;
+ game.prop[MIRROR]=PUT(MIRROR,LOC_NE,0);
+ game.fixed[MIRROR]=LOC_SW;
for (int i=1; i<=NOBJECTS; i++) {
if (TOTING(i))
static bool do_command(FILE *cmdin)
/* Get and execute a command */
{
- long KQ, verb, V1, V2;
- long i, k, KMOD;
+ long kq, verb, V1, V2;
+ long i, k, kmod;
static long igo = 0;
static long obj = 0;
enum speechpart part;
croak(cmdin);
continue; /* back to top of main interpreter loop */
}
- msg=arbitrary_messages[16];
+ msg=arbitrary_messages[PITCH_DARK];
}
if (TOTING(BEAR))RSPEAK(TAME_BEAR);
newspeak(msg);
if (i == -1) {
/* Gee, I don't understand. */
if (fallback_handler(rawbuf))
- return true;
+ continue;
SETPRM(1,WD1,WD1X);
RSPEAK(DONT_KNOW);
goto L2600;
}
- KMOD=MOD(i,1000);
- KQ=i/1000+1;
- switch (KQ-1)
+ kmod=MOD(i,1000);
+ kq=i/1000+1;
+ switch (kq-1)
{
case 0:
- if (playermove(cmdin, verb, KMOD))
+ if (playermove(cmdin, verb, kmod))
return true;
else
continue; /* back to top of main interpreter loop */
- case 1: part=unknown; obj = KMOD; break;
- case 2: part=intransitive; verb = KMOD; break;
- case 3: RSPEAK(KMOD); goto L2012;
+ case 1: part=unknown; obj = kmod; break;
+ case 2: part=intransitive; verb = kmod; break;
+ case 3: RSPEAK(kmod); goto L2012;
default: BUG(22);
}
case GO_DWARFWAKE:
/* Oh dear, he's disturbed the dwarves. */
RSPEAK(DWARVES_AWAKEN);
- score(0);
+ score(endgame);
return true;
default:
BUG(99);