git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5550 c06c8d41-db1a-0410-9941-cceddc491573
MED2SJP7F7BIPCRUXOJRTELR3EOKRN5PFOO2LLMQOEIJLID3LTOAC
O3LZXTW6LJE42A767SOU6TCWPCWU3JEVINBQTW3ADBA4ZXHD3Q4QC
Y4NA3JSN63RLATF4NNBPSR5CWF5Z7UEMWCGVX4B6NOAR47CGM4GQC
M3CHZA76JC34OROJ2A3HD5KBAFYMU3D7HYZPXT6UOD5DUNIDWT7QC
NFJKJYTT6CBLOKLGT6HIVIDEPWXMGXJV5AAL37SBZTG2HSFMJMKQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
LX2YKPU73XMOVRWVEYQ4QRCVXLBYLVVGTEYGKA6WO5IORK27RMGAC
QZUSP5WXCHQKOZ6TO574PITHBAJHPDBSVJJ6YUGFMJNGVN6A427AC
SO6OPFUUGKUK24KOXKAPNXR334J7NG76F3Y7ZGC6H3XYSGWTWXWAC
HHKRUVC6WMVKQRUQRYB5VAEDXUS6TMAKO7BSTBGVVL2AUOEBFUJAC
S6FRUNPFE3PD2DAMVJGWX7TX262KVATIMQ4ON67BPRNVTOOO2XVQC
KEYK3CH5J46U6TTOKTWRNMYTZXMQXFVEAZUC4ZQ4QCOSJHVIBDRQC
TO3JMTZO6ETZWBXPA75JLCFD7ML546WXBRLWHPKL44ZIQ2H5HW6QC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
NVSFIV2ZKP44XHCSCXG6OZVGL67OIFINC34J2EMKTA4KULCERUEAC
}
if (!success)
canned_msg(MSG_NOTHING_HAPPENS);
return (success);
}
static bool _summon_demon_wrapper(int pow, bool god_gift, demon_class_type dct,
int dur, bool friendly)
{
bool success = false;
monster_type mon = summon_any_demon(dct);
if (create_monster(
mgen_data(mon,
friendly ? BEH_FRIENDLY : 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 ? "" : " It doesn't look very happy.");
bool cast_summon_demon(int pow, bool god_gift)
{
mpr("You open a gate to Pandemonium!");
return _summon_demon_wrapper(pow, god_gift, DEMON_COMMON,
std::min(2 + (random2(pow) / 4), 6),
random2(pow) > 3);
}
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_demon_wrapper(pow, god_gift, DEMON_COMMON,
std::min(2 + (random2(pow) / 4), 6),
random2(pow) > 3))
{
success = true;
}
}
return (success);
}
summoned = ((temp_rand > 49) ? MONS_IMP : // 10 in 60
(temp_rand > 40) ? MONS_WHITE_IMP : // 9 in 60
(temp_rand > 31) ? MONS_LEMURE : // 9 in 60
(temp_rand > 22) ? MONS_UFETUBUS : // 9 in 60
(temp_rand > 13) ? MONS_MANES : // 9 in 60
(temp_rand > 4) ? MONS_MIDGE // 9 in 60
: MONS_SHADOW_IMP); // 5 in 60
mon = ((temp_rand > 49) ? MONS_IMP : // 10 in 60
(temp_rand > 40) ? MONS_WHITE_IMP : // 9 in 60
(temp_rand > 31) ? MONS_LEMURE : // 9 in 60
(temp_rand > 22) ? MONS_UFETUBUS : // 9 in 60
(temp_rand > 13) ? MONS_MANES : // 9 in 60
(temp_rand > 4) ? MONS_MIDGE // 9 in 60
: MONS_SHADOW_IMP); // 5 in 60
summoned = ((temp_rand > 3367) ? MONS_NEQOXEC : // 14.69%
(temp_rand > 2787) ? MONS_ORANGE_DEMON : // 14.69%
(temp_rand > 2207) ? MONS_HELLWING : // 14.69%
(temp_rand > 1627) ? MONS_SMOKE_DEMON : // 14.69%
(temp_rand > 1047) ? MONS_YNOXINUL : // 14.69%
(temp_rand > 889) ? MONS_RED_DEVIL : // 4.00%
(temp_rand > 810) ? MONS_HELLION : // 2.00%
(temp_rand > 731) ? MONS_ROTTING_DEVIL : // 2.00%
(temp_rand > 652) ? MONS_TORMENTOR : // 2.00%
(temp_rand > 573) ? MONS_REAPER : // 2.00%
(temp_rand > 494) ? MONS_SOUL_EATER : // 2.00%
(temp_rand > 415) ? MONS_HAIRY_DEVIL : // 2.00%
(temp_rand > 336) ? MONS_ICE_DEVIL : // 2.00%
(temp_rand > 257) ? MONS_BLUE_DEVIL : // 2.00%
(temp_rand > 178) ? MONS_BEAST : // 2.00%
(temp_rand > 99) ? MONS_IRON_DEVIL : // 2.00%
(temp_rand > 49) ? MONS_SUN_DEMON // 1.26%
: MONS_SHADOW_IMP); // 1.26%
mon = ((temp_rand > 3367) ? MONS_NEQOXEC : // 14.69%
(temp_rand > 2787) ? MONS_ORANGE_DEMON : // 14.69%
(temp_rand > 2207) ? MONS_HELLWING : // 14.69%
(temp_rand > 1627) ? MONS_SMOKE_DEMON : // 14.69%
(temp_rand > 1047) ? MONS_YNOXINUL : // 14.69%
(temp_rand > 889) ? MONS_RED_DEVIL : // 4.00%
(temp_rand > 810) ? MONS_HELLION : // 2.00%
(temp_rand > 731) ? MONS_ROTTING_DEVIL : // 2.00%
(temp_rand > 652) ? MONS_TORMENTOR : // 2.00%
(temp_rand > 573) ? MONS_REAPER : // 2.00%
(temp_rand > 494) ? MONS_SOUL_EATER : // 2.00%
(temp_rand > 415) ? MONS_HAIRY_DEVIL : // 2.00%
(temp_rand > 336) ? MONS_ICE_DEVIL : // 2.00%
(temp_rand > 257) ? MONS_BLUE_DEVIL : // 2.00%
(temp_rand > 178) ? MONS_BEAST : // 2.00%
(temp_rand > 99) ? MONS_IRON_DEVIL : // 2.00%
(temp_rand > 49) ? MONS_SUN_DEMON // 1.26%
: MONS_SHADOW_IMP); // 1.26%
summoned = ((temp_rand > 868) ? MONS_CACODEMON : // 13.1%
(temp_rand > 737) ? MONS_BALRUG : // 13.1%
(temp_rand > 606) ? MONS_BLUE_DEATH : // 13.1%
(temp_rand > 475) ? MONS_GREEN_DEATH : // 13.1%
(temp_rand > 344) ? MONS_EXECUTIONER : // 13.1%
(temp_rand > 244) ? MONS_FIEND : // 10.0%
(temp_rand > 154) ? MONS_ICE_FIEND : // 9.0%
(temp_rand > 73) ? MONS_SHADOW_FIEND // 8.1%
: MONS_PIT_FIEND); // 7.4%
mon = ((temp_rand > 868) ? MONS_CACODEMON : // 13.1%
(temp_rand > 737) ? MONS_BALRUG : // 13.1%
(temp_rand > 606) ? MONS_BLUE_DEATH : // 13.1%
(temp_rand > 475) ? MONS_GREEN_DEATH : // 13.1%
(temp_rand > 344) ? MONS_EXECUTIONER : // 13.1%
(temp_rand > 244) ? MONS_FIEND : // 10.0%
(temp_rand > 154) ? MONS_ICE_FIEND : // 9.0%
(temp_rand > 73) ? MONS_SHADOW_FIEND // 8.1%
: MONS_PIT_FIEND); // 7.4%
summoned = ((temp_rand > 80) ? MONS_SWAMP_DRAKE :
(temp_rand > 59) ? MONS_KOMODO_DRAGON :
(temp_rand > 34) ? MONS_FIREDRAKE :
(temp_rand > 11) ? MONS_DEATH_DRAKE :
MONS_DRAGON);
mon = ((temp_rand > 80) ? MONS_SWAMP_DRAKE :
(temp_rand > 59) ? MONS_KOMODO_DRAGON :
(temp_rand > 34) ? MONS_FIREDRAKE :
(temp_rand > 11) ? MONS_DEATH_DRAKE :
MONS_DRAGON);
summoned = ((temp_rand > 60) ? MONS_YELLOW_DRACONIAN :
(temp_rand > 50) ? MONS_BLACK_DRACONIAN :
(temp_rand > 40) ? MONS_PALE_DRACONIAN :
(temp_rand > 30) ? MONS_GREEN_DRACONIAN :
(temp_rand > 20) ? MONS_PURPLE_DRACONIAN :
(temp_rand > 10) ? MONS_RED_DRACONIAN
: MONS_WHITE_DRACONIAN);
mon = ((temp_rand > 60) ? MONS_YELLOW_DRACONIAN :
(temp_rand > 50) ? MONS_BLACK_DRACONIAN :
(temp_rand > 40) ? MONS_PALE_DRACONIAN :
(temp_rand > 30) ? MONS_GREEN_DRACONIAN :
(temp_rand > 20) ? MONS_PURPLE_DRACONIAN :
(temp_rand > 10) ? MONS_RED_DRACONIAN
: MONS_WHITE_DRACONIAN);
summoned = ((temp_rand > 80) ? MONS_MOTTLED_DRAGON :
(temp_rand > 70) ? MONS_LINDWURM :
(temp_rand > 60) ? MONS_STORM_DRAGON :
(temp_rand > 50) ? MONS_MOTTLED_DRAGON :
(temp_rand > 40) ? MONS_STEAM_DRAGON :
(temp_rand > 30) ? MONS_DRAGON :
(temp_rand > 20) ? MONS_ICE_DRAGON :
(temp_rand > 10) ? MONS_SWAMP_DRAGON
: MONS_SHADOW_DRAGON);
mon = ((temp_rand > 80) ? MONS_MOTTLED_DRAGON :
(temp_rand > 70) ? MONS_LINDWURM :
(temp_rand > 60) ? MONS_STORM_DRAGON :
(temp_rand > 50) ? MONS_MOTTLED_DRAGON :
(temp_rand > 40) ? MONS_STEAM_DRAGON :
(temp_rand > 30) ? MONS_DRAGON :
(temp_rand > 20) ? MONS_ICE_DRAGON :
(temp_rand > 10) ? MONS_SWAMP_DRAGON
: MONS_SHADOW_DRAGON);