unholy.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5611 c06c8d41-db1a-0410-9941-cceddc491573
XMQ2SLCLZOJMBDJYLSQKQRJ3FGLMEEESBS4N3C2LD4Y4BFHRU4HQC KQ3XGKG323ZC524VNSNYVEVBL6EBS5IVQNS2M7N5YC4ZFUOZCJXAC S7OKQRMOVK7F3N6SDKH42VBZ5IB2H3ZS4IIWOG32ILO4NVILL65AC RDLF4VIJMMHHL2OCQEXOK6HNCS5QX3FZF3S4IHPY3OZUKC2FZ24AC WZWOQZCXUB7QX7PGQMIUCH5JM5YME25GE2GMMT2NIJP5OIZUZLBQC OJXLFQMDM4XF2WSDVMAC3FXG5HJQB3QAQXLZM35RA34YYLTAP2HQC SO6OPFUUGKUK24KOXKAPNXR334J7NG76F3Y7ZGC6H3XYSGWTWXWAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC LX2YKPU73XMOVRWVEYQ4QRCVXLBYLVVGTEYGKA6WO5IORK27RMGAC KLCR26P7MSX4ZWIHQHRK7BZH7M2QGCITN46FCFVHNX7U7WQWYDAQC MED2SJP7F7BIPCRUXOJRTELR3EOKRN5PFOO2LLMQOEIJLID3LTOAC QZUSP5WXCHQKOZ6TO574PITHBAJHPDBSVJJ6YUGFMJNGVN6A427AC L5J2VB34AN7QGOSP5SVJ5FTXDVYCY34VHN3M6VLRGPBMPUHBNZQQC QFHC4VZHHDG5PKLY7A263OJFT2OQ3MF2HX423AKINPRNR5UUT7LQC EY6KXNVGJ5OWJQWBE3W5E4T625XZXUNJMXIEQLCZUAJASUK4KHMQC 7KBQYZSNXBMQGEEOAZI6YU34XZ5ECFGTJA32QIJDZP2NYS3SF3IQC ARUYZ6FYS52BELXCRNAU3EREQHTFTIGZWHZPL4OLKQRL6MFNMCHAC N3NXT75G2JYKVON7ZTE3TG34BBWITCL2HHVQ6H7QREYCDTVQFSGAC NFJKJYTT6CBLOKLGT6HIVIDEPWXMGXJV5AAL37SBZTG2HSFMJMKQC M3CHZA76JC34OROJ2A3HD5KBAFYMU3D7HYZPXT6UOD5DUNIDWT7QC I67F2U3V27EIFFIEOTQN3G3NFT7PW2J7EHUMDEUC4BVNBMSJAPUQC WVIVA3M3ABBQTBYTCFE2W53IE4IZ223FBSQ6P7BACWKIJPYA66ZQC HHKRUVC6WMVKQRUQRYB5VAEDXUS6TMAKO7BSTBGVVL2AUOEBFUJAC bool cast_call_imp(int pow, bool god_gift = false);bool summon_lesser_demon(int pow, bool god_gift = false);bool summon_common_demon(int pow, bool god_gift = false);bool summon_greater_demon(int pow, bool god_gift = false);bool cast_summon_demon(int pow, bool god_gift = false);bool cast_demonic_horde(int pow, bool god_gift = false);bool cast_summon_greater_demon(int pow, bool god_gift = false);
}return (success);}bool cast_call_imp(int pow, bool god_gift){bool success = false;monster_type mon = (one_chance_in(3)) ? MONS_WHITE_IMP :(one_chance_in(7)) ? MONS_SHADOW_IMP: MONS_IMP;const int dur = std::min(2 + (random2(pow) / 4), 6);if (create_monster(mgen_data(mon, BEH_FRIENDLY, dur, you.pos(),you.pet_target,god_gift ? MF_GOD_GIFT : 0)) != -1){success = true;mpr((mon == MONS_WHITE_IMP) ? "A beastly little devil appears in a puff of frigid air." :(mon == MONS_SHADOW_IMP) ? "A shadowy apparition takes form in the air.": "A beastly little devil appears in a puff of flame.");}elsecanned_msg(MSG_NOTHING_HAPPENS);return (success);}static bool _summon_demon_class_wrapper(int pow, bool god_gift,demon_class_type dct, int dur,bool friendly, bool charmed){bool success = false;mpr("You open a gate to Pandemonium!");monster_type mon = summon_any_demon(dct);if (create_monster(mgen_data(mon,friendly ? BEH_FRIENDLY :charmed ? BEH_CHARMED : BEH_HOSTILE,dur, you.pos(),friendly ? you.pet_target : MHITYOU,god_gift ? MF_GOD_GIFT : 0)) != -1){success = true;mprf("A demon appears!%s",friendly ? "" :charmed ? " You don't feel so good about this...": " It doesn't look very happy.");}return (success);}bool summon_lesser_demon(int pow, bool god_gift){return _summon_demon_class_wrapper(pow, god_gift, DEMON_LESSER,std::min(2 + (random2(pow) / 4), 6),random2(pow) > 3, false);}bool summon_common_demon(int pow, bool god_gift){return _summon_demon_class_wrapper(pow, god_gift, DEMON_COMMON,std::min(2 + (random2(pow) / 4), 6),random2(pow) > 3, false);}bool summon_greater_demon(int pow, bool god_gift){return _summon_demon_class_wrapper(pow, god_gift, DEMON_GREATER,5, false, random2(pow) > 5);}bool cast_summon_demon(int pow, bool god_gift){mpr("You open a gate to Pandemonium!");bool success = summon_common_demon(pow, god_gift);if (!success)canned_msg(MSG_NOTHING_HAPPENS);return (success);}bool cast_demonic_horde(int pow, bool god_gift){bool success = false;const int how_many = 7 + random2(5);mpr("You open a gate to Pandemonium!");for (int i = 0; i < how_many; ++i){if (summon_lesser_demon(pow, god_gift))success = true;
bool summon_lesser_demon(int pow, bool god_gift = false);bool summon_common_demon(int pow, bool god_gift = false);bool summon_greater_demon(int pow, bool god_gift = false);bool cast_summon_demon(int pow, bool god_gift = false);bool cast_demonic_horde(int pow, bool god_gift = false);
canned_msg(MSG_NOTHING_HAPPENS);return (success);}bool cast_call_imp(int pow, bool god_gift){bool success = false;monster_type mon = (one_chance_in(3)) ? MONS_WHITE_IMP :(one_chance_in(7)) ? MONS_SHADOW_IMP: MONS_IMP;const int dur = std::min(2 + (random2(pow) / 4), 6);if (create_monster(mgen_data(mon, BEH_FRIENDLY, dur, you.pos(),you.pet_target,god_gift ? MF_GOD_GIFT : 0)) != -1){success = true;mpr((mon == MONS_WHITE_IMP) ? "A beastly little devil appears in a puff of frigid air." :(mon == MONS_SHADOW_IMP) ? "A shadowy apparition takes form in the air.": "A beastly little devil appears in a puff of flame.");}else
}static bool _summon_demon_class_wrapper(int pow, bool god_gift,demon_class_type dct, int dur,bool friendly, bool charmed){bool success = false;mpr("You open a gate to Pandemonium!");monster_type mon = summon_any_demon(dct);if (create_monster(mgen_data(mon,friendly ? BEH_FRIENDLY :charmed ? BEH_CHARMED : BEH_HOSTILE,dur, you.pos(),friendly ? you.pet_target : MHITYOU,god_gift ? MF_GOD_GIFT : 0)) != -1){success = true;mprf("A demon appears!%s",friendly ? "" :charmed ? " You don't feel so good about this...": " It doesn't look very happy.");}return (success);}bool summon_lesser_demon(int pow, bool god_gift){return _summon_demon_class_wrapper(pow, god_gift, DEMON_LESSER,std::min(2 + (random2(pow) / 4), 6),random2(pow) > 3, false);}bool summon_common_demon(int pow, bool god_gift){return _summon_demon_class_wrapper(pow, god_gift, DEMON_COMMON,std::min(2 + (random2(pow) / 4), 6),random2(pow) > 3, false);}bool summon_greater_demon(int pow, bool god_gift){return _summon_demon_class_wrapper(pow, god_gift, DEMON_GREATER,5, false, random2(pow) > 5);}bool cast_summon_demon(int pow, bool god_gift){mpr("You open a gate to Pandemonium!");bool success = summon_common_demon(pow, god_gift);if (!success)canned_msg(MSG_NOTHING_HAPPENS);return (success);}bool cast_demonic_horde(int pow, bool god_gift){bool success = false;const int how_many = 7 + random2(5);mpr("You open a gate to Pandemonium!");for (int i = 0; i < how_many; ++i){if (summon_lesser_demon(pow, god_gift))success = true;}if (!success)canned_msg(MSG_NOTHING_HAPPENS);return (success);
bool success = summon_greater_demon(pow, god_gift);if (!success)canned_msg(MSG_NOTHING_HAPPENS);return (success);}