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, // 0CLOUD_FIRE, // 1CLOUD_STINK, // 2CLOUD_COLD, // 3CLOUD_POISON, // 4CLOUD_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, // 8CLOUD_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, // 104CLOUD_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))