git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5565 c06c8d41-db1a-0410-9941-cceddc491573
NQ2PC2EO6VIBYU5MR4LNSLV3LDOYABKSKZEVEDTML6BAJAQAWWBAC
EFS55XWWSC2ARLHL7KI3SZYQB45IUT33RW7JFDGCLUP4A4MBHDYQC
N3NXT75G2JYKVON7ZTE3TG34BBWITCL2HHVQ6H7QREYCDTVQFSGAC
KLCR26P7MSX4ZWIHQHRK7BZH7M2QGCITN46FCFVHNX7U7WQWYDAQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
WVIVA3M3ABBQTBYTCFE2W53IE4IZ223FBSQ6P7BACWKIJPYA66ZQC
HHKRUVC6WMVKQRUQRYB5VAEDXUS6TMAKO7BSTBGVVL2AUOEBFUJAC
OQYJHB4D7DUXP6EUXH7F5Z5ODNF52TOSIAXAUOICEVD3UAOTXCZQC
S6FRUNPFE3PD2DAMVJGWX7TX262KVATIMQ4ON67BPRNVTOOO2XVQC
SZJGHYGJ5AAZDOAQ53LXGP2WKEMIZABCVVGDJMOOMHA7M5ZDT3YQC
UHOAWBSBZBPHWMNXZCVB4SBJM4DTZAG3YRNNJNIKJN4CE2DP27JQC
5T56ZXHVBN4LBEOHZPRV65UNS2HJ7RX6AMU7GHNAJRAQ7QKECP5AC
PACHJJO52BZM5BCXAWPQGJKLIRFSKAY6SIXZQFTHJ2HQWFQS2MCAC
VBQODM6G5B35WWYGNT36EQDJFVTHMZB6CJWAFP3UQVD6NRUSKJAQC
U3KGUJJQWQORJIIFH3ADVNIEEX5HOX6KEOXO7DJSL7L3Z6GG3PAQC
3XL4DKV7PSWAU3ZBJSKZFJ2VUYABC47I7KKWGIRCJYXULQD453MQC
NFJKJYTT6CBLOKLGT6HIVIDEPWXMGXJV5AAL37SBZTG2HSFMJMKQC
GPEJOT73KMACP33IPAKFR5ROGHCOIP22VXZMQNYTGLEA2OSZUM2AC
SWOYPTHJAWFEDBMB3ROT33VQZIXGZD5UOXEV456DDUENW2HGA66QC
G2EYUPAIPISVAEG26BS3SQANL37EEZJ3TZBJKKWHGKQ66LB3RFQAC
LEGFIEUGVU2LZELGQH4TZTIJGKEVUHFTRGQ4Y2KGLSK7KNDI7BFQC
}
return (success);
}
static bool _summon_holy_being_wrapper(int pow, bool god_gift,
holy_being_class_type hbct)
{
bool success = false;
monster_type mon = summon_any_holy_being(hbct);
const int dur = std::min(2 + (random2(pow) / 4), 6);
mprf("You open a gate to %s's realm!",
(mon == MONS_DAEVA) ? god_name(GOD_SHINING_ONE).c_str()
: god_name(GOD_ZIN).c_str());
int monster = create_monster(
mgen_data(mon, BEH_FRIENDLY, dur, you.pos(),
you.pet_target,
god_gift ? MF_GOD_GIFT : 0));
if (monster != -1)
{
success = true;
monsters *summon = &menv[monster];
summon->flags |= MF_ATT_CHANGE_ATTEMPT;
mprf("You are momentarily dazzled by a brilliant %s light.",
(mon == MONS_DAEVA) ? "golden"
: "white");
}
bool cast_summon_guardian(int pow, bool god_gift)
{
return _summon_holy_being_wrapper(pow, god_gift, HOLY_BEING_ANGEL);
static bool _summon_holy_being_wrapper(int pow, holy_being_class_type hbct,
bool force_hostile, bool quiet,
bool permanent)
{
bool success = false;
monster_type mon = summon_any_holy_being(hbct);
const int dur = (permanent) ? 0 : std::min(2 + (random2(pow) / 4), 6);
if (!quiet)
{
mprf("You open a gate to %s's realm!",
(mon == MONS_DAEVA) ? god_name(GOD_SHINING_ONE).c_str()
: god_name(GOD_ZIN).c_str());
}
int monster = create_monster(
mgen_data(mon,
!force_hostile ? BEH_FRIENDLY : BEH_HOSTILE,
dur, you.pos(),
!force_hostile ? you.pet_target : MHITYOU,
MF_GOD_GIFT));
if (monster != -1)
{
success = true;
monsters *summon = &menv[monster];
summon->flags |= MF_ATT_CHANGE_ATTEMPT;
if (!quiet)
{
mprf("You are momentarily dazzled by a brilliant %s light.",
(mon == MONS_DAEVA) ? "golden"
: "white");
}
}
return (success);
}
// Zin sends an angel for a follower.
bool summon_guardian(int pow, bool force_hostile, bool quiet,
bool permanent)
{
return _summon_holy_being_wrapper(pow, HOLY_BEING_ANGEL, force_hostile,
quiet, permanent);
}
// TSO sends a daeva for a follower.
bool summon_daeva(int pow, bool force_hostile, bool quiet,
bool permanent)
{
return _summon_holy_being_wrapper(pow, HOLY_BEING_DAEVA, force_hostile,
quiet, permanent);
}