friendliness for charmed monsters.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3925 c06c8d41-db1a-0410-9941-cceddc491573
XAKHV2E3U5KQ5LV77HI7XFKNCKGYXT2LPBOHZP2VOH4Y67QBH4SQC
J77VWSSEGMKS4S3HUAKROJYFL3H5FQSO4MCEPXBFJDMYBU36VRLAC
LDUASYI655NEH3OVWWYYQ2UV4KVC5FAJOX4IIVJEKZ43S2KKMAGQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
WW5YMURQQVS3CTVO76LOBBX3DVGJTMAHMB4XVWNXKYYNFQSQZJIQC
L5KQH3FHNYTFE4D2L3ZGWCBCMW3PAR7EHD5555GSKJGVK7HQWPXAC
AH4AIZKRTU6LNLBY2DKE5FHCN5I6LJT64CWZMVDQ2ZT6O4DFOYZQC
M2EUGZPKR6XTZSLQYDO7CDBBR2WPPMCBIBKJSZW5P7KYUOUPZSZQC
K27R6ZMYMKVNXIV7K3QU2NXRVOGQRLMR6TI6ZQQSVKXVKS76NLSQC
VC7XBPUIFNSY32XN2QXDDJKV2KHQHW43JFPSMDSRWSVJVAQZETLQC
N6AB4D7CBK3YG43GL5MZIHKGYXSQWQ3MRKXGEX3QAADLGNDIKL7AC
6INGHIA3J7XER4L7OZHGU4RR3QTRWISMXHD3AZQK6MQ3VDADBVAAC
RIIO4BI64ECFXSRLBP3RA24QOPYXJVWMSFHLNTKUZS5YCLISLVJQC
return true;
}
static bool tso_blessing_extend_stay(monsters *mon)
{
if (!mon->has_ench(ENCH_ABJ))
return false;
mon_enchant abj = mon->get_ench(ENCH_ABJ);
abj.duration = abj.duration * 3 / 2;
mon->update_ench(abj);
return true;
}
static bool tso_blessing_friendliness(monsters *mon)
{
if (!mon->has_ench(ENCH_CHARM))
return false;
mon->attitude = ATT_FRIENDLY;
mon->del_ench(ENCH_CHARM, true);
blessing_healing(mon, true);
case GOD_SHINING_ONE:
// ...extend its stay if it's a temporary summon, or
// make it friendly if it's charmed. If neither is
// possible, deliberately fall through.
if (coinflip() && tso_blessing_extend_stay(mon))
{
result = "more time in this world";
break;
}
else if (tso_blessing_friendliness(mon))
{
result = "friendliness";
break;
}
if (healing && vigour)
result = "healing and extra vigour";
else if (healing)
result = "healing";
else
result = "extra vigour";
if (!healing || coinflip())
{
blessing_healing(mon, true);
vigour = true;
}
if (healing && vigour)
result = "healing and extra vigour";
else if (healing)
result = "healing";
else
result = "extra vigour";
break;
}
default:
break;
}