This has two effecs:
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2024 c06c8d41-db1a-0410-9941-cceddc491573
QYQKV4R47PTERXVFQNNWWQVICGSOMBHW6WM5TAZAKLIYOLLPUAJAC YPFLDK2SJCAN5GETC7E6VYUBLYIJ6QISL2J34GVDTCGYEQBCCEZQC UZ6N6HOUPGVSPC5NQROEEDWMEGJA5XUWUY2AKH5QG65AZ25PVXDAC ESWIM76FGJL4QFLSHU6AC4D74PT7OPLQ7ZCJYWLZS5UCBAJDXYHAC 4UXFU3FZOCBSLDQ4S7MJKAE2H7VUHCNRDQMIY6NJ3PHYXWNGISDQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC T2AYVN57EFJQLFUFLAZDXKDAFDGTDLQIEQWQZNYFWJZBYSTYH4QQC QS3ZRS3E6KL3YJHPKYEWCWJYRBJSXD5OOYF6Y25HZVECGPJRDB5QC 7KWDC7XFNMBLSUO2HISIROBINZBX5T67LJEEXTAORXW2YZ7VWFGAC R22TTMI6WXWULC7ODKFF3QCB7MOTETQQ6IR4BUCUPOCQKQNCTT5AC QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC TAHSTXR7ROOMDFUSBUU4ZAIEWQLAS5CIRCTARLD4Q2BGNLSL7E5QC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC OP6CTAKWCAU64JXQ3USQYR5E5IFHQHNCACII5UMVRXUTZXJQOAZAC XRZPPYWPWUOM4SFNI6BHKH2UKJQNLKOV6Y7XIEPEZXE5QYRT26PAC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC 3GSAVTNKEG45AT2U734R5STSRP22WJZL3H6KUFRUWCIA6A4CZE5QC 5V47S4NNTHWTSAHV3YLO2VGH7JTUIYJ3GBPDN5ZM4UQALT2ZEXDQC 2G55UEHQ7554OPNSZVTUCZTWSHIFKGT56QEGSYFKCTX547I4AL3AC RSIUBEQUGNU4LO6KH4PKVROWQS33DAKSY4XFVGN7T3CEKSXABCSAC Y56C5OMUQ5XF2G6DKDV4R5MED44UOIUPTBBQVWQBUHYIXYA5MOZAC E5DMZFW6WCFAKTKKOQPYTQXZ2CGLWMVH64LRXDUI2UIG4VYUHIVQC 45QV77UI6QFW4234P365LD3FGJYRVWTT5455DPB324NG2NFQMKTQC CIPVRZGLOZHCERK6YPOBV3P2E4IAB4H6D5EHLRQE2O5E4P4VCBUAC 3PY3L3A4QRW3Z5Y7SHO4TMVOOP2VNCO27X2MX4DTOP2SADLBQUOAC RYT42Z6CED4KV5CCJ45CHZ3DQGLFMDCVH6CSQZNXOILULDG4MXVQC IDTLZ6PEPJP67PO7K5TODLXTBFAEVIE4C3HZCXIQK6OIAQKRVDUQC 5XSXMOBGXFLTIQE6WDXWWFVDOTUPZSIQ2FWT3YI5QMVU6D76IUYQC ITQ2EXDFLN3EHCURKYHZYVWFACD4KW7NA6CMHNKGWTDKHCHQAE6AC static void describe_monster(const monsters *mon){// first print type and equipmentstd::string text = get_monster_desc(mon);text += ".";print_formatted_paragraph(text, get_number_of_cols());if (mon->type == MONS_HYDRA){mprf("It has %d head%s.", mon->number,(mon->number > 1? "s" : ""));}
print_wounds(mon);if (!mons_is_mimic(mon->type) && mons_behaviour_perceptible(mon)){if (mon->behaviour == BEH_SLEEP){mprf("%s appears to be resting.",mons_pronoun(mon->type, PRONOUN_CAP));}// Applies to both friendlies and hostileselse if (mon->behaviour == BEH_FLEE){mprf("%s is retreating.",mons_pronoun(mon->type, PRONOUN_CAP));}// hostile with target != youelse if (!mons_friendly(mon) && mon->foe != MHITYOU){// special case: batty monsters get set to BEH_WANDER as// part of their special behaviour.if (!testbits(mon->flags, MF_BATTY)){mprf("%s doesn't appear to have noticed you.",mons_pronoun(mon->type, PRONOUN_CAP));}}}if (mon->attitude == ATT_FRIENDLY)mprf("%s is friendly.", mons_pronoun(mon->type, PRONOUN_CAP));else if (mon->attitude == ATT_NEUTRAL)mprf("%s is indifferent to you.",mons_pronoun(mon->type, PRONOUN_CAP));std::string desc = "";std::string last_desc = "";std::string tmp = "";const bool paralysed = mons_is_paralysed(mon);if (paralysed)last_desc += "paralysed";for (mon_enchant_list::const_iterator e = mon->enchantments.begin();e != mon->enchantments.end(); ++e){tmp = describe_mons_enchantment(*mon, e->second, paralysed);if (!tmp.empty()){if (!desc.empty())desc += ", ";desc += last_desc;last_desc = tmp;}}if (!last_desc.empty()){if (!desc.empty())desc += ", and ";desc += last_desc;}if (!desc.empty()){text = mons_pronoun(mon->type, PRONOUN_CAP);text += " is ";text += desc;text += ".";print_formatted_paragraph(text, get_number_of_cols());}}std::string get_monster_desc(const monsters *mon, bool full_desc){std::string desc = mon->name(DESC_CAP_A);const int mon_arm = mon->inv[MSLOT_ARMOUR];std::string weap = "";if (mon->type != MONS_DANCING_WEAPON)weap = describe_monster_weapon(mon);if (!weap.empty()){if (full_desc)desc += ",";desc += weap;}if (full_desc && mon_arm != NON_ITEM){desc += ", ";if (!weap.empty())desc += "and ";desc += "wearing ";desc += mitm[mon_arm].name(DESC_NOCAP_A);}return desc;}
const int mon_arm = menv[i].inv[MSLOT_ARMOUR];mprf("%s.", menv[i].name(DESC_CAP_A).c_str());if (menv[i].type != MONS_DANCING_WEAPON)describe_monster_weapon(&menv[i]);
if (mon_arm != NON_ITEM)mprf("%s is wearing %s.",mons_pronoun(menv[i].type, PRONOUN_CAP),mitm[mon_arm].name(DESC_NOCAP_A).c_str());if (menv[i].type == MONS_HYDRA)mprf("It has %d head%s.", menv[i].number,(menv[i].number > 1? "s" : ""));;print_wounds(&menv[i]);
describe_monster(&menv[i]);
else if (mons_behaviour_perceptible(&menv[i])){if (menv[i].behaviour == BEH_SLEEP){mprf("%s appears to be resting.",mons_pronoun(menv[i].type, PRONOUN_CAP));}// Applies to both friendlies and hostileselse if (menv[i].behaviour == BEH_FLEE){mprf("%s is retreating.",mons_pronoun(menv[i].type, PRONOUN_CAP));}// hostile with target != youelse if (!mons_friendly(&menv[i]) && menv[i].foe != MHITYOU){// special case: batty monsters get set to BEH_WANDER as// part of their special behaviour.if (!testbits(menv[i].flags, MF_BATTY))mprf("%s doesn't appear to have noticed you.",mons_pronoun(menv[i].type, PRONOUN_CAP));}}
if (menv[i].attitude == ATT_FRIENDLY)mprf("%s is friendly.", mons_pronoun(menv[i].type, PRONOUN_CAP));else if (menv[i].attitude == ATT_NEUTRAL)mprf("%s is indifferent to you.",mons_pronoun(menv[i].type, PRONOUN_CAP));const bool paralysed = mons_is_paralysed(&menv[i]);if (paralysed)mprf("%s is paralysed.", mons_pronoun(menv[i].type, PRONOUN_CAP));for (mon_enchant_list::const_iterator e = menv[i].enchantments.begin();e != menv[i].enchantments.end(); ++e){describe_mons_enchantment(menv[i], e->second, paralysed);}