non-unique monsters (including polymorphed uniques, so you can get things like "A rat shaped Royal Jelly zombie").
Include the name of unique and named monsters in their corpse names, for things like "The corpse of the Lernaean hydra" or "The human corpse of Sigmund".
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8407 c06c8d41-db1a-0410-9941-cceddc491573
MG2J6HQGH4DWFH3PC2SZB45NGKK5ISPBADQD24GWAZCZTDLOA33AC
WMFU65IAJ3LX2YSFXXRS7ZFNDCZYQC3ZQ3QDHHK3DU3UMLJMAP4QC
2RJUPYKEDZZCW4GDG6WLEDVYF32ADC4W5I42KSKHN3MWEBCWSAHQC
VMMUZXOQDXW5ZHA7623F744LS7U4BVLBKW5TNZMG5L2Z44UZGZRAC
SCXTTP2FDNB2A7F4XXGXSSOEKZQ7ODDGN5YBCTZXGZ22CLCEH3WQC
3PPH2RAOMAQGDPQKUKMMA3RC5M3VUSEJ7WKGZNVJ7UBFE75K574QC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
Q3VQGRSYOUYIOAWR2GMQI2XJAQDXDPJDE5B5YAZHT35AGECVWRVQC
BNRY5YIXLFE2TDNU2JQHWWXJQVWNSEWQ52DU7XUWIT5DZWKGBDDAC
UPA65AL4JXYLIHH4D42IWJHRTOAF2BPOVZOAKOXBLZBYIMDZDFFQC
EC76VUBNPZVDOVDX3KPSDF3KCNMOOGXZEALYVDATPE42BCA4GUVQC
CVYIOTB4RBPTGV3IMPNGDUYMMUEGT4DWZUGRB3AIOM35XTBWUPKAC
QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC
VCG3BRIYRTNNWYC3LOXD6KFGXOX37HAFW2HNV7WXVG2V7EUHLDZQC
5TG5LXU4DX65KMWCZ7YJHOB3VAETQAVBUHEUSQTPMA327XV2HQWAC
bool name_zombified_unique(monsters *mon, int mc, const std::string mon_name)
// Special case for Blork the orc: shorten his name to "Blork"
// to avoid mentions of e.g "Blork the orc the orc zombie".
if (mc == MONS_BLORK_THE_ORC)
mon->mname = "Blork";
// Also for the Lernaean hydra.
else if (mc == MONS_LERNAEAN_HYDRA)
mon->mname = "Lernaean hydra";
if (starts_with(mon->mname, "shaped "))
mon->flags |= MF_NAME_SUFFIX;
return (true);
}
bool name_zombie(monsters *mon, const monsters* orig)
// Special case for Blork the orc: shorten his name to "Blork"
// to avoid mentions of e.g "Blork the orc the orc zombie".
if (mc == MONS_BLORK_THE_ORC)
mon->mname = "Blork";
// Also for the Lernaean hydra.
else if (mc == MONS_LERNAEAN_HYDRA)
mon->mname = "Lernaean hydra";
std::string name;
if (base_type == OBJ_CORPSES && is_named_corpse(*this)
&& !starts_with(get_corpse_name(*this), "shaped "))
{
switch (descrip)
{
case DESC_CAP_A:
case DESC_CAP_YOUR:
descrip = DESC_CAP_THE;
break;
case DESC_NOCAP_A:
case DESC_NOCAP_YOUR:
case DESC_NOCAP_ITS:
case DESC_INVENTORY_EQUIP:
case DESC_INVENTORY:
descrip = DESC_NOCAP_THE;
break;
default:
break;
}
}
bool is_named_corpse(const item_def &corpse)
{
ASSERT(corpse.base_type == OBJ_CORPSES);
return (corpse.props.exists(CORPSE_NAME_KEY));
}
std::string get_corpse_name(const item_def &corpse)
{
ASSERT(corpse.base_type == OBJ_CORPSES);
if (!corpse.props.exists(CORPSE_NAME_KEY))
return ("");
return (corpse.props[CORPSE_NAME_KEY].get_string());
}