of monster_at(). The hope is to eventually remove mgrd completely (in favour of scanning through the monster list, or a different datastructure which gets updated automatically when monsters move), and thus fix all the mgrd-out-of-sync bugs in one fell swoop.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@9056 c06c8d41-db1a-0410-9941-cceddc491573
HB27XKFYVYIEQZGBCEZ6LKPUBMXLIPDAAS636GJ5TULIQ7KND5KQC UJMQZDP3ZBWXZICQ47JRNNR73BUP4OGLOKW66INUFPBFDBL7YSPQC 5CFLY5V4D5ZQRZD6WPTXPOSEEJFGSIBUPX72Y7IEO3KW2443ABEAC 2WWSPLCXLSMBGTXUC33EQ5YBOA5IBFSMJSTZ2TU6HZIMZZWZJWGAC K2RH5RUM432AQDEHB6ZVKFIVU7FAH5E2BZDHW2MMLNFR2C4YMFJAC 6GCY45KA5LDI722CIIRZDCIQ35QCVVLBTUTDSLYYIXNXPQ7EJZTAC IFXW7O7VETG6JSWUGSLH5WBVR5VMY4OQ6XEYAWR5HTNW7SQ6E6PAC BHUCNDTJVIRHZZVPVWV53XDMHM6KRSELWDPA4YKUYNOVCLH6GRJAC JAAPVHJ3BBGLMIP42TMLO7G24J23SNAPP6YAFRPTRIEBOOXVRRMQC EL2CQXDF4W3ZMIKFPSZGCQJKN4UPM7LXL7GXYFZBBHV3GEKG5VEQC CZWERNJVMJFBGKQHHR6I5U2FCRUJD7H2DG3C43V2CBAW74GYU2HAC XKSYV5QUG2PET6BNBZPNI4D7LDBJGWOH335OD3J24AKJWE63J3WQC KTHZLXQCGPBBO4FIKMXCORB3HTY3F64BA5MIEZE22S4O5IQZRIWQC JBZ7NU4BB5PGQWCOSZHD5OQUHQIVOD4XGJLSJQ7BUGQEGPRTVGZQC SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC 77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC 5HF63O5IRRERI2V3SZEDHUNFHUF2B4RSVWQR6C6DR5JF5UYSROWAC NK2TBKWOQBD2ZRGAO4Z3HMZPIN7UX3HNUS2YHEIJUUINUTRMPODQC HQTS3VQ6PNUZKHNVEWMML7JNAAAKL4DSW3KFSRCCSLGYTDHZFCCAC Q3B3UVMYEVC4YJUPYVSNTR4DJH4E6J4JJDHZNT5LNOCHCPPMEMXAC TOOHYAX73C5KPSWGHPCBWCUN62WMMO3BI5CWEEMGV3WBFZ5RIH5AC OMSSJON5IE4LBXJ7CZE52IZRZS7ZICS23SKP4AGLHH3QNCRMEFVAC QDWDUURSNLMT6AXNNJ3DEQCWAKCAIHV6MP5F7QGIBGXOG2BI2NPQC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC HAI4YDKI72OBDT5KMMVCO3DOU765OPWCU7GTRKTALFNSDOI4R2LAC U6UUTZZVZHQVN3HWPN2CLRNE4VXESLNHS75W4CYUZIAKVHCYRCDQC LUH6GAJODIQXNPBEHMSUTKH3KA3DYVRCKZ6GJJ4HHNHOIMMUEP6QC CUB27EJDQG66FF2YCKOV4HU3LAJVJIHUJ5QYLURRDIEVGPK666DQC KATZLWENEIQMKKWIV4ZLXJ5HFUW6SU5K4ZU6NENBOL4XAAVTDUKAC NULVQ2A7ES5N3BBQAH6YKFST6UPVKD4KYYFFHYTUKSYLHXR4OYSAC PFEJ4LMDNEKLMGRCMWQ7EIRVU4JMYGICI4G7X4WVWOROVXQCBZ7QC UEI5JAVCMN7Y2SACTEZPZSNFJWOJTC55G24Q6LKQCT4XNDH5ZQIAC QFHQNEJ7B5RNTY4QRCDWBD2GVHUVN2URKFSZ2VCL4HKYB62ECIBQC 7YUGK5Q64KG5O7GJGTUBRRLHAHBCJ5YOE23YUPT6UBKUSB67CYAQC BLN5LDH5NRRJPBY77A36Q4THEY75N42MVCJMZRUZ2D5YSXTDL4HQC C5VA63WAQRWPENIMXRPUPZLZJMC77PL2B3A77HYFWDCZU5QDG7VQC EQNPQNYN6JCLT47M3ETBMMV5JOB26TQY6NY2ZNPPBTQDO7XTWD4AC X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC RCPQNIRPR3NQXEMVLBAQW6657UJFIP43N54UJVEZHJH22OH4UQIQC LFIEDWOSNPS5D6EUWPUPOBBN5CEHVF2MLNOSPXEIVMRZ77A5BH4AC B62ICMDTN5V7R7RBL4JALFVKEMVOOVLRSJASRNYS6CGFWBEEF5JQC IXOB6KSQY3CWTXS3LLNDWLVMNK6CV2MCXJAR5CJLNNX4ZOLAMV6QC RSIUBEQUGNU4LO6KH4PKVROWQS33DAKSY4XFVGN7T3CEKSXABCSAC RDZUMV3A5TREQHLPPJWDWVXBNIOWC3CQJJ35TYFBQQVQNTU7SPXQC BRGAZR5AXWC2IALBVXO5SB354IRQEIRHSK55RZPGFI4AGIOD4LUQC MT73EUNHNCLN5AQW6TT2PSM26PJCFQL5SF53NUYQ2T27UHATQNUAC WSUGPG4GWKAV3DINPD5LYP6W3GNFKIFWR3UXQGOQFSLIG5PLOEMAC 5HGMULU7IWTFJJH35S6XTCW3YZEMCORXHQL6NVY2TO4DUMVITNJAC ZI7643NG3LOKVSDXHFNV2YU3ZIQUVEY25AOXZCPBXJB5SQAUCE6QC X6PDJWFXOZ4NUKXNOEP54CYQ6PCQJQK2KALAYY75XDAFCJJYWE6AC PF6QKUU7AKP3X7NBR34O73PQ4BS2MWBMPD5MH5HOV2HLQFMA3PZQC WSW74U3IOZ4Q47MHN57KCWZCSJ4U4MOJX4CCDOLUD2KOFEIQR4BQC ZJ35GZK55U4IYTYDAVXTAMBNG5YF3LIGYD7OVTQH3UFA56I7JE5AC RDLF4VIJMMHHL2OCQEXOK6HNCS5QX3FZF3S4IHPY3OZUKC2FZ24AC U2AV5FJ7UR6QMGMSZBW6MMLBZHWTANK46QOBP42PYHMAXJCBMRBQC 2NFFQ4TCADDVDWUNH3YXIPLDQ566TPF5WZ2YAZLDM5UEWPVUKNZQC IGNQ3YSGMW6NG7GPYYXWXW6XPM4YWKNUJ5IU55QCWZ2AEHHO3L3QC 7O3C7BZXXFHJQQMLE636R26QJPETYRADNLVJWQDJYGWLQFEG2ISAC BWHU47MJ7KAVKMKMRBVYLOHUCASSNVCGPC3SPMNBAC7DLI6XX2YQC 475LL4U4ND6PTNV4XKC7WQAOJC7RF2VCCVX3DRILP2PKIBFYWE6QC 7KWDC7XFNMBLSUO2HISIROBINZBX5T67LJEEXTAORXW2YZ7VWFGAC WZTIVJJVK7CAHU5D2IYPH7TWGTLBBYPJZJYPGWKCDGM3JQ6Z6VKAC D54BYIF6H4WYWDUFPAEPH3HFZLRFCWSATJ2JBS3I4S2JYKZFB34QC IQFLSXLOKMSMM65BL7XOEI5ZP55WKZ7BFBOIA44AMTPNJ7DAQXBQC 2G7MZ653N3JUHJ4DA5Q7VRO3S5T27DLPKDCJEKB6DGYSTXULUVWAC 35KOQQV4ZBNNIAXGKPOYHOWTN7RBQY7HRZTVMR3WAS4GOYFBM6PQC 33NP4VXH6MMMH4JFK73G4ENZ2VYFKW2AWXIRITZLVIENKDOSJO2AC IGKVCDUXGUOCEDVHXKOXNVMN3I3SFBRXG2G3WPKZBVL7USXSC47QC FU7EQZLXD7YNGUUDHXCBI3VUKL6M2G3EPDY6FB5UA6B6RD4S5UOQC NPTVMSNYWIALN2GSKESU6NKX7XNG7QDH2TNIWUB6R6NHCLK32NFAC 5XNQ3SSNBFXFNWA6DPM74W6FH65NX665P3DMH6YCWVFOPZTJSYCQC SW3RLYFNRT3IJBK6LYKHKP2J2YDU7SXQWAJZX7U6S7ICYW43OMNQC RQFQSU37Y3ZBFR634JWYHE77LIOOINGBRNL4KUHPPRA3ZR6W5QIAC 5FHWTG7M6FW4B3I33YI7QSM3OZIB6ZGC6TI6JISSLY5Y43HI56VAC P4KV3XKK2NCQAUPCMTHJPSA2FETTBY5WOMCVP4IFMNJZABEQWKWQC DKRSOHZXL6EPSLKOKHF7GJXSZEJVY7CXGACSHWLM5B5FTRETWWCAC TPPJRQ2NTCV3GI2VRHEXQJREDERPJODCJWUG5WCOQGN4REPPPAMAC WP5VP57D5BWKDAS7AA224OV2RX4O4BPTI2BLY7TS3T2O2PLUGXCQC 32S5UVZCXZ5QWH4NDB23MHOPLVPON3VKIWH6EEY42SRPBFZUUXSQC 25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC TZ643KHSE5CUPXFSQ7VYVOCM5MTQ7F4SENEYQX2RNFHGHLQVS3RQC IIN7AVA6JYRBXH6ZYRR7BY7TV6PW7ANAQ2A3PD55FKBKKQFEEF2AC SKWBAGSAB625IIN4UP3NCPRX2H3KCPC2LULHS2A7JVRLO3EUBJDAC TJRYL3NXPW5IUGEV3YOC7JYWEXCZDBFPLT4AUG4P227WVKVB72ZAC JN4GPMQCXOY5ICTLPLWP6DXBFULN4GMAEK7T4GXTZVIJAUUKBBYAC ABLV37FMURRJPEZV2VRKOUYAKEMLI7E6RA4PDAII2EJ5L7WBHKZQC JM7UAK777RAVDAVLQLEOBRTGNW2B47S5G55XITJXO243IUNZHVYQC FEKRY3DYIDLWVBLAZN7W2WFNEKZPCAHABXOSM6K5RLTH5WY2NODQC BNTPYSO6ECZ76CHHLDP3ASSPDSEUH4Y3E3LETKNXVWAWJRFL3YEQC PVLLIAYFIAU4TQFBIP7B4ARIBUX2CVTSBQECEU6VTONJV4ANHVFAC 347OTVM5V6C5UE5ERARQJQTVNTHKQNL5NEKE43TI2SYUH64CWT6QC 47NSOFQMBZCDIBHEAZSENFUGDSQCX3GJHFBUZ65ARDKCYIZ435LAC O7S3ILRELHICJXXTDGMF7KPPZWYHPYCNDPV2I77FZXXH4I454B4QC J6APXOT4QOGQFONWB7G546VTVF6QG42HVOROMHF7YBDJPR4K26OAC L254F6ZIU2HWGLFFGPIORTN4C3TDQ3E5JZ7Z7GQA5AEDIKL6PKDAC Y4NA3JSN63RLATF4NNBPSR5CWF5Z7UEMWCGVX4B6NOAR47CGM4GQC Y5RFQ6KNJCBQUSV2T6WDR7TPZLZYLOAWBVMUTHDXGOZQDZ2U423AC 3DQXSE4YGFBBDUWK4YEOFWW4UPWILWELFSLP37SL6BERGAZJC5YAC PEZFWKRHDHV4UJTPK5XJZ3CGTZ3LPTDYSPTYBENLQ7VRSP7YFSIQC HM6NOS7BN5665KWIFGBXOHZIDMRSVCESN72GMGI6NVBFZGCF3L6QC JMSKD53OB2M34RFVJASMIODY673MVZHPPJYQDT6F4KV7MYQYZWNQC RZP5Z6JM74GVX2M6L2JOFRJ5VT2XGFHBNRDESVHSKF66PQKIW32QC TGJZXTUIAKCFZQJ54ZQEBGFBVZSJCAX6AWDRSH3TP7UJRLGUM5SAC OXHOOJE4XEQKGI3JKURNSITG6CRQFAOFQ2EKKG6M5DCLN7LS4GUAC ECUYJLVGW6ADRLLF2WOMRG464VHOVDPP5OK5SAX2PHBUUC5FD4TQC CHO4U5JC3RNTLXVIDXXJYZMOBZJ4VXW2GVJWDOTBRKK3AJ36LDLQC ASLW3Z5PAVZSWJEMMMVZT226P44EKSAD47QS72JIFJESAI3RPN3AC S34LKQDIQJLIWVIPASOJBBZ6ZCXDHP5KPS7TRBZJSCDRVNCLK6UAC 4PBRMB7TK2TXL7VSDKMUQMT4QFK3SGRU4TUVMEM7V2VS7KKKILAQC MSRJ3N4NX255RVISUOPTTTY2GG4JVVNNM76HWUZ2EKCYESNI6MLQC CRX4RG35C3DH57NIXCW4CG4X7SBMSX7TAJR2BAFQ4LQKCLYUNANQC YFIVTYI7PMVAXV23DUPXPAQNEY3YSFIXQGSN32I3WVHMMD5XS5DQC ESWIM76FGJL4QFLSHU6AC4D74PT7OPLQ7ZCJYWLZS5UCBAJDXYHAC GL7TJGUGV4JPLZCDWH6QVST4RYW7UJV6IP7UAEWEKNBWJO2H2ZHAC ERTQJ5ZXDBRGKC5N3GZ6U4MFFK5HB6737FVLVD4GSMGTIFCSJJJQC 23PFLB2E4QHL5SF3Q2YV5FXRH6MFHENEU2ACVC572ZCYDXCBZVQAC G4TVXOLIF5X2MWV7I4UPT3MSQHRMGME6QRIIFAQ64C45JGYK7SIAC TO43FWKHNIA5MVDOFXYHQODTLBQYEZKX5UIUGID57436UF7G2EXQC MBBPLL4SZUB3JUUYQYLZW7S5OXRCEGJX3WWADOQXGHWQ7BIKCY5QC EYHC4V76YSCWY22DQIXLVTAP5SKZLBSBQWYFPDVEXF6IW552HR5QC DH3YTI6VVI727SQXO4CXSDCSBG2UN3UAWLFULBGRLBVH22ACRXIAC 4FQAKUKUO6PCAZ3N4HUR5XL6E4VA5UQUZ3AEDGRBLVY7W2LMWI7QC BMGB25AWEDOAWKDB7H22R6D4SL32CSBSOBWBIEN3GFGDLEDGEWJAC UADYVV3UD5ERJTZZJGY4EUQ4NJ2JSBG7YYUJ75ZRBIXRQXQKOJPAC AJHVP42Y67SB4NKFMZB24524PGX2XA5WLFNEFV52MIGTS47ALMVQC GR6QXMDUVPNXA2XVDRJUWGVSDI2FXQCKLXAXZUVEI6NYRMK6I5LQC OFH2B2UZBK43QLFQBZ54FOCFLFNE54BZVDNCEUGDTBCUGNVZULIQC KAOE5HB3THUKVGFZRO5EZESHEB3Q34WUO5DFMLWIKOBF47LZTIYAC FLAGBNUNSIQNFDN53CDWABJRTTFWDL4PG34AI474ZKPXDEPYHOAQC W74555HMPXUQ72AGKBXC5P3STMMX5DZAW6ZESUDLNVJBCAG43PLAC CDFS7Z74W5HKPQIHQICOG442KQFXUSBGGLDDQLE3MG74T44YU6AQC OSRZEPPGBIMSZBWIVBTZTTIMV6TEUGVZRZ5AI2ZJW7CVZZQBUIMQC 4UXFU3FZOCBSLDQ4S7MJKAE2H7VUHCNRDQMIY6NJ3PHYXWNGISDQC JEWGBHOQGDSWMLT4FZTQWUKTBJJWY5CSRAQQUOWIZ7U4QBJ6ZLBQC AMBBZGB4EP4MA2ILKQSAY4O2XQAIH673JHCDQ6N4MBGL2MAZGXNAC 7VRY3OH6WA7QLMNNOX76RR7C6HA7CLNYLZLWPXJWAP75QRF5B27AC QR6YCIDD2Z6XGJM6CIWIOWT7WG3TS2RJ6UGCEPZD3J3QISG5BURAC PKHOZG6TIUP2NZZIP6CW5OIPZ3O6PCGWXXW5MH4I6P2WVM24HZEQC CGYTZT5QWIEGYKUOLOK7MFXSLJKLYRZONER5ZCDZO5XYWSLG475QC NCRXRQNCAMQQOZCL7TBMKGM6TOGDAHR3GRXAVVB26FLGE2KUZC2QC 7VCVH6XKT4L4PSCBF6XRYV3WQQDVGDMA73RHPV6IOWMQ2S7B5XAQC EDGP3KBYHBZ62J6RSGWDMWG4AARB2D3ULKELML5H3S4EDWTWUD7QC P5TRGRH7XMQSPCZKM5IEEO34TY6WMLGHHX7BU6Y453JFRXLUR2VQC F2ZJ55CL3T66DFM34BQWCJNHIT4XJFCGTWTA5KESV6NHWFLTGUYAC YF2GZWXNV6NVFFEBEOYS67JQJQK2IUS5BZMGJW3XQPYIJYHQJCEQC AVSWNOP23Z2QCLQGXFDZV7TI4RC3XSXHIX2HDXFHXGKDEZSSIGJQC KBNY5FWKTEAKABFCLPC3QFKFSVZKAGXINPCIFV6WDSWFO4VCKNTAC 7EI4HMXZ7TAWZKFZG2SXHDAX3FWFBCZLUAKOALPRFF72FS7NKVBQC SLDR32H45VDN74AVZ2JDPLNK7AZWXDS2YRTLMGK7E3FYW6OWOFJAC if (mgrd(gc) != NON_MONSTER){tiles.add_text_tag(TAG_TUTORIAL, menv[mgrd(gc)].name(DESC_CAP_A),gc);}
if (const monsters *m = monster_at(gc))tiles.add_text_tag(TAG_TUTORIAL, m->name(DESC_CAP_A), gc);
return 0;if (mon.has_ench(ENCH_SLEEP_WARY) && !one_chance_in(3))return 0;
return (0);if (monster->has_ench(ENCH_SLEEP_WARY) && !one_chance_in(3))return (0);
const int which_mons = mgrd(where);if (which_mons == NON_MONSTER)
monsters *monster = monster_at(where);if (monster == NULL)
int monster_attacked = mgrd(where);if (monster_attacked == NON_MONSTER)return 0;monsters *defender = &menv[monster_attacked];
monsters *defender = monster_at(where);if (defender == NULL)return (0);
int mon = mgrd(where);if (mon == NON_MONSTER|| mons_intel(&menv[mon]) < I_NORMAL|| mons_holiness(&menv[mon]) != MH_NATURAL|| mons_res_poison(&menv[mon]) > 0)
monsters *monster = monster_at(where);if (monster == NULL|| mons_intel(monster) < I_NORMAL|| mons_holiness(monster) != MH_NATURAL|| mons_res_poison(monster) > 0)
if (mon == NON_MONSTER)return 0;if (mons_holiness(&menv[mon]) != MH_NATURAL)return 0;
if (mons_holiness(monster) != MH_NATURAL)return (0);
menv[mon].attitude = ATT_FRIENDLY;mprf("%s sways back and forth.", menv[mon].name(DESC_CAP_THE).c_str());
monster->attitude = ATT_FRIENDLY;mprf("%s sways back and forth.", monster->name(DESC_CAP_THE).c_str());
const int mon = mgrd(where);if (!invalid_monster_index(mon))menv[mon].del_ench(ENCH_HELD, true);
if (monsters *monster = monster_at(where))monster->del_ench(ENCH_HELD, true);
if (grid_is_solid(grd(spelld.target)) ||mgrd(spelld.target) != NON_MONSTER ||(cloud != EMPTY_CLOUD && env.cloud[cloud].type != CLOUD_FIRE))
if (grid_is_solid(grd(spelld.target))|| monster_at(spelld.target)|| (cloud != EMPTY_CLOUD && env.cloud[cloud].type != CLOUD_FIRE))
for ( int ux = p.x-1; ux <= p.x+1; ++ux ){for ( int uy = p.y-1; uy <= p.y+1; ++uy ){if ( ux == p.x && uy == p.y )continue;
for (adjacent_iterator ai(p); ai; ++ai)if (grd(*ai) == DNGN_FLOOR && monster_at(*ai) == NULL)if (one_chance_in(++num_ok))result = *ai;
int mid = mgrd(beam.target);if (mid != NON_MONSTER){monsters *mon = &menv[mgrd(beam.target)];if (mons_is_mimic( mon->type ))mimic_alert(mon);}
// Monster might have died or gone away.if (monsters* m = monster_at(beam.target))if (mons_is_mimic(m->type))mimic_alert(m);
mid = mgrd(moves.target);if (mid != NON_MONSTER)you.prev_targ = mid;
if (const monsters* m = monster_at(moves.target))you.prev_targ = m->mindex();
case ATT_FRIENDLY:m.attitude = ATT_GOOD_NEUTRAL;m.flags &= ~MF_CREATED_FRIENDLY;m.flags |= MF_WAS_NEUTRAL;break;case ATT_GOOD_NEUTRAL:m.attitude = ATT_NEUTRAL;break;case ATT_NEUTRAL:m.attitude = ATT_HOSTILE;m.flags &= ~MF_WAS_NEUTRAL;break;case ATT_HOSTILE:m.attitude = ATT_FRIENDLY;m.flags |= MF_CREATED_FRIENDLY;break;default:break;
case ATT_FRIENDLY:m->attitude = ATT_GOOD_NEUTRAL;m->flags &= ~MF_CREATED_FRIENDLY;m->flags |= MF_WAS_NEUTRAL;break;case ATT_GOOD_NEUTRAL:m->attitude = ATT_NEUTRAL;break;case ATT_NEUTRAL:m->attitude = ATT_HOSTILE;m->flags &= ~MF_WAS_NEUTRAL;break;case ATT_HOSTILE:m->attitude = ATT_FRIENDLY;m->flags |= MF_CREATED_FRIENDLY;break;
mid = mgrd(moves.target);if (mid == NON_MONSTER) // can put in terrain description herebreak;debug_make_monster_shout(&menv[mid]);
if (monsters* m = monster_at(moves.target))debug_make_monster_shout(m);
mid = mgrd(moves.target);if (mid == NON_MONSTER) // can put in terrain description herebreak;wizard_give_monster_item(&menv[mid]);
if (monsters* m = monster_at(moves.target))wizard_give_monster_item(m);
mid = mgrd(moves.target);if (mid == NON_MONSTER && you.pos() != moves.target)break;debug_miscast(mid);
if (you.pos() == moves.target)debug_miscast(NON_MONSTER);if (monsters* m = monster_at(moves.target))debug_miscast(m->mindex());
const int mons = mgrd(where);if (mons != NON_MONSTER&& player_monster_visible( &(menv[mons]) )&& mons_is_mimic(menv[mons].type)&& !(menv[mons].flags & MF_KNOWN_MIMIC))
const monsters* m = monster_at(where);if (m&& player_monster_visible(m)&& mons_is_mimic(m->type)&& !(m->flags & MF_KNOWN_MIMIC))
// last updated 12 Jun 2008 {jpeg}/* ************************************************************************ called from: directn* *********************************************************************** */void describe_feature_wide(int x, int y);
void describe_feature_wide(const coord_def& pos);
if (!mon.drain_exp(&you, false, pow / 50))simple_monster_message(&mon, " is unaffected.");
if (mon->drain_exp(&you, false, pow / 50))simple_monster_message(mon, " is unaffected.");
std::string prompt = "Do you want to try to take the net off ";prompt += (&menv[mon])->name(DESC_NOCAP_THE);prompt += '?';
const std::string prompt =make_stringf("Do you want to try to take the net off %s?",mon->name(DESC_NOCAP_THE).c_str());
const bool can_swap_places = targ_monst != NON_MONSTER&& !mons_is_stationary(&menv[targ_monst])&& (mons_wont_attack(&menv[targ_monst])
const bool can_swap_places = targ_monst&& !mons_is_stationary(targ_monst)&& (mons_wont_attack(targ_monst)