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:
nethack.rankin
2004-11-13 04:00:52 +00:00
parent 88dad9386b
commit 7672a2c60b
10 changed files with 67 additions and 27 deletions

View File

@@ -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;