player eating metal

1) player-as-rust monster should obey same rules for edible metal as monsters.
2) with GOLDOBJ, player-as-xorn couldn't eat gold in inventory
This commit is contained in:
cohrs
2002-02-12 03:53:05 +00:00
parent 54d0b2edfd
commit 924f3cbd37
2 changed files with 24 additions and 5 deletions
+9 -2
View File
@@ -104,7 +104,8 @@ register struct obj *obj;
/* above also prevents the Amulet from being eaten, so we must never
allow fake amulets to be eaten either [which is already the case] */
if (metallivorous(youmonst.data) && is_metallic(obj))
if (metallivorous(youmonst.data) && is_metallic(obj) &&
(youmonst.data != &mons[PM_RUST_MONSTER] || is_rustprone(obj)))
return TRUE;
if (u.umonnum == PM_GELATINOUS_CUBE && is_organic(obj) &&
/* [g.cubes can eat containers and retain all contents
@@ -1533,6 +1534,11 @@ eatspecial() /* called after eating non-food */
victual.piece = (struct obj *)0;
victual.eating = 0;
if (otmp->oclass == GOLD_CLASS) {
#ifdef GOLDOBJ
if (carried(otmp))
useupall(otmp);
else
#endif
dealloc_obj(otmp);
return;
}
@@ -2336,7 +2342,8 @@ floorfood(verb,corpsecheck) /* get food from floor or pack */
}
}
if ((gold = g_at(u.ux, u.uy)) != 0) {
if (youmonst.data != &mons[PM_RUST_MONSTER] &&
(gold = g_at(u.ux, u.uy)) != 0) {
if (gold->quan == 1L)
Sprintf(qbuf, "There is 1 gold piece here; eat it?");
else