hats vs helms
Something from <Someone>'s list: some messages have hardcoded references
to "helmet" which sound strange when the character is wearing a hat or cap.
helm_simple_name() is comparable to the existing cloak_simple_name(). It
returns "helm" or "hat" depending upon whether the helmet provides the
same protection that yields the assorted repetitions of "fortunately,
you are wearing a hard helmet". This choice ends up categorizing elven
leather helm as a hat (which I think is ok given that its undiscovered
description is "leather hat"), contrary to <Someone>'s suggestion that the
distinction be made based on whether the helmet was made of cloth.
I started on this a year and a half ago but didn't commit it.
Unfortunately I don't remember why and haven't done any significant
additional work now--just recovered from some intervening bit rot and
confirmed that the patch as is seems to be working ok (in the trunk; the
branch side has not been tested). I suspect that I meant to look for
additional helmet messages which could benefit from conditional headgear
description. (Those "hard helmet" ones don't need it, although they
should perhaps be moved into a common routine instead of being replicated.)
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* 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. */
|
||||
|
||||
@@ -1180,7 +1180,10 @@ register struct obj *otmp;
|
||||
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)) {
|
||||
@@ -1282,13 +1285,14 @@ boolean noisy;
|
||||
|
||||
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;
|
||||
@@ -2146,7 +2150,8 @@ register struct obj *atmp;
|
||||
#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)) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* 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. */
|
||||
|
||||
@@ -1626,7 +1626,8 @@ stillinwater:;
|
||||
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));
|
||||
|
||||
11
src/mhitu.c
11
src/mhitu.c
@@ -1,4 +1,4 @@
|
||||
/* 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. */
|
||||
|
||||
@@ -371,8 +371,8 @@ mattacku(mtmp)
|
||||
|
||||
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)!",
|
||||
@@ -1053,7 +1053,8 @@ dopois:
|
||||
|
||||
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;
|
||||
@@ -2260,7 +2261,7 @@ register struct monst *mon;
|
||||
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");
|
||||
|
||||
22
src/objnam.c
22
src/objnam.c
@@ -1,4 +1,4 @@
|
||||
/* 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. */
|
||||
|
||||
@@ -2811,6 +2811,26 @@ struct obj *cloak;
|
||||
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;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* 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. */
|
||||
|
||||
@@ -651,7 +651,8 @@ break_armor()
|
||||
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);
|
||||
}
|
||||
@@ -673,7 +674,8 @@ break_armor()
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* 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. */
|
||||
|
||||
@@ -21,7 +21,8 @@ register struct obj *otmp;
|
||||
(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
|
||||
|
||||
11
src/trap.c
11
src/trap.c
@@ -1,4 +1,4 @@
|
||||
/* 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. */
|
||||
|
||||
@@ -55,7 +55,8 @@ struct monst *victim;
|
||||
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;
|
||||
@@ -850,7 +851,8 @@ unsigned trflags;
|
||||
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,
|
||||
@@ -1903,7 +1905,8 @@ register struct monst *mtmp;
|
||||
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)
|
||||
|
||||
13
src/uhitm.c
13
src/uhitm.c
@@ -1,4 +1,4 @@
|
||||
/* 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. */
|
||||
|
||||
@@ -1545,6 +1545,9 @@ register struct attack *mattk;
|
||||
}
|
||||
break;
|
||||
case AD_DRIN:
|
||||
{
|
||||
struct obj *helmet;
|
||||
|
||||
if (notonhead || !has_head(mdef->data)) {
|
||||
pline("%s doesn't seem harmed.", Monnam(mdef));
|
||||
tmp = 0;
|
||||
@@ -1558,9 +1561,10 @@ register struct attack *mattk;
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -1588,6 +1592,7 @@ register struct attack *mattk;
|
||||
}
|
||||
exercise(A_WIS, TRUE);
|
||||
break;
|
||||
}
|
||||
case AD_STCK:
|
||||
if (!negated && !sticks(mdef->data))
|
||||
u.ustuck = mdef; /* it's now stuck to you */
|
||||
|
||||
Reference in New Issue
Block a user