Flying monsters could now fall into a pool if also confused, otherwise you cannot trap them with a net. Also special cases for a few other monsters.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2023 c06c8d41-db1a-0410-9941-cceddc491573
X76YXE6RFL7QY5WL6MSSS44WHVA5FQMDQY3XTYP2UL6UZB4E6XMQC
BRGAZR5AXWC2IALBVXO5SB354IRQEIRHSK55RZPGFI4AGIOD4LUQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
JR2RAQ523LOWNDYJNK6AZVKI6WVMI622PIV72XWOVZYPXPUKSQWAC
4UXFU3FZOCBSLDQ4S7MJKAE2H7VUHCNRDQMIY6NJ3PHYXWNGISDQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
MRM4SLSXJTRYJPH2YYTAFTO2CAOXLP2OCMRNYRTIRRYOMWM7NMFAC
3PY3L3A4QRW3Z5Y7SHO4TMVOOP2VNCO27X2MX4DTOP2SADLBQUOAC
QS3ZRS3E6KL3YJHPKYEWCWJYRBJSXD5OOYF6Y25HZVECGPJRDB5QC
5V47S4NNTHWTSAHV3YLO2VGH7JTUIYJ3GBPDN5ZM4UQALT2ZEXDQC
DTO3EUKWHZ5RJNGNCFYXSOVTIPVXPP637F2W7WFGYKJ7JK7VNKNQC
DMRXDEKHHBQNY37NPGZFAGUQPALWFANGGK4CUWIOQUPSLM2JBNFQC
// returns whether a monster is non-solid
// and thus can't be affected by some traps
bool mons_is_insubstantial(int type)
{
switch(type)
{
// vortices
case MONS_FIRE_VORTEX:
case MONS_SPATIAL_VORTEX:
// elementals
case MONS_FIRE_ELEMENTAL:
case MONS_AIR_ELEMENTAL:
case MONS_WATER_ELEMENTAL:
// vapours
case MONS_INSUBSTANTIAL_WISP:
case MONS_VAPOUR:
// ghosts and some undead
case MONS_PLAYER_GHOST:
case MONS_HUNGRY_GHOST:
case MONS_SHADOW:
case MONS_SMOKE_DEMON:
case MONS_SHADOW_WRAITH:
// others
case MONS_BALL_LIGHTNING:
case MONS_GIANT_SPORE:
case MONS_ORB_OF_FIRE:
return true;
default:
return false;
}
}
if (mon->type == MONS_FIRE_VORTEX || mon->type == MONS_SPATIAL_VORTEX)
const monsters* mons = static_cast<const monsters*>(mon);
bool mon_flies = mons->flies();
if (mon_flies && !mons_is_confused(mons))
{
simple_monster_message(mon, " darts out from under the net!");