Fix several touchstone-related things:
1. The switch statement was using the material "GOLD" rather than GOLD_CLASS. 2. If getobj() had been working for gold when it came to touchstones, there would have been a memory leak here because the object returned would have been from mkgoldobj(). The goldobj was not being freed anywhere, nor was it being put on a chain. You also would have had zero gold after rubbing it on the stone. The intent was clearly to allow gold since there was a case in the switch statement. 3. getobj() wasn't working properly for gold selection here anyway, so this was not the cause of <Someone>'s gold obj in inventory. You ended up dropping through to code that was supposed to print "You cannot verb object." For touchstones that came out as: "You cannot rub on the stone gold."
This commit is contained in:
+8
-1
@@ -1838,8 +1838,15 @@ struct obj *otmp;
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (obj->oclass) {
|
switch (obj->oclass) {
|
||||||
case GOLD:
|
case GOLD_CLASS:
|
||||||
color = "golden";
|
color = "golden";
|
||||||
|
#ifndef GOLDOBJ
|
||||||
|
/* goldobj back to u.ugold */
|
||||||
|
u.ugold = obj->quan;
|
||||||
|
obj->quan = 0L;
|
||||||
|
dealloc_obj(obj);
|
||||||
|
obj = (struct obj *)0;
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
case GEM_CLASS:
|
case GEM_CLASS:
|
||||||
if (otmp->blessed) {
|
if (otmp->blessed) {
|
||||||
|
|||||||
@@ -729,6 +729,10 @@ register const char *let,*word;
|
|||||||
#else
|
#else
|
||||||
if(*let == GOLD_CLASS) let++, usegold = TRUE;
|
if(*let == GOLD_CLASS) let++, usegold = TRUE;
|
||||||
#endif
|
#endif
|
||||||
|
/* Ugly check for touchstone */
|
||||||
|
if (!strncmp(word, "rub on", 6) && u.ugold)
|
||||||
|
allowgold = usegold = TRUE;
|
||||||
|
|
||||||
/* Equivalent of an "ugly check" for gold */
|
/* Equivalent of an "ugly check" for gold */
|
||||||
if (usegold && !strcmp(word, "eat") && !metallivorous(youmonst.data))
|
if (usegold && !strcmp(word, "eat") && !metallivorous(youmonst.data))
|
||||||
#ifndef GOLDOBJ
|
#ifndef GOLDOBJ
|
||||||
|
|||||||
Reference in New Issue
Block a user