The special casing for drowning monsters appears to have been obsoloted by checking ENCH_SUBMERGED instead of calling mons_is_submerged.
FAXIQ43BLFCLIL6ZOBTIKHU6RWEXSRQ2TS567UVZM7VV3V3GHELAC
7Y26W23LYFDU2XAMJF2XOIIQA2EEMGHG2YN72QRVN2UCDUVK3GDQC
OCRWXF72GCZBV7ZQ4VSTVRBBFT2CT64IGSDL4FDL5IILWLNVBOXQC
7JA6GDDHRJCCRRRDO4KNVSQV4VJO63ZCTYI2TAY6KIVY7JCIRTJQC
YWGZPRW53TXVMBWAYZWTMNHOMNNW5HMGFQDSRST2RZBHBRKWT3XQC
STOUXUZ734IUS6JFNR6KD3QYH43EFAOEWEIZ5GUR32A3Z6RFS6DQC
Z3E3EG25UDOX2TT2OLEGHF76PA3WVNU72I5SL43BXMFYOZ25Y7OQC
J6APXOT4QOGQFONWB7G546VTVF6QG42HVOROMHF7YBDJPR4K26OAC
R2DQBWKIW7YUJB5SOQ7J274JIYRVX4H3ISFRPAL5RG2RVVP4G2KAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
WT66JDIRTLLP37SHTV4GI3V64JFJ4D25LNRLGCHFG6CLEFKJ3QGQC
CAN3KDKD3DGCRPJDHYLEYBRM6PIJOTJXB2VQEWAQGUSQPSZUC47AC
UWMN4HLG6YA2YFQEVIVMDISD6APKEPIZXMMPMNUYCBQDSAUYSXPQC
HQTS3VQ6PNUZKHNVEWMML7JNAAAKL4DSW3KFSRCCSLGYTDHZFCCAC
77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC
T2G747ISCIN7UU7WFM6TFHNS6ZG2NBZJC5FPKE4XGM2VI6IBVBXQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC
HAMUM5IA4BJMLRIME7KVVVYLRHVS55RIYMGLLQZL3F7QEP7FJ5KAC
CK7CT5TUFUL2AQY7FUHB5JI3FC2KSPWUWHXC6VEUJJ7G4OWUQFTAC
RGP4IBRH3OLTAVW4Q6LAOQNVPS3JS3VP3BRWQOIQFW6QV5VEHMAQC
NVSFIV2ZKP44XHCSCXG6OZVGL67OIFINC34J2EMKTA4KULCERUEAC
IXWJ54CASZWYHSTDOU3TRQS2DSF4MKBRPO4VZYLE72JL5RD22O2AC
UTJL52UAIUVUIXDFPMVL3JPXPPFDCAXKORWHGOUVMVMBDA7X3XSQC
25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC
JM7UAK777RAVDAVLQLEOBRTGNW2B47S5G55XITJXO243IUNZHVYQC
76XAPPSY2BXXT7AC45TNI7DL7AP6242DXC45CDIZ6T3RN4ZI3R4AC
XP2DL4CJ7FH2IPNNA6KHNOAFW6J2RSC44JWEGLYQHWUMU5EVHFUQC
FYSQ7HXDIKXZXDGYVKZMODW7HYQQLRZO52Q2HVM3PYBD37UT5B4AC
GSS3OCYMI4MYKACCGNLFA267VDH2U7G4QVVDLMOVAUHZTYQ3QJDAC
O5KBWWBNMUWIPZSZ7CC37DMWWTCWWZDFGDWXOL3Z7W46QUACHCJAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
FLAGBNUNSIQNFDN53CDWABJRTTFWDL4PG34AI474ZKPXDEPYHOAQC
VXSORUQOM2VZA4CAZDC6KPAY373NQIN3UT7CXQXTRCYXO2WM62DAC
RY62FYAU7PCMJPBD3CRQJDE2W7KU3QUZMHS4XWAGA3W6DEOFFBYAC
65E7TT6L6PT3M3NW73KT5SVZWXIDBXBXIREUDC3BGQSBGY2VVY3QC
VSXFXNKXKVVHNDE3IRQQLT5NZJNVYFZI5634RO6GZE35UFFKHIPAC
I5UHW5AFW2NXN65Y74SH6O5D7AIIYWEBU4H673TJEZYXQOZ22OBQC
XIXBLWIVUPWM3P6XQIB7CS45JOOIYE6OBYYYERCFAYYO4VOWOYUQC
RWCCZ64BG3HSOTM54ANIGENC3F3AIR42LJFRYSAKMCPCIUSOZY5QC
VVVOUK7QZU3NNYAI6SJNWM5ZK7362HIXXSQI5BKVMHHL2CXMYXMQC
QDWDUURSNLMT6AXNNJ3DEQCWAKCAIHV6MP5F7QGIBGXOG2BI2NPQC
W3UFSWJ64J27YAP6URIHMEIC6VCIWG6GS5UPA6KPHONKXYEQ7IDQC
7GCM5WFIKX5N2PQ5UCVNMFJEKTZTBCUVZH5RZ7CPDL3Z6GB26KAQC
5JS3QSE3EIXSBVI4DATH2EIFD7QN3POAFEUM7MK4NRMPH5JOPAAQC
H6VLPIMXKMZVGZVQFUUSW73LRHC3KTIFE3JNSCZ7PJALXP62RIGAC
RSIUBEQUGNU4LO6KH4PKVROWQS33DAKSY4XFVGN7T3CEKSXABCSAC
QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC
X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC
RCPQNIRPR3NQXEMVLBAQW6657UJFIP43N54UJVEZHJH22OH4UQIQC
4UXFU3FZOCBSLDQ4S7MJKAE2H7VUHCNRDQMIY6NJ3PHYXWNGISDQC
RXDU5LKGCQHDGZUVTNMKTF66O5OC5M3SCYMH7535GM7CTFDJE7FAC
AVCMVFA3MKCXHO6H44UK5KJNIHTGQV7UA7GYXM26VI6TXXU5ZN6QC
S2LIBA2CLTZ6ZU66AUZ2CCNLCDOBSGWQGTZ6HFAFP2XSWAALGLSQC
C5U3HSOOQ7BKXKXIDS7MLVXUKDTHAWJ5NXNX6YDXTM3GWY5UWX4QC
DMG73XDQHY2X2PHKWIY56XKD3O4NPGZKKIO6GX3IV2LLRVXPGKYQC
2G7MZ653N3JUHJ4DA5Q7VRO3S5T27DLPKDCJEKB6DGYSTXULUVWAC
5XNQ3SSNBFXFNWA6DPM74W6FH65NX665P3DMH6YCWVFOPZTJSYCQC
2U7MKFVTHEPKDLBYR4X6GINIEIBG5B3YR3INX36ITGP7MEPTR3VQC
TZ643KHSE5CUPXFSQ7VYVOCM5MTQ7F4SENEYQX2RNFHGHLQVS3RQC
TQXNC2YQVJZXBPSLDEANMM2EDGHTH4DSN74OJIRMUF7D46SESHZAC
JN4GPMQCXOY5ICTLPLWP6DXBFULN4GMAEK7T4GXTZVIJAUUKBBYAC
SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC
XKSYV5QUG2PET6BNBZPNI4D7LDBJGWOH335OD3J24AKJWE63J3WQC
HB27XKFYVYIEQZGBCEZ6LKPUBMXLIPDAAS636GJ5TULIQ7KND5KQC
IIN7AVA6JYRBXH6ZYRR7BY7TV6PW7ANAQ2A3PD55FKBKKQFEEF2AC
RZP5Z6JM74GVX2M6L2JOFRJ5VT2XGFHBNRDESVHSKF66PQKIW32QC
MSRJ3N4NX255RVISUOPTTTY2GG4JVVNNM76HWUZ2EKCYESNI6MLQC
S6ZETU2X3HBTKBDL2KTAMCNPMPGHEZO2JGMILIWETWC7XXRS5RYQC
5HPIIGNWB3UXJ5APQLAGFOV2CA7J2GB7AWAVVZDBB2YZS4TNCMAQC
OSRZEPPGBIMSZBWIVBTZTTIMV6TEUGVZRZ5AI2ZJW7CVZZQBUIMQC
UADYVV3UD5ERJTZZJGY4EUQ4NJ2JSBG7YYUJ75ZRBIXRQXQKOJPAC
HP72STXEK6KJ5SAPZKKLLAXC5HB7J4E6X6NK2BNFP6GARF52K5RQC
WEPYKUZS5NJG5NHBVK5IKE55VD3EOK42JUSURMBTU4MG4SBM5ILQC
/* ***********************************************************************
* called from: beam - decks - direct - effects - fight - files - it_use2 -
* items - monstuff - mon-util - mstuff2 - spells1 - spells2 -
* spells3
* *********************************************************************** */
bool player_monster_visible(const monsters *mon);
}
// This does NOT do line of sight! It checks the monster's visibility
// with respect to the players perception, but doesn't do walls or
// range. To find if the square the monster is in LOS, see mons_near().
bool player_monster_visible(const monsters *mon)
{
if (!you.can_see_invisible() && mon->invisible())
return (false);
if (!mons_is_submerged(mon))
return (true);
const dungeon_feature_type feat = grd(mon->pos());
// Treat monsters who are submerged due to drowning as visible, so
// we get proper messages when they die. Monsters can only drown in
// lava or deep water, so monsters that are "submerged" in other
// features (air elementals in air, trapdoor spiders in the floor)
// are exempt from this check.
if (feat != DNGN_LAVA && feat != DNGN_DEEP_WATER)
return (false);
return (mon->can_drown());