Implemented using the existing LOS functions for now. In particular, monster-monster visibility still uses num_feats_between.
NTHRCKI7DKIQRCYC6I3M6BWDB5SSGDJ64ZM573XCJM7ER632SBSAC
ASXBSZVXJCWVX5VQSRWXL5BWQ4NA7JLYXP6LWQTRGYW6DC2DZZPQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
Z6Q7JVMFQ32SC7FRGOB7CE7JS2HEOPAO3B2VLU3YR3UCUDZFIPFQC
PKXXBHS3LWLPZI2QVRX22MSQ4R2626IXRSNHFFYHXYTLJJQU54LQC
BUSA7O6EFBZVAG2RL5T7MD2WTWKOEKKIAAZ2VS4Y3L6ECT4HQR6QC
6GT5JAWOIIL4SQ5MWIID6ZVO3KKQFWDQDZNVFHZ6DNK5QCBXJ4UAC
LFBNFE3PZBXTR2ROPKYPARUWLJAYWAKGTS7VBWADZWVVSJ5CLX6AC
SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC
JMBL7S3FVFBUQGRYXVHY4LCL3RTWMFFW42EG4FQPH45YTERD35RAC
S34LKQDIQJLIWVIPASOJBBZ6ZCXDHP5KPS7TRBZJSCDRVNCLK6UAC
TQXNC2YQVJZXBPSLDEANMM2EDGHTH4DSN74OJIRMUF7D46SESHZAC
C4CGYUPRJPDPAF6E65Y3MGAK45PNDPF2CNT276V7P37PPLX3AR5QC
if (this == target)
return visible_to(target);
const monsters* mon = dynamic_cast<const monsters*>(target);
return (mons_near(mon) && target->visible_to(this));
return (target->visible_to(this) && see_cell(target->pos()));
if (targ->atype() == ACT_PLAYER)
return (mons_near(this));
return (mon_see_cell(targ->pos()));
bool monsters::can_see(const actor *targ) const
{
return (targ->visible_to(this) && see_cell(targ->pos()));