Merge branch 'master' into magic-number

This commit is contained in:
Peje Nilsson 2017-06-19 23:44:48 +02:00
commit c84d370918
13 changed files with 251 additions and 10 deletions

View file

@ -1054,7 +1054,8 @@ int action(FILE *input, enum speechpart part, token_t verb, token_t obj)
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). */

View file

@ -91,6 +91,9 @@ extern void* xmalloc(size_t size);
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);

2
init.c
View file

@ -131,7 +131,7 @@
* 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

9
main.c
View file

@ -1060,8 +1060,9 @@ L2607:
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))
@ -1071,12 +1072,12 @@ L2607:
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);
}
@ -1133,7 +1134,7 @@ Laction:
/* 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

17
misc.c
View file

@ -50,6 +50,23 @@ void packed_to_token(long packed, char token[6])
}
}
/* 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)

37
tests/drinkfail.chk Normal file
View file

@ -0,0 +1,37 @@
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.

5
tests/drinkfail.log Normal file
View file

@ -0,0 +1,5 @@
## Drink unknown
n
in
xyzzy
drink

57
tests/fillfail.chk Normal file
View file

@ -0,0 +1,57 @@
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.

10
tests/fillfail.log Normal file
View file

@ -0,0 +1,10 @@
## 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

View file

@ -31,6 +31,54 @@ Seed set to 1801426495
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
@ -75,7 +123,9 @@ Carry what?
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
@ -106,7 +156,7 @@ OK
> 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.
@ -381,7 +431,7 @@ Okay, "BOO".
> 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
@ -395,7 +445,7 @@ Do you really want to quit now?
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.

View file

@ -2,6 +2,16 @@
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

View file

@ -0,0 +1,43 @@
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.

View file

@ -0,0 +1,7 @@
## Carry when only one object is present
n
in
carry lamp
out
drop lamp
carry