than the setting of special_damage from mons_apply_attack_flavour() to mons_perform_attack_rounds(), after the check for chaos effects' banishing the defender.
Without this, the latter check, which only determines if a monster is
alive, can succeed on mortally draining a monster as well as banishing
it, and the drained monster's death event will never be triggered.
Among other things, the check is based on the assumption that all attack
flavors only set special_damage instead of directly damaging and
possibly killing the monster. With this, the assumption is now true.
The change in r8336 to allow cleanup of the dead in monsters::hurt() even for already dead monsters is necessary for this, as well, since draining can still kill the monster via monsters::hurt() before special_damage does.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8338 c06c8d41-db1a-0410-9941-cceddc491573
UJXSA7XD3VRGAUKFZ2BJAISAXOXTU6HNBEWT4FGBVQLQD5R2QB4QC
SOCJXX6MMOXLBEWBID4QN5FW2YNYULNNN7K3IRL7RSWK5EUNAZLQC
EJZK7RJA2HE4S3SNFM2RDLT2UFVXJ64N5D2X7K2EUPSUS2UITB5AC
KBNY5FWKTEAKABFCLPC3QFKFSVZKAGXINPCIFV6WDSWFO4VCKNTAC
QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
OM3JPUT2KCYYR6AUTANZNXX3RDNRWKWKT7F7ASBPZMMTN5GG3UPAC
if (one_chance_in(5))
{
def->hit_dice--;
def->experience = 0;
}
def->max_hit_points -= 2 + random2(3);
def->hurt(attacker, 2 + random2(3), BEAM_NEG, false);