turns in the cloud could kill the player.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@10344 c06c8d41-db1a-0410-9941-cceddc491573
ZUC3U5KUXZOC2B2WWYGEZRVNLNJEJ7KL56UUMZY44VOOBG2H6ETAC
IPPPBA4G2LODBP3EJIYGUAAOMHKLNBXHBD7KVX2JVDTA4DETHO4AC
5US6HAZNUVFLJCSX3YLML7U4ZR7HHXU3VM7U6JJEEULNCIPD7B6QC
3523HSJ5BHDJWA4LG27ZJS3QAECBV3NDHUUPIEEU5FVT33L2TGEAC
2NVJIPJ5NMHUI2J4WOR6KE4XZOCJIVWHQK4M2M6KG7PL24PGBDGAC
3DQXSE4YGFBBDUWK4YEOFWW4UPWILWELFSLP37SL6BERGAZJC5YAC
WFED7ME7LXUZCZY3TWX7PCPW4EAA55W626CM2OOYVJTLI2BWFTVAC
ZP2KE7A2LE7Z2S7AC45WE4CXDSEVDTWIMV2EM4IBUKXYJIDU6R7QC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
ATDAT2AONG2BDLZFBJZB4WVNRUFQAU7RDIVUBAZ6STAV62NX5R4AC
}
}
// NOTE: Keep in sync with in_a_cloud()
int max_cloud_damage(cloud_type cl_type, int power)
{
int speed = player_speed();
int dam = 0;
int resist = 0;
switch (cl_type)
{
case CLOUD_FIRE:
if (you.duration[DUR_FIRE_SHIELD])
return (0);
resist = player_res_fire();
// Intentional fall-throuigh
case CLOUD_COLD:
if (cl_type == CLOUD_COLD)
resist = player_res_cold();
if (resist <= 0)
{
dam += 32 * speed / 10;
if (resist < 0)
dam += 16 * speed / 10;
}
else
{
dam += 32 * speed / 10;
dam /= (1 + resist * resist);
}
break;
case CLOUD_STINK:
if (player_res_poison())
return (0);
dam += 2 * speed / 10;
break;
case CLOUD_POISON:
if (player_res_poison())
return (0);
dam += 9 * speed / 10;
break;
case CLOUD_STEAM:
{
ASSERT(power >= 0);
if (player_res_steam() > 0 || power == 0)
return (0);
const int base_dam = steam_cloud_damage(power * 10);
dam += (base_dam - 1) * speed / 10;
const int res_fire = player_res_fire();
if (res_fire < 0)
dam += base_dam / 2 * speed / 10;
else if (res_fire)
dam /= 1 + (res_fire / 2);
break;
}
case CLOUD_MIASMA:
if (player_prot_life() >= 3)
return (0);
dam += 11 * speed / 10;
break;
default:
break;