fix #H7354 - incorrect material

for parchment and vellum spellbooks.  Parchment and vellum are made
from animal skin rather than from plants, so classifying spellbooks
with those descriptions as paper is inaccurate.  Changing them to be
made out of leather has a couple of side-effects:  eating them while
polymorphed will break vegetarian conduct and polymorphing them might
result in a leather golem rather than a paper one.

I left "leathery spell book" as paper since that directly refers to
the cover.  The composition shouldn't be changed--the pages of such
a book are still made out of paper--but the effect of eating one
possibly should.  (That description originally was "leather" and got
changed.  I don't remember the details and assumed it was due to odd
wishing behavior, but there's a commented-out routine in eat.c which
suggests it was related to eating instead.  Anyway, "leathery" is
still non-leather.)
This commit is contained in:
PatR
2018-08-27 19:13:54 -07:00
parent bf10a70de0
commit 95b9205168
2 changed files with 26 additions and 6 deletions

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 objects.c $NHDT-Date: 1447313395 2015/11/12 07:29:55 $ $NHDT-Branch: master $:$NHDT-Revision: 1.49 $ */
/* NetHack 3.6 objects.c $NHDT-Date: 1535422421 2018/08/28 02:13:41 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.51 $ */
/* Copyright (c) Mike Threepoint, 1989. */
/* NetHack may be freely redistributed. See license for details. */
@@ -883,18 +883,35 @@ SCROLL("blank paper", "unlabeled", 0, 28, 60),
#undef SCROLL
/* spellbooks ... */
/* expanding beyond 52 spells would require changes in spellcasting
or imposition of a limit on number of spells hero can know because
they are currently assigned successive letters, a-zA-Z, when learned */
/* Expanding beyond 52 spells would require changes in spellcasting
* or imposition of a limit on number of spells hero can know because
* they are currently assigned successive letters, a-zA-Z, when learned.
* [The existing spell sorting capability could conceivably be extended
* to enable moving spells from beyond Z to within it, bumping others
* out in the process, allowing more than 52 spells be known but keeping
* only 52 be castable at any given time.]
*/
#define SPELL(name,desc,sub,prob,delay,level,mgc,dir,color) \
OBJECT(OBJ(name, desc), \
BITS(0, 0, 0, 0, mgc, 0, 0, 0, 0, 0, dir, sub, PAPER), \
0, SPBOOK_CLASS, prob, delay, 50, level * 100, \
0, 0, 0, level, 20, color)
/* Spellbook description normally refers to book covers (primarily color).
Parchment and vellum would never be used for such, but rather than
eliminate those, finagle their definitions to refer to the pages
rather than the cover. They are made from animal skin (typically of
a goat or sheep) and books using them for pages generally need heavy
covers with straps or clamps to tightly close the book in order to
keep the pages flat. (However, a wooden cover might itself be covered
by a sheet of parchment, making this become less of an exception. Also,
changing the internal composition from paper to leather makes eating a
parchment or vellum spellbook break vegetarian conduct, as it should.) */
#define PAPER LEATHER /* override enum for use in SPELL() expansion */
SPELL("dig", "parchment",
P_MATTER_SPELL, 20, 6, 5, 1, RAY, HI_PAPER),
P_MATTER_SPELL, 20, 6, 5, 1, RAY, HI_LEATHER),
SPELL("magic missile", "vellum",
P_ATTACK_SPELL, 45, 2, 2, 1, RAY, HI_PAPER),
P_ATTACK_SPELL, 45, 2, 2, 1, RAY, HI_LEATHER),
#undef PAPER /* revert to normal material */
SPELL("fireball", "ragged",
P_ATTACK_SPELL, 20, 4, 4, 1, RAY, HI_PAPER),
SPELL("cone of cold", "dog eared",