simplify touchstone object choosing

- remove special case code from getobj for touchstone
- remove other hacks from getobj that resulted from earlier hack, solves
  the "rub on the gold stone" problem completely
- pass correct letter list to getobj from use_stone, like other callers
This commit is contained in:
cohrs
2002-02-26 07:36:30 +00:00
parent af51f4b0a2
commit 0f1615c7ad
2 changed files with 5 additions and 17 deletions

View File

@@ -1808,14 +1808,15 @@ use_stone(otmp)
struct obj *otmp;
{
struct obj *obj;
char allowall[2];
char allowall[3];
const char *color = 0;
static const char *ambiguous = "You make scratch marks on the stone.";
const char *scritch = "\"scritch, scritch\"";
unsigned material;
allowall[0] = ALL_CLASSES;
allowall[1] = '\0';
allowall[0] = GOLD_CLASS;
allowall[1] = ALL_CLASSES;
allowall[2] = '\0';
if (!(obj = getobj(allowall, "rub on the stone")))
return;

View File

@@ -733,7 +733,6 @@ register const char *let,*word;
boolean usegold = FALSE; /* can't use gold because its illegal */
boolean allowall = FALSE;
boolean allownone = FALSE;
boolean touchstone = FALSE;
xchar foox = 0;
long cnt;
boolean prezero = FALSE;
@@ -746,15 +745,6 @@ register const char *let,*word;
#else
if(*let == GOLD_CLASS) let++, usegold = TRUE;
#endif
/* Ugly check for touchstone */
if (!strncmp(word, "rub on", 6)) {
touchstone = TRUE; /* avoid silly "stone gold" */
#ifndef GOLDOBJ
if(u.ugold) allowgold = usegold = TRUE;
#else
usegold = TRUE;
#endif
}
/* Equivalent of an "ugly check" for gold */
if (usegold && !strcmp(word, "eat") && !metallivorous(youmonst.data))
@@ -939,10 +929,7 @@ register const char *let,*word;
}
if(ilet == def_oc_syms[GOLD_CLASS]) {
if (!usegold) {
if (touchstone)
You("cannot rub gold on the stone.");
else
You("cannot %s gold.", word);
You("cannot %s gold.", word);
return(struct obj *)0;
#ifndef GOLDOBJ
} else if (!allowgold) {