The replacement is str_monam() and mons_type_name(). str_monam() should probably be folded into actor::name. I think. Deaths from zombies, skeletons and simulacra will not handle the name correctly; needs a further hack.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1484 c06c8d41-db1a-0410-9941-cceddc491573
E5DMZFW6WCFAKTKKOQPYTQXZ2CGLWMVH64LRXDUI2UIG4VYUHIVQC MZXKH5NHXRMX5Y5FG4XXNHZQ7HTQZFX3ARQU55DO4RM5NR3GIAIQC UNDSTX5P3ROLROGVQQVSMTQ5RHZI6G2MST4XLL3AJTHPJSGLCP6QC 2XG4UYEUFFZV4ARZJXQ36KQBK3XEAY77KEJOJ4X27NP5IBSF27YQC YSIROVP23L7IDSVTBG7OQFQWLORVWWYINH7WPWTZO2I5BH4S7YPQC SW3RLYFNRT3IJBK6LYKHKP2J2YDU7SXQWAJZX7U6S7ICYW43OMNQC X2FMEN4E345XD26Z2X7JMJ7VGHOGCGIELMHQRE2ITLVNQACP3NOQC XRZPPYWPWUOM4SFNI6BHKH2UKJQNLKOV6Y7XIEPEZXE5QYRT26PAC Y2VKZYSQXLYYQNB6OSQP44IYLT2M56SE2ZW2MHOAZUODKCVDHEAQC ZPE6VZEG2HBMBTIFQAE5OT4JHVUIIKLP767TD6ADPCLHI6G2KA5AC V2OQTNDCAEYXJRGSU7BG4TMLIQLT7X32ILOXW7KEWVL2R33B6XJQC MX2KOWAIE37VLSQJWXVEDVQVB3DL325Q7YFUSSHYMAIH53Y74IJQC YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC RC6L3CIBLJEH4GWRFD7UQNGI6PZT74FRUVOYHSAN2XCC74NZUASQC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC NNG27Y5ZQAZX6UD7F7M4F6KEZBEDFXPEEC3LFUSX4ESKT7K6UJQAC X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC CIPVRZGLOZHCERK6YPOBV3P2E4IAB4H6D5EHLRQE2O5E4P4VCBUAC 7AMQN7MITMXBNVDAK5VOXTQ4TZIAOD6ZLOFJG7GQMBTY23Y2BKSAC 4PUWNQO7QMEWY3GSUHLBKMYOAI7ASYSRM32KDGTA7DLNDIGFAWFAC LS3DAZVRDCXVN2BKBC6RGCKO3R43Z7HKG4GXJWLBK4AKBL2G6QDQC TXFN7TLLKYEM2W5HVB2UXKXUH7MTXOU77PXBPMP7NJKXSLVX5PMQC 74LQ7JXVLAFSHLI7LCBKFX47CNTYSKGUQSXNX5FCIUIGCC2JTR3QC YZXHBEKWQPY4BTKG5FFGLP3AIRBQSTKQVLJJHWKQEA3HTN4UHDYQC 33ZMPQC6OXTESW7SRW765GRNJUEJRSYONRVZVIEUDAUEJ2PPMB4AC AY7Z23L4WPEFEL2HMF3KX3IM6OYMLB2QWY3AIHHQ37CMRVCXRCMAC ZCPJIAG7SEY2TUBAGOFWCEJYXSBT36CZU5VO7BWEGSLJ4K24B4TAC VUCSN63AVSEOMC6O4BFGDHTO6I2GOLUXODTSGVZ37NTJ72Z3HIOQC QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC W5VEC2PBIM5DMU5233HOWAZUEPTGWJRZZIA3H35YYQQW6BTP6XUAC R325RPUV26YH65VIJKYEFZ2XCVXQHO5N3ELPX6RNQ5TSI3JJNQGQC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC VNHFP63ZLLZU3A3PLXP4BITX57DUIYDHFOHQYK3BOBHV3S64G26QC TAVHZJPVNJBZR7CUURAOYNDZPNVQ3AGHTXDEP5K4JGYETBLQJDRQC TV3ZC6WOZKSQQJQN26JIVKCHK6UK7WMDBYZDUYRWEAZ4JB4YVNAAC RISMOCQM6BKK4XSIRKYLOBB2UPDYJNDAL6OGIIR5GGNZQAK5YSZAC R22TTMI6WXWULC7ODKFF3QCB7MOTETQQ6IR4BUCUPOCQKQNCTT5AC Y56C5OMUQ5XF2G6DKDV4R5MED44UOIUPTBBQVWQBUHYIXYA5MOZAC QDWDUURSNLMT6AXNNJ3DEQCWAKCAIHV6MP5F7QGIBGXOG2BI2NPQC ODNAIEJW732NG7USKQKCIP4R4DAEYXXJQX6LY7TIN32NKE75454QC X3RDT655FEYO6XEVPIUAPEPJZAFE55KZBH2AZOLK3NGHINMVIGFQC QNKMXCJSGRBEPE6ZNPEXU5EQIOME6EI4DECVC56GLOBCMGWWE6MQC AOAJ6D3OKSELEYKAT55XCVU5LYJ7SMCZKC6DIEGLLB3TF2LEENWQC RIMJO42HB75SAZH44KZ2UH2QULOPIJLMEN4CR2CYNR2EKEKLFHSQC EWYQBSLHJPWW2HWOPSPK7BYJ4Q62IYCM5SI4YK6QQS6TTDWOM7BQC {char namebuf[ITEMNAME_SIZE];moname(monster->type, true, DESC_NOCAP_A, namebuf);std::string iname = namebuf;for (unsigned i = 0; i < Options.note_monsters.size(); ++i) {if (Options.note_monsters[i].matches(iname)) {
{const std::string iname = mons_type_name(monster->type, DESC_NOCAP_A);for (unsigned i = 0; i < Options.note_monsters.size(); ++i){if (Options.note_monsters[i].matches(iname)){
// last updated 12may2000 {dlb}/* ************************************************************************ called from: bang - beam - debug - direct - effects - fight - item_use -* monstuff - mstuff2 - ouch - spells1 - spells2 - spells3 -* spells4* *********************************************************************** */// mons_wpn only important for dancing weapons -- bwrconst char *monam(const monsters *mon,int mons_num, int mons, bool vis,description_level_type desc, int mons_wpn = NON_ITEM);
// these front for monamconst char *ptr_monam(const monsters *mon, description_level_type desc,bool force_seen = false);std::string str_monam(const monsters *mon, description_level_type desc,
// this is the old monam(), ptr_monam()std::string str_monam(const monsters& mon, description_level_type desc,
// last updated 12may2000 {dlb}/* ************************************************************************ called from: debug - itemname - mon-util* *********************************************************************** */const char *moname(int mcl, bool vis, description_level_type descrip,char glog[ ITEMNAME_SIZE ]);
return (ptr_monam(mon, desc, force_seen));}
// Handle non-visible case firstif ( !force_seen && !player_monster_visible(&mon) ){switch (desc){case DESC_CAP_THE: case DESC_CAP_A:return "It";case DESC_NOCAP_THE: case DESC_NOCAP_A: case DESC_PLAIN:return "it";default:mpr("XXX OOPS!", MSGCH_DIAGNOSTICS);return "it (buggy)";}}// Assumed visible from now on
/* ------------------------- monam/moname ------------------------- */const char *ptr_monam( const monsters *mon, description_level_type desc,bool force_seen ){// We give an item type description for mimics now, note that// since gold mimics only have one description (to match the// examine code in direct.cc), we won't bother going through// this for them. -- bwrif (mons_is_mimic( mon->type ) && mon->type != MONS_GOLD_MIMIC)
// Various special cases:// non-gold mimics, dancing weapons, ghosts, Pan demonsif ( mons_is_mimic(mon.type) && mon.type != MONS_GOLD_MIMIC )
return (mimic_name_buff);
if (mon.type == MONS_DANCING_WEAPON && mon.inv[MSLOT_WEAPON] != NON_ITEM){item_def item = mitm[mon.inv[MSLOT_WEAPON]];unset_ident_flags( item, ISFLAG_KNOW_CURSE | ISFLAG_KNOW_PLUSES );return item.name(desc);
return (monam( mon, mon->number, mon->type,force_seen || player_monster_visible( mon ),desc, mon->inv[MSLOT_WEAPON] ));}
if (mon.type == MONS_PLAYER_GHOST)return mon.ghost->name + "'s ghost";
const char *monam( const monsters *mon,int mons_num, int mons, bool vis,description_level_type desc, int mons_wpn ){static char gmo_n[ ITEMNAME_SIZE ];char gmo_n2[ ITEMNAME_SIZE ] = "";
if (mon.type == MONS_PANDEMONIUM_DEMON)return mon.ghost->name;
// These need their description level handled here instead of// in monam().if (mons == MONS_SPECTRAL_THING || mons_genus(mons) == MONS_DRACONIAN)
// Start with the prefix.// (Uniques don't get this, because their names are proper nouns.)if ( !mons_is_unique(mon.type) )
case DESC_CAP_THE:strcpy(gmo_n, "The");break;case DESC_NOCAP_THE:strcpy(gmo_n, "the");break;case DESC_CAP_A:strcpy(gmo_n, "A");break;case DESC_NOCAP_A:strcpy(gmo_n, "a");break;case DESC_PLAIN: /* do nothing */ ;default:break;//default: DEBUGSTR("bad desc flag");
case DESC_CAP_THE: result = "The "; break;case DESC_NOCAP_THE: result = "the "; break;case DESC_CAP_A: result = "A "; break;case DESC_NOCAP_A: result = "a "; break;case DESC_PLAIN: default: break;
case MONS_SKELETON_SMALL:case MONS_SKELETON_LARGE:moname(mons_num, vis, desc, gmo_n);strcat(gmo_n, " skeleton");
case MONS_ZOMBIE_SMALL: case MONS_ZOMBIE_LARGE:case MONS_SKELETON_SMALL: case MONS_SKELETON_LARGE:case MONS_SIMULACRUM_SMALL: case MONS_SIMULACRUM_LARGE:nametype = mon.number;
case MONS_SIMULACRUM_SMALL:case MONS_SIMULACRUM_LARGE:moname(mons_num, vis, desc, gmo_n);strcat(gmo_n, " simulacrum");break;case MONS_SPECTRAL_THING:strcat(gmo_n, " spectral ");moname(mons_num, vis, DESC_PLAIN, gmo_n2);strcat(gmo_n, gmo_n2);break;
case MONS_BLACK_DRACONIAN: strcat(gmo_n, "black "); break;case MONS_MOTTLED_DRACONIAN: strcat(gmo_n, "mottled "); break;case MONS_YELLOW_DRACONIAN: strcat(gmo_n, "yellow "); break;case MONS_GREEN_DRACONIAN: strcat(gmo_n, "green "); break;case MONS_PURPLE_DRACONIAN: strcat(gmo_n, "purple "); break;case MONS_RED_DRACONIAN: strcat(gmo_n, "red "); break;case MONS_WHITE_DRACONIAN: strcat(gmo_n, "white "); break;case MONS_PALE_DRACONIAN: strcat(gmo_n, "pale "); break;}moname( mons, vis, DESC_PLAIN, gmo_n2 );strcat( gmo_n, gmo_n2 );break;case MONS_DANCING_WEAPON:// safety check -- if we don't have/know the weapon use default nameif (mons_wpn == NON_ITEM)moname( mons, vis, desc, gmo_n );else{item_def item = mitm[mons_wpn];unset_ident_flags( item, ISFLAG_KNOW_CURSE | ISFLAG_KNOW_PLUSES );strncpy( gmo_n, item.name(desc).c_str(), sizeof gmo_n );
case MONS_BLACK_DRACONIAN: result += "black "; break;case MONS_MOTTLED_DRACONIAN: result += "mottled "; break;case MONS_YELLOW_DRACONIAN: result += "yellow "; break;case MONS_GREEN_DRACONIAN: result += "green "; break;case MONS_PURPLE_DRACONIAN: result += "purple "; break;case MONS_RED_DRACONIAN: result += "red "; break;case MONS_WHITE_DRACONIAN: result += "white "; break;case MONS_PALE_DRACONIAN: result += "pale "; break;
case MONS_PLAYER_GHOST:strcpy(gmo_n, mon->ghost->name.c_str());strcat(gmo_n, "'s ghost");break;case MONS_PANDEMONIUM_DEMON:strcpy(gmo_n, mon->ghost->name.c_str());break;default:moname(mons, vis, desc, gmo_n);break;
const char *moname(int mons_num, bool vis, description_level_type descrip,char glog[ ITEMNAME_SIZE ]){glog[0] = 0;char gmon_name[ ITEMNAME_SIZE ] = "";strcpy( gmon_name, seekmonster( mons_num )->name );if (!vis)
// Add suffixes.switch (mon.type)
switch (descrip){case DESC_CAP_THE:case DESC_CAP_A:strcpy(glog, "It");break;case DESC_NOCAP_THE:case DESC_NOCAP_A:case DESC_PLAIN:strcpy(glog, "it");break;case DESC_NOCAP_YOUR:strcpy(glog, "its");break;case DESC_CAP_YOUR:strcpy(glog, "Its");break;default:strcpy(glog, "Its buggy");}strcpy(gmon_name, glog);return (glog);
case MONS_ZOMBIE_SMALL: case MONS_ZOMBIE_LARGE:result += " zombie"; break;case MONS_SKELETON_SMALL: case MONS_SKELETON_LARGE:result += " skeleton"; break;case MONS_SIMULACRUM_SMALL: case MONS_SIMULACRUM_LARGE:result += " simulacrum"; break;
switch (descrip){case DESC_CAP_THE:case DESC_CAP_YOUR:strcpy(glog, "The ");break;case DESC_NOCAP_THE:case DESC_NOCAP_YOUR:strcpy(glog, "the ");break;case DESC_CAP_A:strcpy(glog, "A");break;case DESC_NOCAP_A:strcpy(glog, "a");break;case DESC_PLAIN:default:break;// default: DEBUGSTR("bad monster descrip flag");}
result.insert(1, "n");}// All done.return result;}
switch (toupper(gmon_name[0])){case 'A':case 'E':case 'I':case 'O':case 'U':strcat(glog, "n ");break;default:strcat(glog, " ");break;}
case DESC_CAP_THE: result = "The "; break;case DESC_NOCAP_THE: result = "the "; break;case DESC_CAP_A: result = "A "; break;case DESC_NOCAP_A: result = "a "; break;case DESC_PLAIN: default: break;
"yells in some weird language." };mprf("The Singing Sword %s", suffixes[random2(32)]);
"yells in some weird language."};const int num_suffixes = sizeof(suffixes) / sizeof(suffixes[0]);msg::stream << "The Singing Sword "<< suffixes[random2(num_suffixes)] << std::endl;
mprf("You %s %s%s%s%s",attack_verb.c_str(),ptr_monam(def, DESC_NOCAP_THE),verb_degree.c_str(),debug_damage_number().c_str(),attack_strength_punctuation().c_str());
msg::stream << "You " << attack_verb << ' '<< str_monam(*def, DESC_NOCAP_THE)<< verb_degree << debug_damage_number()<< attack_strength_punctuation()<< std::endl;
mprf("You %s %s.", attack_verb.c_str(),ptr_monam(def, DESC_NOCAP_THE));
msg::stream << "You " << attack_verb << ' '<< str_monam(*def, DESC_NOCAP_THE) << '.' << std::endl;
beam.name.c_str(),engulfs? "engulfs" : "hits",player_monster_visible(&menv[tid])?ptr_monam(mon, DESC_NOCAP_THE): "something");
beam.name.c_str(),engulfs? "engulfs" : "hits",player_monster_visible(&menv[tid])?str_monam(*mon, DESC_NOCAP_THE).c_str(): "something");