long AMBER, ATTACK, AXE, BACK, BATTER, BEAR, BIRD, BLOOD,
BOTTLE, CAGE, CAVE, CAVITY, CHAIN, CHASM, CHEST,
- CLAM, COINS, DALTLC, DOOR, DPRSSN, DRAGON, DWARF, EGGS,
+ CLAM, COINS, DOOR, DPRSSN, DRAGON, DWARF, EGGS,
EMRALD, ENTER, ENTRNC, FIND, FISSUR, FOOD,
- GRATE, HINT, I, INVENT, IGO, J, JADE, K, K2, KEYS, KK,
- KNIFE, L, LAMP, LOCK, LOOK,
- MAGZIN, MAXDIE, MAXTRS, MESSAG, MIRROR, MXSCOR,
- NUGGET, NUL, OGRE, OIL, OYSTER, PEARL, PILLOW,
- PLANT, PLANT2, PYRAM, RESER, ROD, ROD2, RUBY, RUG, SAPPH, SAY,
- SCORE, SECT, SIGN, SNAKE, SPK, STEPS, STICK,
- STREAM, THROW, TK[21], TRIDNT, TROLL, TROLL2,
- URN, V1, V2, VASE, VEND, VERB,
+ GRATE, HINT, I, INVENT, J, JADE, K, KEYS,
+ KNIFE, L, LAMP, LOCK, LOOK, MAGZIN, MAXDIE,
+ MESSAG, MIRROR, NUGGET, NUL, OGRE, OIL, OYSTER,
+ PEARL, PILLOW, PLANT, PLANT2, PYRAM, RESER, ROD, ROD2,
+ RUBY, RUG, SAPPH, SAY, SCORE, SECT, SIGN, SNAKE, SPK,
+ STEPS, STICK, STREAM, THROW, TRIDNT, TROLL, TROLL2,
+ URN, V1, V2, VASE, VEND,
VOLCAN, VRSION = 25, WATER, WD1, WD1X, WD2, WD2X;
FILE *logfp;
bool oldstyle = false;
extern void initialise();
extern void score(long);
-extern int action(FILE *, long, long);
+extern int action(FILE *, long, long, long);
void sig_handler(int signo)
{
}
static bool do_command(FILE *cmdin) {
- long LL, KQ;
+ long LL, KQ, VERB, KK, K2;
long obj;
+ long TK[21];
+ static long IGO = 0;
/* Can't leave cave once it's closing (except by main office). */
/* Verb and object analysis moved to separate module. */
-L4000: I=4000; goto Laction;
+L4000: I=4000; VERB=K; goto Laction;
L4090: I=4090; goto Laction;
L5000: I=5000;
Laction:
- switch (action(cmdin, I, obj)) {
+ switch (action(cmdin, I, VERB, obj)) {
case 2: return true;
case 8: goto L8;
case 2000: goto L2000;