Fix 1922815: blood potion assert. Implement 1828037: prompt before entering harmful clouds
And tidy up fountain handling, dried non-magic fountains may now also start flowing again.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3878 c06c8d41-db1a-0410-9941-cceddc491573
OEISFRW2B7E4YRJSWXNXBH2IAJO4O3LHNYFPFD3MBY57LYVRHMZQC POETVWRYRKRTPDOAM6YLJRBAWF7QDCOUCK3JPQURB2Y4PJN7EE2QC QUHEENPY2PYTEUS7C4R3CKE4FHSHGR2BIXB6EW676ESX3727PA3AC U6ILMKBXTQZYT62IGD2CALYNU4VQGRSTHN6QBFBU7BVUBHWYOEQQC QKGDOYIYKE6B36ION5O2DRW65DWWPZMYNWJVH7LJJ7FPGGM2MYAQC LXLUKS5CKXBUSVV3QTZ4SM7NWSY6JFQEBHUBQW2VUEU5DOL3RRLAC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC UDYVF65OZSNPANLHDI3ODBEGUAKAVZ4KH4OZFAKR2CQJPO4AXU6QC 25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC SKV6JBDAWUWTFECFSQARSNA3DDPUFCR7N3T7D5J35NYTEDMXLP3QC ILOED4VB4I6VPAUTR75ZWX6MXDYXB5DO2EDK2UH67O3HNKWV23RQC AVCMVFA3MKCXHO6H44UK5KJNIHTGQV7UA7GYXM26VI6TXXU5ZN6QC J7KCPTGASQNRAKVKQ5FCXZ75E75PK7I2BB6MFSI3COWU6HRKTWSAC HIRKGUMNJPWKSVTR6TVBPD3MWNA63CEHCLCIPWEMGDFHVB3NPLDQC OONYLF4DAPLIYLBNNRW74IVT5BBTWI4XHQBXSNSPVRX3FTKJBTRAC MJWFTUS66PTCNEYXEJA3CUJFXNWXIKDD6H3V24PW7HK64NSVOFSAC STQDS62PD6PCLYBAB7LPYTG47WMBJP3FIJL55UHC3XFDPGERC3UQC const int cloud = env.cgrid[x][y];if (cloud != EMPTY_CLOUD){const cloud_type ctype = env.cloud[ cloud ].type;// don't prompt if already in a cloud of the same typeif (is_damaging_cloud(ctype, false)&& (env.cgrid[you.x_pos][you.y_pos] == EMPTY_CLOUD|| ctype != env.cloud[ env.cgrid[you.x_pos][you.y_pos] ].type)){std::string prompt = make_stringf("Really step into that cloud of %s?",cloud_name(ctype).c_str());if (!yesno(prompt.c_str(), false, 'n')){canned_msg(MSG_OK);you.turn_is_over = false;return (false);}}}
}static void _maybe_restart_fountain_flow(const int x, const int y, int tries){while (0 < tries--){if (!one_chance_in(100))continue;if (grd[x][y] > DNGN_SPARKLING_FOUNTAIN)grd[x][y] = static_cast<dungeon_feature_type>(grd[x][y] - 1);else // grid == DNGN_DRY_FOUNTAIN_Igrd[x][y] = DNGN_BLUE_FOUNTAIN;// clean bloody floorif (is_bloodcovered(x,y))env.map[x][y].property = FPROP_NONE;// chance of cleaning adjacent squaresfor (int i = -1; i <= 1; i++)for (int j =-1; j <= 1; j++){if (is_bloodcovered(x+i,y+j)&& one_chance_in(5)){env.map[x+i][y+j].property = FPROP_NONE;}}}
for (int i=0; i<fountain_checks; i++){if (one_chance_in(100)){if (grd[cx][cy] > DNGN_SPARKLING_FOUNTAIN)grd[cx][cy] =static_cast<dungeon_feature_type>(grd[cx][cy] - 1);// clean bloody floorif (is_bloodcovered(cx,cy))env.map[cx][cy].property = FPROP_NONE;// chance of cleaning adjacent squaresfor (int k=-1; k<=1; k++){for (int l=-1; l<=1; l++)if (is_bloodcovered(cx+k,cy+l)&& one_chance_in(5)){env.map[cx+k][cy+l].property = FPROP_NONE;}}}}
_maybe_restart_fountain_flow(cx, cy, fountain_checks);