panic on subsequent move if engulfer gets turned to stone and poly'd hero
also has attached ball&chain
give more specific messages when dropping weapons due to slippery fingers
+various helmet messages changed to distinguish between "helm" and "hat"
Platform- and/or Interface-Specific Fixes
E char *FDECL(Yname2, (struct obj *));
E char *FDECL(ysimple_name, (struct obj *));
E char *FDECL(Ysimple_name2, (struct obj *));
+E char *FDECL(bare_artifactname, (struct obj *));
E char *FDECL(makeplural, (const char *));
E char *FDECL(makesingular, (const char *));
E struct obj *FDECL(readobjnam, (char *,struct obj *,BOOLEAN_P));
E int FDECL(rnd_class, (int,int));
E const char *FDECL(cloak_simple_name, (struct obj *));
+E const char *FDECL(helm_simple_name, (struct obj *));
E const char *FDECL(mimic_obj_name, (struct monst *));
-E char *FDECL(bare_artifactname, (struct obj *));
/* ### options.c ### */
-/* SCCS Id: @(#)do_wear.c 3.4 2004/10/29 */
+/* SCCS Id: @(#)do_wear.c 3.4 2004/11/11 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
if(delay) {
nomul(delay);
if (is_helmet(otmp)) {
- nomovemsg = "You finish taking off your helmet.";
+ /* ick... */
+ nomovemsg = !strcmp(helm_simple_name(otmp), "hat") ?
+ "You finish taking off your hat." :
+ "You finish taking off your helmet.";
afternmv = Helmet_off;
}
else if (is_gloves(otmp)) {
if (is_helmet(otmp)) {
if (uarmh) {
- if (noisy) already_wearing(an(c_helmet));
+ if (noisy) already_wearing(an(helm_simple_name(uarmh)));
err++;
} else if (Upolyd && has_horns(youmonst.data) && !is_flimsy(otmp)) {
/* (flimsy exception matches polyself handling) */
if (noisy)
pline_The("%s won't fit over your horn%s.",
- c_helmet, plur(num_horns(youmonst.data)));
+ helm_simple_name(otmp),
+ plur(num_horns(youmonst.data)));
err++;
} else
*mask = W_ARMH;
#endif
} else if (DESTROY_ARM(uarmh)) {
if (donning(otmp)) cancel_don();
- Your("helmet turns to dust and is blown away!");
+ Your("%s turns to dust and is blown away!",
+ helm_simple_name(uarmh));
(void) Helmet_off();
useup(otmp);
} else if (DESTROY_ARM(uarmg)) {
-/* SCCS Id: @(#)hack.c 3.4 2004/08/16 */
+/* SCCS Id: @(#)hack.c 3.4 2004/11/11 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
if(mtmp->mtame) /* jumps to greet you, not attack */
;
else if(uarmh && is_metallic(uarmh))
- pline("Its blow glances off your helmet.");
+ pline("Its blow glances off your %s.",
+ helm_simple_name(uarmh));
else if (u.uac + 3 <= rnd(20))
You("are almost hit by %s!",
x_monnam(mtmp, ARTICLE_A, "falling", 0, TRUE));
-/* SCCS Id: @(#)mhitu.c 3.4 2004/10/27 */
+/* SCCS Id: @(#)mhitu.c 3.4 2004/11/11 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
obj = which_armor(mtmp, WORN_HELMET);
if (obj && is_metallic(obj)) {
- Your("blow glances off %s helmet.",
- s_suffix(mon_nam(mtmp)));
+ Your("blow glances off %s %s.",
+ s_suffix(mon_nam(mtmp)), helm_simple_name(obj));
} else {
if (3 + find_mac(mtmp) <= rnd(20)) {
pline("%s is hit by a falling piercer (you)!",
if (uarmh && rn2(8)) {
/* not body_part(HEAD) */
- Your("helmet blocks the attack to your head.");
+ Your("%s blocks the attack to your head.",
+ helm_simple_name(uarmh));
break;
}
if (Half_physical_damage) dmg = (dmg+1) / 2;
if(!uwep || !welded(uwep))
mayberem(uarmg, "gloves");
mayberem(uarms, "shield");
- mayberem(uarmh, "helmet");
+ mayberem(uarmh, helm_simple_name(uarmh));
#ifdef TOURIST
if(!uarmc && !uarm)
mayberem(uarmu, "shirt");
-/* SCCS Id: @(#)objnam.c 3.4 2004/08/02 */
+/* SCCS Id: @(#)objnam.c 3.4 2004/11/11 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
return "cloak";
}
+/* helm vs hat for messages */
+const char *
+helm_simple_name(helmet)
+struct obj *helmet;
+{
+ /*
+ * There is some wiggle room here; the result has been chosen
+ * for consistency with the "protected by hard helmet" messages
+ * given for various bonks on the head: headgear that provides
+ * such protection is a "helm", that which doesn't is a "hat".
+ *
+ * elven leather helm / leather hat -> hat
+ * dwarvish iron helm / hard hat -> helm
+ * The rest are completely straightforward:
+ * fedora, cornuthaum, dunce cap -> hat
+ * all other types of helmets -> helm
+ */
+ return (helmet && !is_metallic(helmet)) ? "hat" : "helm";
+}
+
const char *
mimic_obj_name(mtmp)
struct monst *mtmp;
-/* SCCS Id: @(#)polyself.c 3.4 2003/01/08 */
+/* SCCS Id: @(#)polyself.c 3.4 2004/11/11 */
/* Copyright (C) 1987, 1988, 1989 by Ken Arromdee */
/* NetHack may be freely redistributed. See license for details. */
hornbuf, vtense(hornbuf, "pierce"), yname(otmp));
} else {
if (donning(otmp)) cancel_don();
- Your("helmet falls to the %s!", surface(u.ux, u.uy));
+ Your("%s falls to the %s!",
+ helm_simple_name(otmp), surface(u.ux, u.uy));
(void) Helmet_off();
dropx(otmp);
}
}
if ((otmp = uarmh) != 0) {
if (donning(otmp)) cancel_don();
- Your("helmet falls to the %s!", surface(u.ux, u.uy));
+ Your("%s falls to the %s!",
+ helm_simple_name(otmp), surface(u.ux, u.uy));
(void) Helmet_off();
dropx(otmp);
}
-/* SCCS Id: @(#)steal.c 3.4 2003/12/04 */
+/* SCCS Id: @(#)steal.c 3.4 2004/11/11 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
(otmp == uarms) ? "shield" :
(otmp == uarmg) ? "gloves" :
(otmp == uarmc) ? cloak_simple_name(otmp) :
- (otmp == uarmh) ? "helmet" : "armor");
+ (otmp == uarmh) ? helm_simple_name(otmp) :
+ "armor");
}
#ifndef GOLDOBJ
-/* SCCS Id: @(#)trap.c 3.4 2004/09/10 */
+/* SCCS Id: @(#)trap.c 3.4 2004/11/11 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
item = (victim == &youmonst) ? uarmh : which_armor(victim, W_ARMH);
if (item) {
mat_idx = objects[item->otyp].oc_material;
- Sprintf(buf,"%s helmet", materialnm[mat_idx] );
+ Sprintf(buf,"%s %s",
+ materialnm[mat_idx], helm_simple_name(item));
}
if (!burn_dmg(item, item ? buf : "helmet")) continue;
break;
case 0:
pline("%s you on the %s!", A_gush_of_water_hits,
body_part(HEAD));
- (void) rust_dmg(uarmh, "helmet", 1, TRUE, &youmonst);
+ (void) rust_dmg(uarmh, helm_simple_name(uarmh),
+ 1, TRUE, &youmonst);
break;
case 1:
pline("%s your left %s!", A_gush_of_water_hits,
pline("%s %s on the %s!", A_gush_of_water_hits,
mon_nam(mtmp), mbodypart(mtmp, HEAD));
target = which_armor(mtmp, W_ARMH);
- (void) rust_dmg(target, "helmet", 1, TRUE, mtmp);
+ (void) rust_dmg(target, helm_simple_name(target),
+ 1, TRUE, mtmp);
break;
case 1:
if (in_sight)
-/* SCCS Id: @(#)uhitm.c 3.4 2004/06/12 */
+/* SCCS Id: @(#)uhitm.c 3.4 2004/11/11 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
}
break;
case AD_DRIN:
+ {
+ struct obj *helmet;
+
if (notonhead || !has_head(mdef->data)) {
pline("%s doesn't seem harmed.", Monnam(mdef));
tmp = 0;
}
if (m_slips_free(mdef, mattk)) break;
- if ((mdef->misc_worn_check & W_ARMH) && rn2(8)) {
- pline("%s helmet blocks your attack to %s head.",
- s_suffix(Monnam(mdef)), mhis(mdef));
+ if ((helmet = which_armor(mdef, W_ARMH)) != 0 && rn2(8)) {
+ pline("%s %s blocks your attack to %s head.",
+ s_suffix(Monnam(mdef)),
+ helm_simple_name(helmet), mhis(mdef));
break;
}
}
exercise(A_WIS, TRUE);
break;
+ }
case AD_STCK:
if (!negated && !sticks(mdef->data))
u.ustuck = mdef; /* it's now stuck to you */