creator of the cloud is now remembered with the cloud, so kills from friendlies' poison clouds are credited appropriately.
Increased MAX_CLOUDS to 180.
Breaks save compatibility.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1076 c06c8d41-db1a-0410-9941-cceddc491573
B62ICMDTN5V7R7RBL4JALFVKEMVOOVLRSJASRNYS6CGFWBEEF5JQC
NQMXQ6OQVUSC7Y7F7IL252QW4A5JED224EECNHWAM4ZZYVNY745AC
X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
DODCHP2S4I6VZKQAVXX6D76OPNFI2YWZ4XH3HZTMAJZXA2RJ3XRQC
AOAJ6D3OKSELEYKAT55XCVU5LYJ7SMCZKC6DIEGLLB3TF2LEENWQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC
R22TTMI6WXWULC7ODKFF3QCB7MOTETQQ6IR4BUCUPOCQKQNCTT5AC
UDYVF65OZSNPANLHDI3ODBEGUAKAVZ4KH4OZFAKR2CQJPO4AXU6QC
ZP2KE7A2LE7Z2S7AC45WE4CXDSEVDTWIMV2EM4IBUKXYJIDU6R7QC
GR6ZABTGAAQTKZBVA7PTOYQG6G3ACF62ITT5COLHTRN2HGIPRG2AC
CAGCTYIUYWDHQAJOLVLKOEV5HG6K5ZG7IDHONLIG6BDNCWZJAK4AC
place_cloud(CLOUD_FIRE, you.x_pos, you.y_pos,
random2(totalstrength / 4 + 1) + random2(totalstrength / 4 + 1) +
random2(totalstrength / 4 + 1) + random2(totalstrength / 4 + 1) + 1);
place_cloud(
CLOUD_FIRE, you.x_pos, you.y_pos,
random2(totalstrength / 4 + 1) + random2(totalstrength / 4 + 1) +
random2(totalstrength / 4 + 1) + random2(totalstrength / 4 + 1) + 1,
KC_YOU);
switch (env.cloud[wc].type)
{
case CLOUD_FIRE_MON:
case CLOUD_STINK_MON:
case CLOUD_COLD_MON:
case CLOUD_POISON_MON:
case CLOUD_STEAM_MON:
case CLOUD_MIASMA_MON:
monster_die(monster, KILL_MISC, 0);
break;
default:
monster_die(monster, KILL_YOU, 0);
}
switch (env.cloud[wc].type)
{
case CLOUD_FIRE:
case CLOUD_FIRE_MON:
case CLOUD_COLD:
case CLOUD_COLD_MON:
case CLOUD_STEAM:
case CLOUD_STEAM_MON:
monster->speed_increment = 1;
}
mon_enchant death_ench( ENCH_NONE, 0, env.cloud[wc].whose );
monster_die(monster, death_ench.killer(), death_ench.kill_agent());
CLOUD_NONE, // 0
CLOUD_FIRE, // 1
CLOUD_STINK, // 2
CLOUD_COLD, // 3
CLOUD_POISON, // 4
CLOUD_GREY_SMOKE = 5, // 5: found 11jan2000 {dlb}
CLOUD_BLUE_SMOKE = 6, // 6: found 11jan2000 {dlb}
CLOUD_PURP_SMOKE = 7, // was: CLOUD_ENERGY and wrong 19jan2000 {dlb}
CLOUD_STEAM, // 8
CLOUD_MIASMA = 9, // 9: found 11jan2000 {dlb}
CLOUD_BLACK_SMOKE = 10, //was: CLOUD_STICKY_FLAME and wrong 19jan2000 {dlb}
CLOUD_NONE,
CLOUD_FIRE,
CLOUD_STINK,
CLOUD_COLD,
CLOUD_POISON,
CLOUD_GREY_SMOKE,
CLOUD_BLUE_SMOKE,
CLOUD_PURP_SMOKE,
CLOUD_STEAM,
CLOUD_MIASMA,
CLOUD_BLACK_SMOKE,
CLOUD_DEBUGGING = 99, // 99: used once as 'nonexistent cloud' {dlb}
// if env.cloud_type > 100, it is a monster's cloud {dlb}
CLOUD_FIRE_MON = 101, // 101: found 11jan2000 {dlb}
CLOUD_STINK_MON = 102, // 102: found 11jan2000 {dlb}
CLOUD_COLD_MON = 103, // 103: added 11jan2000 {dlb}
CLOUD_POISON_MON = 104, // 104
CLOUD_GREY_SMOKE_MON = 105, // 105: found 11jan2000 {dlb}
CLOUD_BLUE_SMOKE_MON = 106, // 106: found 11jan2000 {dlb}
CLOUD_PURP_SMOKE_MON = 107, // 107:
CLOUD_STEAM_MON = 108, // 108: added 11jan2000 {dlb}
CLOUD_MIASMA_MON = 109, // 109: added 11jan2000 {dlb}
CLOUD_BLACK_SMOKE_MON = 110 // 110: added 19jan2000 {dlb}
CLOUD_DEBUGGING = 99 // 99: used once as 'nonexistent cloud' {dlb}
void check_place_cloud( int cl_type, int x, int y, int lifetime );
void place_cloud(unsigned char cl_type, unsigned char ctarget_x, unsigned char ctarget_y, unsigned char cl_range);
void check_place_cloud( int cl_type, int x, int y, int lifetime,
kill_category whose );
void place_cloud(int cl_type, int ctarget_x, int ctarget_y, int cl_range,
kill_category whose);
// Places a cloud with the given stats. May delete old clouds to make way
// if there are too many (MAX_CLOUDS == 30) on level. Will overwrite an old
// Places a cloud with the given stats. May delete old clouds to
// make way if there are too many on level. Will overwrite an old
cloud_type = YOU_KILL(beam.thrower) ? CLOUD_STINK : CLOUD_STINK_MON;
if (beam.flavour == BEAM_MIASMA)
cloud_type = YOU_KILL(beam.thrower) ?
CLOUD_MIASMA : CLOUD_MIASMA_MON;
big_cloud( cloud_type, x, y, 0, 9 );
cloud_type = beam.flavour == BEAM_MIASMA? CLOUD_MIASMA : CLOUD_STINK;
big_cloud( cloud_type, whose_kill(beam), x, y, 0, 9 );
if (((env.cloud[clouty].type == CLOUD_COLD
|| env.cloud[clouty].type == CLOUD_COLD_MON)
&& (beam.flavour == BEAM_FIRE
|| beam.flavour == BEAM_LAVA))
|| ((env.cloud[clouty].type == CLOUD_FIRE
|| env.cloud[clouty].type == CLOUD_FIRE_MON)
&& beam.flavour == BEAM_COLD))
if ((env.cloud[clouty].type == CLOUD_COLD
&& (beam.flavour == BEAM_FIRE
|| beam.flavour == BEAM_LAVA))
|| (env.cloud[clouty].type == CLOUD_FIRE
&& beam.flavour == BEAM_COLD))