and piety) with monsters' magic resistance. If the latter exceeds the former or you get a bad roll, the bad effects (haste or berserk) will happen. Otherwise you get one of a number of good effects the choice of which depends on your power again. This is probably still too strict, but much better than the older system.
Unfortunately I had to cut the influene of the number of attempts as apply_area_visible currently only transfers power. So it's a clear 50% chance of "nothing happens" each turn, leaving us at 12.5% of nothing happening during 3 turns, plus a saving throw from bad effects.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3379 c06c8d41-db1a-0410-9941-cceddc491573
G4TVXOLIF5X2MWV7I4UPT3MSQHRMGME6QRIIFAQ64C45JGYK7SIAC 3ZE757JEFAUED26M4MVEA7XXEHFNKLKAAHMVYOZSHKKBZ563AHMQC 4EZVKDQA5GM3QDTNTCKEKGH4F6LGAYNLBT756PXODKZ2B7C4ZVHAC 23PFLB2E4QHL5SF3Q2YV5FXRH6MFHENEU2ACVC572ZCYDXCBZVQAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC 5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC if (!resist){if (one_chance_in(3) && mons->add_ench(mon_enchant(ENCH_CONFUSION,0, KC_YOU, (16 + random2avg(13, 2)) * 10))){simple_monster_message(mons, " looks confused.");return (1);}if (one_chance_in(4) && mons->add_ench(ENCH_FEAR)){simple_monster_message(mons, " turns to flee.");return (1);}if (one_chance_in(4)){mons->put_to_sleep();simple_monster_message(mons, " falls asleep!");return (1);}}if (one_chance_in(3) && mons->add_ench(mon_enchant(ENCH_HASTE, 0,KC_YOU, (16 + random2avg(13, 2)) * 10))){simple_monster_message(mons, " is annoyed!");return (1);}if (mons->can_go_berserk()) // seriously annoyed now{
if (one_chance_in(resist+1)) // nothing happens, whew!return (0);if (one_chance_in(4) && mons->can_go_berserk())
simple_monster_message(mons, " resists!");return (0);}switch (random2(pow)){default: // nothing happensreturn (0);
case 0:return (0); // handled abovecase 1:case 2:case 3:case 4:if (!mons->add_ench(mon_enchant(ENCH_CONFUSION, 0, KC_YOU,(16 + random2avg(13, 2)) * 10)))return (0);simple_monster_message(mons, " looks confused.");break;case 5:
if (mons->add_ench(mon_enchant(ENCH_CONFUSION, 0, KC_YOU,(16 + random2avg(13, 2)) * 10))){simple_monster_message(mons, " looks confused.");return (1);}break;
if (!mons->add_ench(ENCH_NEUTRAL))return (0);simple_monster_message(mons, " seems impressed!");break;
case 18:if (mons->add_ench(ENCH_NEUTRAL)){simple_monster_message(mons, " seems impressed!");return (1);}break;case 19:case 20:mons->attitude = ATT_NEUTRAL; // but same message as abovesimple_monster_message(mons, " seems impressed!");return (1);
if (!mons->add_ench(mon_enchant(ENCH_PARALYSIS, 0, KC_YOU,(16 + random2avg(13, 2)) * 10)))return (0);simple_monster_message(mons, " freezes in fright!");break;default:// permanently neutral, but same message as enchantmentmons->attitude = ATT_NEUTRAL;simple_monster_message(mons, " seems impressed!");break;