git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5564 c06c8d41-db1a-0410-9941-cceddc491573
N3NXT75G2JYKVON7ZTE3TG34BBWITCL2HHVQ6H7QREYCDTVQFSGAC
L2ZXKIAGARY3FBOG3DBRCSS3R757VQRDDIZWNBUYGRGFRWVLN3AQC
WVIVA3M3ABBQTBYTCFE2W53IE4IZ223FBSQ6P7BACWKIJPYA66ZQC
7E3OWJ6HLTM2K5PRCSOUZVRZFN3TTR3ZNGS66QXCXTVTW66TIFLAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
MED2SJP7F7BIPCRUXOJRTELR3EOKRN5PFOO2LLMQOEIJLID3LTOAC
ARUYZ6FYS52BELXCRNAU3EREQHTFTIGZWHZPL4OLKQRL6MFNMCHAC
L5J2VB34AN7QGOSP5SVJ5FTXDVYCY34VHN3M6VLRGPBMPUHBNZQQC
QFHC4VZHHDG5PKLY7A263OJFT2OQ3MF2HX423AKINPRNR5UUT7LQC
KLCR26P7MSX4ZWIHQHRK7BZH7M2QGCITN46FCFVHNX7U7WQWYDAQC
O6OHDRHPEF6S5B36LHMW36OMST3B3MJURDR6WVLUXAEMGR6YUD6QC
HHKRUVC6WMVKQRUQRYB5VAEDXUS6TMAKO7BSTBGVVL2AUOEBFUJAC
NFJKJYTT6CBLOKLGT6HIVIDEPWXMGXJV5AAL37SBZTG2HSFMJMKQC
5T56ZXHVBN4LBEOHZPRV65UNS2HJ7RX6AMU7GHNAJRAQ7QKECP5AC
SZJGHYGJ5AAZDOAQ53LXGP2WKEMIZABCVVGDJMOOMHA7M5ZDT3YQC
SO6OPFUUGKUK24KOXKAPNXR334J7NG76F3Y7ZGC6H3XYSGWTWXWAC
M3CHZA76JC34OROJ2A3HD5KBAFYMU3D7HYZPXT6UOD5DUNIDWT7QC
OQYJHB4D7DUXP6EUXH7F5Z5ODNF52TOSIAXAUOICEVD3UAOTXCZQC
UHOAWBSBZBPHWMNXZCVB4SBJM4DTZAG3YRNNJNIKJN4CE2DP27JQC
LPYSYKZRHXUQUI3WQRTHWUXRDUAKSOHV7LRMRY3JKZYSZIHJMI7AC
PACHJJO52BZM5BCXAWPQGJKLIRFSKAY6SIXZQFTHJ2HQWFQS2MCAC
3XL4DKV7PSWAU3ZBJSKZFJ2VUYABC47I7KKWGIRCJYXULQD453MQC
5XSXMOBGXFLTIQE6WDXWWFVDOTUPZSIQ2FWT3YI5QMVU6D76IUYQC
VBQODM6G5B35WWYGNT36EQDJFVTHMZB6CJWAFP3UQVD6NRUSKJAQC
4Z7USHJ5ISQRNQ2W7T32UXN4VAZL5JLOXHXTNINOGN5ARKNVZBKAC
RDXVYNDERZPFQYVM6TAPCKWLDM7SB4JLYX6PYDVEQBX4SEVQOAHQC
GPEJOT73KMACP33IPAKFR5ROGHCOIP22VXZMQNYTGLEA2OSZUM2AC
4SUG4IBPRQSAGEWNR4BVHMJV5MJRQUYXI4OZ5YXAZUSLF4CVKX2AC
bool summon_general_creature(int pow, bool quiet, monster_type mon,
beh_type beha, int hostile = -1, int dur = -1,
bool god_gift = false);
bool summon_specific_demon(monster_type mon, int pow, bool god_gift = false);
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)
for (int i = 0; i < how_many; ++i)
success = true;
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;
for (int i = 0; i < how_many; ++i)
{
if (_summon_demon_wrapper(pow, god_gift, DEMON_LESSER,
std::min(2 + (random2(pow) / 4), 6),
random2(pow) > 3, false))
{
success = true;
}
}
default:
break;
}
if (summon_general_creature(pow, false, mon, BEH_FRIENDLY,
hostile, -1, false))
{
success = true;
mprf("You are momentarily dazzled by a brilliant %s light.",
(mon == MONS_DAEVA) ? "golden"
: "white");
unsigned short hitting = (beha == BEH_FRIENDLY) ? you.pet_target : MHITYOU;
bool cast_summon_dragon(int pow, bool god_gift)
{
// Removed the chance of multiple dragons... one should be more
// than enough, and if it isn't, the player can cast again...
// especially since these aren't on the Abjuration plan... they'll
// last until they die (maybe that should be changed, but this is
// a very high level spell so it might be okay). -- bwr
case MONS_ANGEL:
msg = "You open a gate to Zin's realm!";
break;
success = true;
mprf("A dragon appears.%s",
friendly ? "" : " It doesn't look very happy.");
}
else
canned_msg(MSG_NOTHING_HAPPENS);
case MONS_DAEVA:
msg = "You are momentarily dazzled by a brilliant golden light.";
break;
return (success);
}
bool summon_minor_demon(int pow, bool god_gift)
{
return _summon_demon_wrapper(pow, god_gift, DEMON_LESSER,
std::min(2 + (random2(pow) / 4), 6),
random2(pow) > 3, false, 1);
}
default:
{
msg = "A demon appears!";
break;
}
}
bool summon_specific_demon(monster_type mon, int pow, bool god_gift)
{
bool success = false;
int monster =
create_monster(
mgen_data(mon, beha, dur,
you.pos(), hitting,
god_gift ? MF_GOD_GIFT : 0));
const bool friendly = (random2(pow) > 3);
monsters *summon = &menv[monster];
if (mon == MONS_ANGEL || mon == MONS_DAEVA)
summon->flags |= MF_ATT_CHANGE_ATTEMPT;
mprf("A demon appears!%s",
friendly ? "" : " It doesn't look very happy.");
summon_general_creature(you.experience_level * 4, false,
summon_any_demon(DEMON_COMMON),
BEH_FRIENDLY);
summon_demon(you.experience_level * 4);
summon_general_creature(20 + you.skills[SK_INVOCATIONS] * 3, false,
static_cast<monster_type>(
MONS_NEQOXEC + random2(5)),
BEH_FRIENDLY, true);
summon_specific_demon(static_cast<monster_type>(
MONS_NEQOXEC + random2(5)),
20 + you.skills[SK_INVOCATIONS] * 3, true);
summon_general_creature(20 + you.skills[SK_INVOCATIONS] * 3, false,
static_cast<monster_type>(
MONS_EXECUTIONER + random2(5)),
BEH_FRIENDLY, true);
summon_specific_demon(static_cast<monster_type>(
MONS_EXECUTIONER + random2(5)),
20 + you.skills[SK_INVOCATIONS] * 3, true);