B12004 polymorphing into minotaur

Polymorphing into creature with horns such as a minotaur,
will cause your helmet to fall off if it is made of a hard material.

Only minotaurs pass the has_horns() test in include/mondata.h
because the complaint specifically referred to them, but that
should perhaps be reviewed at some point by someone who is
certain which creatures have horns growing from their
head (some demons?)
This commit is contained in:
nethack.allison
2002-09-22 15:59:46 +00:00
parent ce4bfb6a1a
commit 183e450b1b
3 changed files with 17 additions and 0 deletions

View File

@@ -253,6 +253,7 @@ stop running or travelling if the vibrating square message is triggered
show correct gender in ^X display when polymorphed into non-humanoid form
for wizard and explore modes, skip second screen of ^X output when first
screen is cancelled by ESC
polyself into minotaur causes hard headgear to fall off
Platform- and/or Interface-Specific Fixes

View File

@@ -40,6 +40,7 @@
#define nolimbs(ptr) (((ptr)->mflags1 & M1_NOLIMBS) == M1_NOLIMBS)
#define notake(ptr) (((ptr)->mflags1 & M1_NOTAKE) != 0L)
#define has_head(ptr) (((ptr)->mflags1 & M1_NOHEAD) == 0L)
#define has_horns(ptr) ((ptr) == &mons[PM_MINOTAUR])
#define is_whirly(ptr) ((ptr)->mlet == S_VORTEX || \
(ptr) == &mons[PM_AIR_ELEMENTAL])
#define is_silent(ptr) ((ptr)->msound == MS_SILENT)

View File

@@ -613,6 +613,21 @@ break_armor()
}
#endif
}
if (has_horns(youmonst.data)) {
if ((otmp = uarmh) != 0) {
if (is_flimsy(otmp) && !donning(otmp)) {
char yourbuf[BUFSZ];
/* Future possiblities: This could damage/destroy helmet*/
Your("horns pierce through %s %s.", shk_your(yourbuf, otmp),
xname(otmp));
} else {
if (donning(otmp)) cancel_don();
Your("helmet falls to the %s!", surface(u.ux, u.uy));
(void) Helmet_off();
dropx(otmp);
}
}
}
if (nohands(youmonst.data) || verysmall(youmonst.data)) {
if ((otmp = uarmg) != 0) {
if (donning(otmp)) cancel_don();