switch (part) {
case intransitive:
- if (WD2 > 0 && verb != SAY) return (2800);
+ if (WD2 > 0 && verb != SAY)
+ return GO_WORD2;
if (verb == SAY)obj = WD2;
if (obj == 0 || obj == INTRANSITIVE) {
/* Analyse an intransitive verb (ie, no object given yet). */
extern char* xstrdup(const char*);
extern void packed_to_token(long, char token[]);
extern void speak(const char*);
+extern bool wordeq(token_t, token_t);
+extern bool wordempty(token_t);
+extern void wordclear(token_t *);
extern void PSPEAK(vocab_t, int);
extern void RSPEAK(vocab_t);
extern void SETPRM(long, long, long);
* apply to players whose scores are higher than the previous N but not
* higher than this N. Note that these scores probably change with every
* modification (and particularly expansion) of the program.
- * SECTION 11: Hints. Each line contains a hint number (add 10 to get cond
+ * Section 11: Hints. Each line contains a hint number (add 10 to get cond
* bit; see section 9), the number of turns he must be at the right loc(s)
* before triggering the hint, the points deducted for taking the hint,
* the message number (section 6) of the question, and the message number
if (V1 == ENTER && WD2 > 0) {
WD1 = WD2;
WD1X = WD2X;
- WD2 = 0;
+ wordclear(&WD2);
} else {
+ /* FIXME: Magic numbers */
if (!((V1 != 1000 + WATER && V1 != 1000 + OIL) ||
(V2 != 1000 + PLANT && V2 != 1000 + DOOR))) {
if (AT(V2 - 1000))
WD1 = MAKEWD(WORD_CATCH);
}
L2620:
- if (WD1 == MAKEWD(WORD_WEST)) {
+ if (wordeq(WD1, MAKEWD(WORD_WEST))) {
++game.iwest;
if (game.iwest == 10)
RSPEAK(W_IS_WEST);
}
- if (WD1 == MAKEWD(WORD_GO) && WD2 != 0) {
+ if (wordeq(WD1, MAKEWD(WORD_GO)) && !wordempty(WD2)) {
if (++igo == 10)
RSPEAK(GO_UNNEEDED);
}
/* Get second word for analysis. */
WD1 = WD2;
WD1X = WD2X;
- WD2 = 0;
+ wordclear(&WD2);
goto L2620;
case GO_UNKNOWN:
/* Random intransitive verbs come here. Clear obj just in case
}
}
+/* Hide the fact that wods are corrently packed longs */
+
+bool wordeq(token_t a, token_t b)
+{
+ return a == b;
+}
+
+bool wordempty(token_t a)
+{
+ return a == 0;
+}
+
+void wordclear(token_t *v)
+{
+ *v = 0;
+}
+
/* I/O routines (SPEAK, PSPEAK, RSPEAK, SETPRM, GETIN, YES) */
void speak(const char* msg)
--- /dev/null
+
+Welcome to Adventure!! Would you like instructions?
+
+> n
+
+You are standing at the end of a road before a small brick building.
+Around you is a forest. A small stream flows out of the building and
+down a gully.
+
+> in
+
+You are inside a building, a well house for a large spring.
+
+There are some keys on the ground here.
+
+There is a shiny brass lamp nearby.
+
+There is food here.
+
+There is a bottle of water here.
+
+> xyzzy
+
+>>Foof!<<
+
+It is now pitch dark. If you proceed you will likely fall into a pit.
+
+> drink
+
+Drink what?
+
+
+You scored 32 out of a possible 430, using 3 turns.
+
+You are obviously a rank amateur. Better luck next time.
+
+To achieve the next higher rating, you need 14 more points.
--- /dev/null
+## Drink unknown
+n
+in
+xyzzy
+drink
--- /dev/null
+
+Welcome to Adventure!! Would you like instructions?
+
+> n
+
+You are standing at the end of a road before a small brick building.
+Around you is a forest. A small stream flows out of the building and
+down a gully.
+
+> in
+
+You are inside a building, a well house for a large spring.
+
+There are some keys on the ground here.
+
+There is a shiny brass lamp nearby.
+
+There is food here.
+
+There is a bottle of water here.
+
+> carry lamp
+
+OK
+
+> carry bottle
+
+OK
+
+> fill bottle
+
+Your bottle is already full.
+
+> drink
+
+The bottle of water is now empty.
+
+> xyzzy
+
+>>Foof!<<
+
+It is now pitch dark. If you proceed you will likely fall into a pit.
+
+> fill lamp
+
+You can't fill that.
+
+> fill bottle
+
+There is nothing here with which to fill the bottle.
+
+
+You scored 32 out of a possible 430, using 8 turns.
+
+You are obviously a rank amateur. Better luck next time.
+
+To achieve the next higher rating, you need 14 more points.
--- /dev/null
+## Attempt to fill lamp, attempt to fill bottle with no source
+n
+in
+carry lamp
+carry bottle
+fill bottle
+drink
+xyzzy
+fill lamp
+fill bottle
\ No newline at end of file
You're in front of building.
+> in
+
+You are inside a building, a well house for a large spring.
+
+There are some keys on the ground here.
+
+There is a shiny brass lamp nearby.
+
+There is food here.
+
+There is a bottle of water here.
+
+> nothing food
+
+OK
+
+> calm food
+
+I'm game. Would you care to explain how?
+
+> walk food
+
+Where?
+
+> score food
+
+Huh?
+
+> foo food
+
+I don't know how.
+
+> brief food
+
+On what?
+
+> suspend food
+
+Huh?
+
+> resume food
+
+Huh?
+
+> out
+
+You're in front of building.
+
> stream
You are in a valley in the forest beside a stream tumbling along a
I am unsure how you are facing. Use compass points or nearby objects.
-You're in front of building.
+You are standing at the end of a road before a small brick building.
+Around you is a forest. A small stream flows out of the building and
+down a gully.
> eat
> in
-You are inside a building, a well house for a large spring.
+You're inside building.
There are some keys on the ground here.
> score
-You have garnered 27 out of a possible 430 points, using 74 turns.
+You have garnered 27 out of a possible 430 points, using 84 turns.
> quit keys
OK
-You scored 27 out of a possible 430, using 76 turns.
+You scored 27 out of a possible 430, using 86 turns.
You are obviously a rank amateur. Better luck next time.
foo
y
seed 1801426495
+in
+nothing food
+calm food
+walk food
+score food
+foo food
+brief food
+suspend food
+resume food
+out
stream
lock
take water
--- /dev/null
+
+Welcome to Adventure!! Would you like instructions?
+
+> n
+
+You are standing at the end of a road before a small brick building.
+Around you is a forest. A small stream flows out of the building and
+down a gully.
+
+> in
+
+You are inside a building, a well house for a large spring.
+
+There are some keys on the ground here.
+
+There is a shiny brass lamp nearby.
+
+There is food here.
+
+There is a bottle of water here.
+
+> carry lamp
+
+OK
+
+> out
+
+You're in front of building.
+
+> drop lamp
+
+OK
+
+> carry
+
+OK
+
+
+You scored 32 out of a possible 430, using 5 turns.
+
+You are obviously a rank amateur. Better luck next time.
+
+To achieve the next higher rating, you need 14 more points.
--- /dev/null
+## Carry when only one object is present
+n
+in
+carry lamp
+out
+drop lamp
+carry