git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5552 c06c8d41-db1a-0410-9941-cceddc491573
ARUYZ6FYS52BELXCRNAU3EREQHTFTIGZWHZPL4OLKQRL6MFNMCHAC
MED2SJP7F7BIPCRUXOJRTELR3EOKRN5PFOO2LLMQOEIJLID3LTOAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
LX2YKPU73XMOVRWVEYQ4QRCVXLBYLVVGTEYGKA6WO5IORK27RMGAC
QZUSP5WXCHQKOZ6TO574PITHBAJHPDBSVJJ6YUGFMJNGVN6A427AC
Q72IOCEGVWNC34LLHA4SEVNMCVKWHEIY5HA4FYGFFNC3WNRQDQ2QC
KLCR26P7MSX4ZWIHQHRK7BZH7M2QGCITN46FCFVHNX7U7WQWYDAQC
SO6OPFUUGKUK24KOXKAPNXR334J7NG76F3Y7ZGC6H3XYSGWTWXWAC
M3CHZA76JC34OROJ2A3HD5KBAFYMU3D7HYZPXT6UOD5DUNIDWT7QC
NFJKJYTT6CBLOKLGT6HIVIDEPWXMGXJV5AAL37SBZTG2HSFMJMKQC
HHKRUVC6WMVKQRUQRYB5VAEDXUS6TMAKO7BSTBGVVL2AUOEBFUJAC
4Z7USHJ5ISQRNQ2W7T32UXN4VAZL5JLOXHXTNINOGN5ARKNVZBKAC
VBQODM6G5B35WWYGNT36EQDJFVTHMZB6CJWAFP3UQVD6NRUSKJAQC
5T56ZXHVBN4LBEOHZPRV65UNS2HJ7RX6AMU7GHNAJRAQ7QKECP5AC
}
if (!success)
canned_msg(MSG_NOTHING_HAPPENS);
return (success);
}
bool cast_call_canine_familiar(int pow, bool god_gift)
{
bool success = false;
monster_type mon = MONS_PROGRAM_BUG;
const int dur = std::min(2 + (random2(pow) / 4), 6);
const int chance = random2(pow);
if (chance < 10)
mon = MONS_JACKAL;
else if (chance < 15)
mon = MONS_HOUND;
else
{
switch (chance % 7)
{
case 0:
if (one_chance_in(you.species == SP_HILL_ORC ? 3 : 6))
mon = MONS_WARG;
else
mon = MONS_WOLF;
break;
case 1:
case 2:
mon = MONS_WAR_DOG;
break;
case 3:
case 4:
mon = MONS_HOUND;
break;
default:
mon = MONS_JACKAL;
break;
}
}
bool friendly = (random2(pow) > 3);
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 canine appears!%s",
friendly ? "" : " It doesn't look very happy.");