M2_PNAME

From NetHackWiki
Jump to navigation Jump to search

In the code of NetHack, the M2_PNAME monster flag (and its associated macro, type_is_pname()) is possessed by most, but not all, unique monsters. It is mainly used to determine whether to preface a monster's name with "the" in messages.

Description

While comments in the source code describe the M2_PNAME flag as indicating that a monster's name is a "proper noun",[1] the macro is used to test if a monster's name is a "personal name".[2] The flag is notably not possessed by monsters such as the Oracle and the Master of Thieves, whose names are proper nouns but not personal names. Unique monsters with non-personal names do not include the as part of their designations in the source code, presumably to avoid issues with capitalization; thus, a way to distinguish which unique monsters' names should be preceded with the and which should not is necessary.

While all the monsters currently possessing this flag are unique, it is not synonymous with a monster being unique, and there are some instances of messages being directly affected by uniqueness (G_UNIQ), rather than M2_PNAME. For example, eating a tin will produce one of three phrasings, depending on whether the tinned monster is unique and whether it possesses the M2_PNAME flag:

  • "It smells like ponies." Monster is not unique and does not possess M2_PNAME
  • "It smells like the Chromatic Dragon." Monster is unique, but does not possess M2_PNAME
  • "It smells like King Arthur." Monster possesses M2_PNAME

In the above instance, while older versions of NetHack only checked for a monster possessing the M2_PNAME flag if that monster was also unique, current versions make the checks independent.[3][4] This likely indicates that the developers are aware that it would be possible (albeit strange) for a non-unique monster to have a personal name.

Variants

SlashTHEM

In SlashTHEM, the artifact weapon Diplomat is a neutral-aligned ornate mace that gains +10 to-hit and +25 damage versus all monsters with the M2_PNAME flag.

References