interface, and use it in necromancy miscasts that drain experience.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8496 c06c8d41-db1a-0410-9941-cceddc491573
LRNA65FNZCSZBRU64O3UBUQ72J6ZL6WCWANADSL5VUAURQXJL6GQC
2KKHQWC5ML42HRY3UCOOEU7CUKAZMPDDD35OARA6HVXU4GDJ3P4QC
2Z6IWKMEWE4OIFVWFSZBA2SIXMBJNV6H6LNEPOXTJZW433ABU4EQC
AREBCIU2RU2RNHBWD4GARWEBKSL7HDFGDLII22H56OJO2AQUOMLQC
3DQXSE4YGFBBDUWK4YEOFWW4UPWILWELFSLP37SL6BERGAZJC5YAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
2NVJIPJ5NMHUI2J4WOR6KE4XZOCJIVWHQK4M2M6KG7PL24PGBDGAC
MKTQW2V35UQ45B6BQETHQEMNNXQHKWDERKNKY2CSUTUS22LHNKNQC
KPSCSVGHKEQ4ENM3QQU2U3GYMV52NDFO5L6ML7YDPUKV3365OA3QC
IE3INS4WUXZOBVXB5VWRBYPVPXADD2U2W5H3TBTOYNWJ3EGRSGQQC
64LQALS66EFDRQUEN3NRAWD2PWE7VMNRSEUTMRKQSEQTS55ZRZXAC
4SWAT5KCKQV527NKELAXFQ5XA4Q5HONQXD4VBXMUZNPVPQKPCPNAC
GPEJOT73KMACP33IPAKFR5ROGHCOIP22VXZMQNYTGLEA2OSZUM2AC
QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC
CLIEHAE2PP7ZIGLLIMYCWM4FC54KBOAN5AILOLAZJ5S26GTJM4RQC
QXI6JLO5RGDKUG5H7RBMQTTT3234L2NGHJTMWAF6UJEBJDBDMMNAC
6L4EP4ZRWWYLT55PD5KTTJON5J2JB5VV5MWNHF5VPZQZ5BKEYZ4QC
5FHWTG7M6FW4B3I33YI7QSM3OZIB6ZGC6TI6JISSLY5Y43HI56VAC
X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC
B62ICMDTN5V7R7RBL4JALFVKEMVOOVLRSJASRNYS6CGFWBEEF5JQC
PI5BATR2SER3RFE76IUGHM2AGXVFOUM3PLU7WC2K2Q2BA5K2E73QC
S3AAI5UNOZ72DWBQ4QZQ2IODUI6ZC5X2RIPAPNZ7CPQCIAAT7EKQC
HPUNJMYBCMRXIRCDNPIA6DU2QAMK4VZCAK6J6LZ4INLLS5BI7A5QC
KBNY5FWKTEAKABFCLPC3QFKFSVZKAGXINPCIFV6WDSWFO4VCKNTAC
EQDLV5OMIFO5ZPYNE27VQLLZEIRMSALGNEFWVSCFXJN22A43GCWQC
if (target->atype() == ACT_PLAYER && !player_prot_life()
&& one_chance_in(3))
you_msg = "You are engulfed in negative energy!";
mon_msg_seen = "@The_monster@ is engulfed in negative energy!";
if (lethality_margin == 0 || you.experience > 0
|| !avoid_lethal(you.hp))
if (lethality_margin > 0 && you.experience == 0
&& avoid_lethal(you.hp))
you_msg = "You are engulfed in negative energy!";
mon_msg_seen = "@The_monster@ is engulfed in negative energy!";
if (lethality_margin == 0 || you.experience > 0
|| !avoid_lethal(you.hp))
if (!player_prot_life())
{
drain_exp();
// If draining failed, just flow through if it's the player...
if (target->atype() == ACT_MONSTER)
if (one_chance_in(5))
{
defender_as_monster()->hit_dice--;
defender_as_monster()->experience = 0;
}
defender_as_monster()->max_hit_points -= 2 + random2(3);
defender->hurt(attacker, 2 + random2(3), BEAM_NEG, false);
defender->drain_exp(attacker);