Remove special-case code that was inducing bugs.
This commit is contained in:
parent
3f90f5bf38
commit
4e01669e06
2 changed files with 6 additions and 23 deletions
16
actions.c
16
actions.c
|
@ -1145,15 +1145,11 @@ static int rub(verb_t verb, obj_t obj)
|
||||||
static int say(struct command_t *command)
|
static int say(struct command_t *command)
|
||||||
/* Say. Echo WD2 (or WD1 if no WD2 (SAY WHAT?, etc.).) Magic words override. */
|
/* Say. Echo WD2 (or WD1 if no WD2 (SAY WHAT?, etc.).) Magic words override. */
|
||||||
{
|
{
|
||||||
if (command->raw2 != '\0') {
|
char word2[TOKLEN + 1];
|
||||||
command->wd1 = command->wd2;
|
packed_to_token(command->wd2, word2);
|
||||||
strncpy(command->raw1, command->raw2, LINESIZE - 1);
|
|
||||||
}
|
|
||||||
char word1[TOKLEN + 1];
|
|
||||||
packed_to_token(command->wd1, word1);
|
|
||||||
long wd;
|
long wd;
|
||||||
enum wordtype type;
|
enum wordtype type;
|
||||||
get_vocab_metadata(word1, &wd, &type);
|
get_vocab_metadata(word2, &wd, &type);
|
||||||
if (wd == XYZZY ||
|
if (wd == XYZZY ||
|
||||||
wd == PLUGH ||
|
wd == PLUGH ||
|
||||||
wd == PLOVER ||
|
wd == PLOVER ||
|
||||||
|
@ -1163,11 +1159,9 @@ static int say(struct command_t *command)
|
||||||
wd == FOO ||
|
wd == FOO ||
|
||||||
wd == FUM ||
|
wd == FUM ||
|
||||||
wd == PART) {
|
wd == PART) {
|
||||||
/* FIXME: scribbles on the interpreter's command block */
|
return GO_WORD2;
|
||||||
wordclear(&command->wd2);
|
|
||||||
return GO_LOOKUP;
|
|
||||||
}
|
}
|
||||||
sspeak(OKEY_DOKEY, command->raw1);
|
sspeak(OKEY_DOKEY, command->raw2);
|
||||||
return GO_CLEAROBJ;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
13
main.c
13
main.c
|
@ -1130,16 +1130,7 @@ Lclearobj:
|
||||||
goto Lclearobj;
|
goto Lclearobj;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ugly translationms to get around word polyvalence. */
|
if (command.type1 == OBJECT) {
|
||||||
if (command.type1 == ACTION && command.id1 == SAY
|
|
||||||
&& command.id2 != WORD_NOT_FOUND && command.id2 != WORD_EMPTY) {
|
|
||||||
command.id1 = command.id2;
|
|
||||||
command.type1 = command.type2;
|
|
||||||
strncpy(command.raw1, command.raw2, LINESIZE - 1);
|
|
||||||
command.id2 = WORD_EMPTY;
|
|
||||||
command.type2 = NO_WORD_TYPE;
|
|
||||||
strncpy(command.raw2, "", LINESIZE - 1);
|
|
||||||
} else if (command.type1 == OBJECT) {
|
|
||||||
if (!((command.id1 != WATER && command.id1 != OIL) || (command.id2 != PLANT && command.id2 != DOOR))) {
|
if (!((command.id1 != WATER && command.id1 != OIL) || (command.id2 != PLANT && command.id2 != DOOR))) {
|
||||||
if (AT(command.id2)) {
|
if (AT(command.id2)) {
|
||||||
command.id2 = POUR;
|
command.id2 = POUR;
|
||||||
|
@ -1204,8 +1195,6 @@ Lookup:
|
||||||
return true;
|
return true;
|
||||||
case GO_TOP:
|
case GO_TOP:
|
||||||
continue; /* back to top of main interpreter loop */
|
continue; /* back to top of main interpreter loop */
|
||||||
case GO_LOOKUP:
|
|
||||||
goto Lookup;
|
|
||||||
case GO_WORD2:
|
case GO_WORD2:
|
||||||
/* Get second word for analysis. */
|
/* Get second word for analysis. */
|
||||||
command.id1 = command.id2;
|
command.id1 = command.id2;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue