leather spellbook

<Someone> wrote:
> * Eating a leather spellbook doesn't violate
> vegetarian conduct. I suggest you rename it to
> something else. (May I suggest "bark"?) Also, I refuse
> to consider "leather" to be a colour or texture.
> * While as a water nymph in water, seducing an unseen
> monster on dry land sometimes gives away its identity.
> * When submerged iron golem monsters residually
> "rust", and the rust damage kills them, it doesn't
> report their death.
> * Drum of Earthquake says "the entire dungeon shakes
> around you" even when you're in the Endgame or the
> Quest's top level.
> * Wishing for a statue of a guard, then destoning it,
> then chatting to it, makes it say "drop that gold"
> without context. This could probably be extended to
> other cases, too (like Croesus?)

This corrects only the first complaint in the list above.
This commit is contained in:
nethack.allison
2006-02-21 03:28:57 +00:00
parent 75a4885cb9
commit b6eff2405a
2 changed files with 18 additions and 1 deletions

View File

@@ -193,6 +193,7 @@ candles should not be fireproof
monsters could end up off the left side of the Ranger quest start level
worms don't have scales, krakens have tentacles, stalkers have a head
you no longer "fry to a crisp" as a water elemental
leather spellbooks violate vegetarian conduct
Platform- and/or Interface-Specific Fixes

View File

@@ -45,6 +45,7 @@ STATIC_DCL void FDECL(eataccessory, (struct obj *));
STATIC_DCL const char *FDECL(foodword, (struct obj *));
STATIC_DCL int FDECL(tin_variety, (struct obj *,BOOLEAN_P));
STATIC_DCL boolean FDECL(maybe_cannibal, (int,BOOLEAN_P));
STATIC_DCL boolean FDECL(leather_cover, (struct obj *));
char msgbuf[BUFSZ];
@@ -2022,6 +2023,18 @@ register struct obj *otmp;
return;
}
STATIC_OVL boolean
leather_cover(otmp)
struct obj *otmp;
{
const char *odesc = OBJ_DESCR(objects[otmp->otyp]);
if (odesc && (otmp->oclass == SPBOOK_CLASS)) {
if (!strcmp(odesc, "leather"))
return TRUE;
}
return FALSE;
}
/*
* return 0 if the food was not dangerous.
* return 1 if the food was dangerous and you chose to stop.
@@ -2128,6 +2141,7 @@ struct obj *otmp;
if (!u.uconduct.unvegan &&
((material == LEATHER || material == BONE ||
material == DRAGON_HIDE || material == WAX) ||
(leather_cover(otmp)) ||
(cadaver && !vegan(&mons[mnum])))) {
Sprintf(buf, "%s foul and unfamiliar to you. %s",
foodsmell, eat_it_anyway);
@@ -2137,6 +2151,7 @@ struct obj *otmp;
if (!u.uconduct.unvegetarian &&
((material == LEATHER || material == BONE ||
material == DRAGON_HIDE) ||
(leather_cover(otmp)) ||
(cadaver && !vegetarian(&mons[mnum])))) {
Sprintf(buf, "%s unfamiliar to you. %s",
foodsmell, eat_it_anyway);
@@ -2248,7 +2263,8 @@ doeat() /* generic "eat" command funtion (see cmd.c) */
material = objects[otmp->otyp].oc_material;
if (material == LEATHER ||
material == BONE || material == DRAGON_HIDE) {
material == BONE || material == DRAGON_HIDE ||
leather_cover(otmp)) {
u.uconduct.unvegan++;
violated_vegetarian();
} else if (material == WAX)