(not counting self-targetting since what we're trying to avoid in that case is loss of magic as well as self-damage) and add some special cases for Evaporate, so the potions use appropriate resistances without leaking information on the random choices.
Let Enhancers start with Short Blades skill 1.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6627 c06c8d41-db1a-0410-9941-cceddc491573
K33CV7EYR37TTSEXQWQ6QPHSEUFO545AIPUZOA2C47QTUCUWFPAAC F4UQYIPTS5KIDVP7WHBWGHLCXSIAGRGSCXI445EBE7JTOHW3WJMAC FNY62WM76UGY6IZQYRTRLSBLLUKUHL5N4CG5HQRSWTU2MYIXNJ5QC 4QRLZDW4KBFG34B3MCG4375NHFR3WKWSLWQKRMQ3OE5R26WCZBBQC GSJA56E3ORVIBCBA6T6WU2HE4DCLJ6NZPW76O7L54N4CYPKLJOWQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC OIT7AR4IL2ZH4ISWXG3Y7Y24ICNQ5WSUFJLSUIYD7P5VGYU5BJLQC J7KCPTGASQNRAKVKQ5FCXZ75E75PK7I2BB6MFSI3COWU6HRKTWSAC 6ARBZEUSCIPVJUQJST5HG6TKQYQZPOHWYIIJO4OD2SUECPYMLVIQC 3ZWALZFSTSIVYXY4BAY6ANGINTDACZC6RSSJTEMQSTSUIE66YOBQC VXSORUQOM2VZA4CAZDC6KPAY373NQIN3UT7CXQXTRCYXO2WM62DAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC 5LIWCQ5G74WIMISKX3SBMZFPVVYEDNUIREAK55XYR5RTNSHVGDYQC PR42BCP5BPRFD2MP5H6CIJP7E57Q6TKL6SOXZWFKMFVR2OZWHT7AC RIMJO42HB75SAZH44KZ2UH2QULOPIJLMEN4CR2CYNR2EKEKLFHSQC FLAGBNUNSIQNFDN53CDWABJRTTFWDL4PG34AI474ZKPXDEPYHOAQC YMLVBQ6M27MECUVMU3BQP3WSGR7GW4XJMQIHLGHHWMVXHMMIXOYAC 5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC 3EUPIYJNWOMOQBP2Z5SGSMWK453BXJD6KL2WFTR3NM565MEBYASAC EYHC4V76YSCWY22DQIXLVTAP5SKZLBSBQWYFPDVEXF6IW552HR5QC static bool _beam_is_harmless(bolt &beam, monsters *mon){// For enchantments, this is already handled in _nasty_beam().if (beam.name[0] == '0')return (!_nasty_beam(mon, beam));// The others are handled here.switch (beam.flavour){case BEAM_DIGGING:return (true);// Cleansing flame doesn't affect player's followers.case BEAM_HOLY:return (mons_is_holy(mon)|| is_good_god(you.religion)&& ( is_follower(mon) || mons_neutral(mon) ));case BEAM_STEAM:return (mons_res_steam(mon) >= 3);case BEAM_FIRE:return (mons_res_fire(mon) >= 3);case BEAM_COLD:return (mons_res_cold(mon) >= 3);
case BEAM_MIASMA:case BEAM_NEG:return (mons_res_negative_energy(mon) == 3);case BEAM_ELECTRICITY:return (mons_res_elec(mon) >= 3);case BEAM_POISON:return (mons_res_poison(mon) >= 3);case BEAM_ACID:return (mons_res_acid(mon) >= 3);default:return (false);}}static bool _beam_is_harmless_player(bolt &beam){#ifdef DEBUG_DIAGNOSTICSmprf(MSGCH_DIAGNOSTICS, "beam flavour: %d", beam.flavour);#endif// Shouldn't happen anyway since enchantments are either aimed at self// (not prompted) or cast at monsters and don't explode or bounce.if (beam.name[0] == '0')return (false);// The others are handled here.switch (beam.flavour){case BEAM_DIGGING:return (true);// Cleansing flame doesn't affect player's followers.case BEAM_HOLY:return (is_good_god(you.religion));case BEAM_STEAM:return (player_res_steam(false) >= 3);case BEAM_MIASMA:case BEAM_NEG:return (player_prot_life(false) >= 3);case BEAM_POISON:return (player_res_poison(false));case BEAM_POTION_STINKING_CLOUD:return (player_res_poison(false) || player_mental_clarity(false));case BEAM_ELECTRICITY:return (player_res_electricity(false));case BEAM_FIRE:case BEAM_COLD:case BEAM_ACID:// Fire and ice can destroy inventory items, acid damage equipment.return (false);default:return (false);}}
}}static bool _beam_is_harmless(bolt &beam, monsters *mon){// For enchantments, this is already handled in _nasty_beam().if (beam.name[0] == '0')return (!_nasty_beam(mon, beam));// The others are handled here.switch (beam.flavour){case BEAM_DIGGING:return (true);// Cleansing flame doesn't affect player's followers.case BEAM_HOLY:return (mons_is_holy(mon)|| is_good_god(you.religion)&& ( is_follower(mon) || mons_neutral(mon) ));case BEAM_STEAM:return (mons_res_steam(mon) >= 3);case BEAM_FIRE:return (mons_res_fire(mon) >= 3);case BEAM_COLD:return (mons_res_cold(mon) >= 3);case BEAM_MIASMA:case BEAM_NEG:return (mons_res_negative_energy(mon) == 3);case BEAM_ELECTRICITY:return (mons_res_elec(mon) >= 3);case BEAM_POISON:return (mons_res_poison(mon) >= 3);case BEAM_ACID:return (mons_res_acid(mon) >= 3);default:return (false);