git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6947 c06c8d41-db1a-0410-9941-cceddc491573
G6EMU6AVVUJOJRN6NZK7HYS7KSPKTYLMSB3ERG7YWE7V2ZTLZJSQC
Y7RTDNSXNZG2YQ6VPTWOBLMTKIWABSNXCR7XRWU3QWTWRTTOXYCQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
Z7FLGOQODOWQ2FDJRMCNM6MM3FOVORG6BMJZ3AA5HADPNJTYZD2QC
E5DMZFW6WCFAKTKKOQPYTQXZ2CGLWMVH64LRXDUI2UIG4VYUHIVQC
RSIUBEQUGNU4LO6KH4PKVROWQS33DAKSY4XFVGN7T3CEKSXABCSAC
YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC
X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
// Now do the monsters:
// Now do the monsters.
// First build the message.
counted_monster_list affected_monsters;
for (int i = 0; i < MAX_MONSTERS; i++)
{
const monsters* const monster = &menv[i];
if (monster->alive() && mons_near(monster))
_record_monster_by_name(affected_monsters, monster);
}
if (!affected_monsters.empty())
{
const std::string message =
make_stringf("%s %s frozen.",
_describe_monsters(affected_monsters).c_str(),
_monster_count(affected_monsters) == 1? "is" : "are");
if (static_cast<int>(message.length()) < get_number_of_cols() - 2)
mpr(message.c_str());
else
{
// Exclamation mark to suggest that a lot of creatures were
// affected.
mpr("The monsters around you are frozen!");
}
}
// Now damage the creatures.
// Set up the cold attack.
{
hurt_monster( monster, hurt );
if (monster->hit_points < 1)
monster_die(monster, KILL_YOU, 0);
else
{
print_wounds(monster);
hurt_monster(monster, hurt);
if (mons_class_flag(monster->type, M_COLD_BLOOD)
&& coinflip())
{
monster->add_ench(ENCH_SLOW);
}
}
}
// Kill monster if necessary; cold-blooded creatures can be slowed.
if (monster->hit_points < 1)
monster_die(monster, KILL_YOU, 0);
else if (mons_class_flag(monster->type, M_COLD_BLOOD) && coinflip())
monster->add_ench(ENCH_SLOW);