git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@9669 c06c8d41-db1a-0410-9941-cceddc491573
S6ZETU2X3HBTKBDL2KTAMCNPMPGHEZO2JGMILIWETWC7XXRS5RYQC
IMULLFIDJ74CDO45FBHUGKLDUBJRC2MJSYDG24YUACTY3UKU4HIQC
K5Y4Z653HF3YVJYATJQRKNDT5Z24ZXU3RGKQV6BQCKZFBIKM3E5AC
PLTJRRV5HGGXIKZZIARZ2S2YFAHGLSARRDMVDAA5XCA34SMCZH7QC
MDBRMHGYSA46DMKAGSVFGUG6AJGPA54I4OUJP5Z262RVD7SZ7LFQC
HE52WCGE4QWQRVLYEWNKZ4BWYRT52J4NKPJXPX7N4SGANPZLUOPAC
UY6WYOFEVUEERS6BNP635X6OTEBAMYS74IOXROCGUTM4O5IVVOQQC
FDJFPTPB5IT7IFTUXKLIKOODLUC32YH7SPPBIVF4GV5GGTEFTLEAC
S4QDOZ5V4HDGB223JZ3CFLWO4MS4OTH5RJD4WHE2C355RFGKJEPQC
FWWAYEWZS32VGKS6KE5ZIVSGTSBGYNNUHVE4GFRAKAHS2WUF3K6QC
T35GO7UD2HKES4FLJWS3VPJ2AIM5JE7ROGY6EUH6CKPG7WUBNG5QC
HG3YDCMEDPAHV3LDBMFI7QBFKDL3CF2JFI6LQNLDWK5UP4MJLGNAC
IARTQT446GC4EBUI2ZUP3BBAG7TJXKBZS6D2GBKAOPR5X53TD5PAC
4TGSEZKONVHXIGT52B57EVOZT77JI5DV7GAUBAD2VEBDCJJ5KCJAC
HHJZKVBVTR2WTALW2HONZF4XSDTADKTWUJIQAFGDZOJZUGXIXOJQC
HGBHRHXFVTEWYYV2D5HKTKL4Z6OSNR2ZOIHFQX55CVRCXQUQ7MQAC
EZLGE274NEOKEADYMRFN62DFMLCKJT7ADPOA2WYLZODI34CK24NQC
IFYZSFWJRTV6JM46H6U4CMTQX46VT562EAM64Y6UYU3F6RDWRRYQC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
Q3B3UVMYEVC4YJUPYVSNTR4DJH4E6J4JJDHZNT5LNOCHCPPMEMXAC
X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
SW3RLYFNRT3IJBK6LYKHKP2J2YDU7SXQWAJZX7U6S7ICYW43OMNQC
GQL5SIGBHLU3FMCE54XVGLRY5AZHRM6DUEB722REA2DPLGJSN6EQC
L4RYVF46EQKMVOEADGRG4WMPVTQ6NNFGYMU4SHAH6XJIKWVHT77QC
RQ24Y25QDO2GY65XESEVBCP6VXCB7BDTWXO42IPPI6UPRJQ5XYDAC
32PXX2XJVV7YSLLYNAVS7RYKYRAOQ565TZMTITSEPSSXOYPB5M2AC
2Z6IWKMEWE4OIFVWFSZBA2SIXMBJNV6H6LNEPOXTJZW433ABU4EQC
L254F6ZIU2HWGLFFGPIORTN4C3TDQ3E5JZ7Z7GQA5AEDIKL6PKDAC
KBNY5FWKTEAKABFCLPC3QFKFSVZKAGXINPCIFV6WDSWFO4VCKNTAC
2WVP47RBNL5OVYMAZH7TKRYD7F2TGSZ5X74PWVGAYCQP26G3JUHQC
EYHC4V76YSCWY22DQIXLVTAP5SKZLBSBQWYFPDVEXF6IW552HR5QC
O6H3XJJQQBOGTFEBWU7UBLBF5F7JWCHS2HRGA6FA6EXGSXZQZVOQC
KVPP3CYPEFADQCL5Y56ELSUBA47SFNAJNCSVCSOK2GF67DHVMBCQC
HKQTMQVLLOBG2VO47TUGSTQALA3D2YLMEVADXXYNR4RGGKD3F2ZAC
TJRYL3NXPW5IUGEV3YOC7JYWEXCZDBFPLT4AUG4P227WVKVB72ZAC
3PY3L3A4QRW3Z5Y7SHO4TMVOOP2VNCO27X2MX4DTOP2SADLBQUOAC
SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC
45EMD3KLQPMERNMIKU5G76H6556XOMIW352TSBP7VLWJX2YYGS7AC
5UVDIVD4NSXA52U4QMQIVST3GSZJ2A2YZK3RUEXKPM43YVQ7LI5AC
3CY6KJWHQUZFZGO2C7VVCO32RRHUIMQQQJAE2MUXFF45F7ECRLJQC
WEFNLSQ7HRLNHIKFH46FIBBZNAORSXGOVIJWZGVVEHL36MICAUAAC
PFEJ4LMDNEKLMGRCMWQ7EIRVU4JMYGICI4G7X4WVWOROVXQCBZ7QC
YHSVOROKPYS33Y4RYZRVZTE3G5LXOFX52HEDNLV6HIXOJYNOKH3QC
LW4N5EHKL776DURXZMAM6JEW3JPWWX5BSNP7TCZHTLCDOQTTGFCAC
SKWBAGSAB625IIN4UP3NCPRX2H3KCPC2LULHS2A7JVRLO3EUBJDAC
HB27XKFYVYIEQZGBCEZ6LKPUBMXLIPDAAS636GJ5TULIQ7KND5KQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
MSRJ3N4NX255RVISUOPTTTY2GG4JVVNNM76HWUZ2EKCYESNI6MLQC
RYT42Z6CED4KV5CCJ45CHZ3DQGLFMDCVH6CSQZNXOILULDG4MXVQC
LEZWYG752CKY6URMLSQTOADDRAJ5NTT7KH7BC5ENGQ55GXKHQMWQC
HVEU33HIUHCYFINJMVSSOIRUPZGGVC7NMWUN2EADG2W373JP3WOAC
PI5BATR2SER3RFE76IUGHM2AGXVFOUM3PLU7WC2K2Q2BA5K2E73QC
TPJYUAKSEZMCCCJANJ5EQ7F67QVTPFEOWBD7WYK33NLRN657Y5VQC
KPU2SA6G7UECM5N6PNXOT5CCQAYFBN47K5JYBQMFBD25HL2A5GIAC
6UPCB64Z2W243QR3JQD7WPQMPVNVBPYRG7GTGZK6LTKKBBSKBHZQC
JYEEOUYQ7ZPKOGWUV7VCORBVSOLF2UCBFBH3TR75RGOSS6PNKYUAC
YDWBT7CZGY33CNDPF7S4LK7YULFMDUJAKIODKMGB2IYIWHF4SJWQC
Z5ORIVPW6DXOP3G37OTMP4CY4JYUYS4PGNJ4BTZQ3L2ZTWU67RWAC
QCUMH3C7GXV7ZW444WT5SFAXQOJKJSE2YCQCEHMRYXCWF4QI7UMAC
RNJX2RDBDA62DSAUIWVVPFS7YNIU3GEOXDWJUABDS5DS5QGS3LAQC
7OC5HCGLN26GDA5SQTWKBSUZYZDZJXWIVMJ4NKKXREOEEPUGQ4YQC
X2FMEN4E345XD26Z2X7JMJ7VGHOGCGIELMHQRE2ITLVNQACP3NOQC
TDXC5VWE2B5VVGNXEF7V5E6UCKCSAIZVLJXFIOQ4G4A2PK5L7BBQC
P25D567E2UEAQHNI7LAZPNY7KAI3J4OE77YKLWOIEEALC5RREJHAC
PZNRGNZPN4YLXL2UDMEUPE33AAZZ6Z2YPK6EQGYZL2PNTRWLCUNQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
M6MBPHNAERUXYJ7KHK5FE2B44CLBY4M5MR5KY74HVDFNHVLOEQIAC
OI7JKBFFIMIGWID2EJSMRP2EPEJH5YY42WTEY4QSSL6PFKRU3KJQC
23PFLB2E4QHL5SF3Q2YV5FXRH6MFHENEU2ACVC572ZCYDXCBZVQAC
5XNQ3SSNBFXFNWA6DPM74W6FH65NX665P3DMH6YCWVFOPZTJSYCQC
MBBPLL4SZUB3JUUYQYLZW7S5OXRCEGJX3WWADOQXGHWQ7BIKCY5QC
LSAVA5BJQO4Z2MYXVQOM4AOXTCLKDNQMOS3DZ4SDNO4LI422LA3AC
6CWMT6I76TMTHT7BVOVZJ7ATDMZ3VBKKICIRRZBOSGLHJMDS2DWQC
DKRSOHZXL6EPSLKOKHF7GJXSZEJVY7CXGACSHWLM5B5FTRETWWCAC
OQXMUX5JEITCP2QXJKKOQRLRVTD3LTSDWGI6HTK5GVDIAJ7VKO6AC
EGV2HM7SD7UQSWJGLR65NQJTUBAJ7WHLM67FMH4UFP7JRSFKREPAC
JPYDWBRN75GC6UZ26MXJTCXGORTJOWGRDEU4JFPU52LYHGK6UI2QC
HW7XKO7HRAUQVDVVKG5GA7PYAEL5J5GKVDPT2CKAD3FLERAY5HLAC
3KAINFIXO7WNWGUGZB43EUNFRS2ZPBLQZDTY456QACMRHYIJ7WDAC
6DNNPEMZGBQDMA7YG4LCTQUVZ7LYPC3R4A2XBYT5SDQ65GYOLJVAC
UEI5JAVCMN7Y2SACTEZPZSNFJWOJTC55G24Q6LKQCT4XNDH5ZQIAC
LCCGXSFIDQFIRXHGRJWOELNPQOHHCXCWXS366GOULDFPQVOKAIJAC
VJDLV4PF2ZJ46NERO4LZUX5JE2CD5XBOBQCYYPTFWTHLUEYDUOYAC
XUCCWGMXKPIR34BBCCOI67YHI3RST4STDWSDUZTN4B2CJWXQLQ7AC
B7MSPF6X2RLGWN4M6ZZF3WSOPKGYPTTD7LIJVST7DXN27DG6JHNAC
I342SFETG3E6PUDZLBYD6A5REGW75PFYCI5JAR7WVPGTODDGZX2QC
2U7VFZ3242P22EPRQKCIHFZRRWHHBZGOEEN2WJNMCXV5BEI67NNAC
LABXKXWWQY2V4FUDLGVTDYHXINAP6KRHZDHBQ2FE22FFOEIZPL6QC
3C2VE43SHCSBY4LTRTFYFLIPRWFUN6DXU6D34QVWDQTSNRBUFG7AC
7YUGK5Q64KG5O7GJGTUBRRLHAHBCJ5YOE23YUPT6UBKUSB67CYAQC
AVEOSLDREJHWFZE6ULAWGQPDT24YX4OAOGL7YAUCFVRGHCS22UCAC
6O5667Y65C5GTP4V3NBKWUN22IRGCAXEELJ6MCANMYPBOKDUO75QC
HZ7DYCFH4VUDNUBNP5Z2HSYJWJRIVUEQVYWG7NTCMYNZJQT7NIPQC
2WWSPLCXLSMBGTXUC33EQ5YBOA5IBFSMJSTZ2TU6HZIMZZWZJWGAC
L5CVPV5IUBSO4EE3WK4O6SQGIMIEPSMQONFBWEVGJBR2HATLPZIAC
J5AAA4LUTW6PLS2DBKGTXPSW2SGOBMICEOA3VDHRSKVLU36EGQMAC
LOAF3UOCD7BGVGFWA5IPJT55URGZSKJJDMUIP6CN2VVWM5UHWTBQC
CCRQESB4ADT4WA7FGLNZZXAJ6G5QMCTYCZIWORBN45P6ZPILC34AC
HNPSSHGZFQ3E2I6X6VTKZ3WBBM2G25P2D7SIL2SZYKV2CCEA2ADAC
LTFWXACXWTSFJNSVDFCMC4IJBHUERV6DNCKIECIMRXG2M2U3TYJAC
CIPVRZGLOZHCERK6YPOBV3P2E4IAB4H6D5EHLRQE2O5E4P4VCBUAC
L2JKKTBQ2U5FMUMCQHVPLTVRR23RHKM67I7FXGCIGYGF7NTGBIEAC
DWWOM6V2Z4RQVT6AKW6OYLSFOUE4W5PTP2SH4AAZE2E4EIH4RLUAC
A54S2WRWNIV4Y4XB5JHR7NALLB55ZCX3Z5DSGBMAVGVY6I7KY2GAC
7AMQN7MITMXBNVDAK5VOXTQ4TZIAOD6ZLOFJG7GQMBTY23Y2BKSAC
RBAGQ2PB7V5YAM5KSHSZR2E3MLKDSRVM5XYGI2TIXP5QMVBOQHDQC
DHXIQXK5VTL5JDDEERAVLZK4KBQLXFTBN5TQ6MH3PRBLG5ULOS4AC
S7Y7E2KDAFMTLDIXUTR673SYL5N35VXYGLRU67L42WHVYG5SEPBQC
YMLVBQ6M27MECUVMU3BQP3WSGR7GW4XJMQIHLGHHWMVXHMMIXOYAC
3EMUQNNO6WWZMRVSRDRYPLQS2B6GYNTQSWAPY6BWY365XWZZV5XAC
SQDS2YBPOYDDDCW3GGARBZ2HQIUHCQKL7SSHKFQWDENOL5YNNVNQC
34RCM6RXIWHZMYXNGFQKLKQIAJ6QISIQ3D5HMK4HZNLVX66BSUBAC
YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC
RSIUBEQUGNU4LO6KH4PKVROWQS33DAKSY4XFVGN7T3CEKSXABCSAC
PSE2BGMI3WPJ5HLD7S6KBRMESZYOLNOUSJWFRVAT2XR5JG3AEJPQC
3TEB6EUUYKQ4S6WJHX46OXUM4JPDSGJJNGACT7K7IBZU3L2SVJQAC
YBXZWBUWXXLLYKP5IHXU46AHJ4YO55NM5QE34I3DFB25NLPQXZPAC
KQNIGKATHT4YSPJFPJGIGPD6VNR5B753SE2JN2LCXZZJNHCGY3DQC
TPUN5AJ5NI7QCL7MIQH3VPYYW2O55TWXOSTAGV3AY23WVH7A3ZYQC
CB7U6IEEN2Z74672EYQQHWTB4GXVNNMAYDRQYAGY6K3QSDYYEHYAC
62RTHBY44JDI7W4EYD4UD3W2QL4CZ3SJ6DY7LX6QBCF3JWFEEIOAC
2UVHNPJRS352B7HNGZMEQRAIN5NE4R44B7JRQWCHUMZJIALWOEGAC
LUNOTEIMYZJ7JL5P55GEHUVSDEZMYX3TWYUB2ABRHAYJEWQSSXIAC
XDJGQNFELURGXMUAOOVALQMSLAJVHMG63KPKVA33HTJFVZROGZ4AC
J6APXOT4QOGQFONWB7G546VTVF6QG42HVOROMHF7YBDJPR4K26OAC
Y4NA3JSN63RLATF4NNBPSR5CWF5Z7UEMWCGVX4B6NOAR47CGM4GQC
DMG73XDQHY2X2PHKWIY56XKD3O4NPGZKKIO6GX3IV2LLRVXPGKYQC
3DQXSE4YGFBBDUWK4YEOFWW4UPWILWELFSLP37SL6BERGAZJC5YAC
YFIVTYI7PMVAXV23DUPXPAQNEY3YSFIXQGSN32I3WVHMMD5XS5DQC
RNIAOCLZYEW5GB7I536HRPYJ7DSDEXITH5RZP5CPKJYHVUTWBKRQC
6TAQWWURX3QF4XXV7YGJEL5VKFLFEB2HV2PGJ5ARYNNRRRNVTFUAC
NVAQAP5YCPRQHJN4UL3ZYNKZLVUUXCPR57VC7SGVPSB3NPM6ORFAC
I7QLYOTE6DLQZM7YWUWYLKHRJRB2A3STQ42ALSRGQICEWKD2QTEQC
NMZFCCM6O3KO2GJWKOSULN27B3QIZKWPBOB62PAILXMRQD4JMIMAC
NXVPOFYKJFWQWKVPQUMWH2Y2KJEZX44BUOBFJ4JD4KFGPEGYHG4QC
PAYI4UTJCR3XZSFOX5L35EURHRXQ6STO4Z7AQ3525QPNL3QYLNBAC
DF5LOTJFSXOT7UBDHLBDLGA22OY4L7ZF6CVFP6H3KL4N5CHB5C5QC
ZIFFVCQ72K35WGIUMZYN3KOXIUXF2CNXWKG6ZWEZ6LT3NSF3XOQAC
O746OUDNQBNZJ5YAHONNORFKWHV2EGDJWNAWGBALCYL3FGDZOOHQC
NS3KXJXQSN33UQSOBDK3WXXKA3KY5YOUJL67NBZKGQAJYDYZ2COQC
FBSQWOO5V3GQG3RISR2VFCIJD5U3L7EWVLVJES6NJ4H7F24LWWFAC
DINIHMHQWCV7UKXHNIA2TLT2ZOO5IYJJE7GMI3XUAWYIR37AKD2QC
RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC
god_speaks(GOD_XOM,
_get_xom_speech("repel stairs").c_str());
// Don't mention staircases if there aren't any nearby.
std::string stair_msg = _get_xom_speech("repel stairs");
if (!real_stairs && stair_msg.find("@staircase@") != std::string::npos)
{
std::string feat_name = "gate";
if (grid_is_escape_hatch(grd(stairs_avail[0])))
feat_name = "escape hatch";
stair_msg = replace_all(stair_msg, "@staircase@", feat_name);
}
god_speaks(GOD_XOM, stair_msg.c_str());
if (grid_sealable_portal(grd[i][j]))
{
grd[i][j] = DNGN_STONE_ARCH;
env.markers.remove_markers_at(coord_def(i,j), MAT_ANY);
}
grd(*ri) = DNGN_STONE_ARCH;
env.markers.remove_markers_at(*ri, MAT_ANY);
if (defender->holiness() != MH_NATURAL || !weapon
|| damage_done < 1 || attacker->stat_hp() == attacker->stat_maxhp()
if (!weapon || defender->holiness() != MH_NATURAL || damage_done < 1
|| attacker->stat_hp() == attacker->stat_maxhp()
|| defender->atype() != ACT_PLAYER
&& defender_as_monster()->is_summoned()
if (grd(*ri) >= DNGN_STONE_STAIRS_UP_I
&& grd(*ri) <= DNGN_ESCAPE_HATCH_UP)
{
if (grd(*ri) == DNGN_STONE_STAIRS_UP_I)
env.markers.add(new map_feature_marker(*ri, grd(*ri)));
if (grd(*ri) >= DNGN_STONE_STAIRS_UP_I
&& grd(*ri) <= DNGN_ESCAPE_HATCH_UP)
{
if (grd(*ri) == DNGN_STONE_STAIRS_UP_I)
env.markers.add(new map_feature_marker(*ri, grd(*ri)));
mprf( "Targeting mode is now: %s",
(mode == TARG_ANY) ? "any" :
(mode == TARG_ENEMY) ? "enemies" :
(mode == TARG_HOSTILE) ? "hostiles"
: "friends" );
mprf("Targeting mode is now: %s",
(mode == TARG_ANY) ? "any" :
(mode == TARG_ENEMY) ? "enemies" :
(mode == TARG_HOSTILE) ? "hostiles"
: "friends");
int item = igrd[i][j];
if (item != NON_ITEM)
{
mprf("%3d at (%2d,%2d): %s", item, i, j,
mitm[item].name(DESC_PLAIN, false, false, false).c_str());
}
mprf("%3d at (%2d,%2d): %s", item, ri->x, ri->y,
mitm[item].name(DESC_PLAIN, false, false, false).c_str());
for (int y = 0; y < GYM; y++)
{
// Unlinked temporary items.
if (x == 0 && y == 0)
continue;
// Unlinked temporary items.
if (*ri == coord_def())
continue;
// Looking for infinite stacks (ie more links than items allowed)
// and for items which have bad coordinates (can't find their stack)
for (int obj = igrd[x][y]; obj != NON_ITEM; obj = mitm[obj].link)
// Looking for infinite stacks (ie more links than items allowed)
// and for items which have bad coordinates (can't find their stack)
for (int obj = igrd(*ri); obj != NON_ITEM; obj = mitm[obj].link)
{
if (obj < 0 || obj > MAX_ITEMS)
if (igrd[x][y] == obj)
mprf(MSGCH_ERROR, "Igrd has invalid item index %d "
"at (%d, %d)",
obj, x, y);
else
mprf(MSGCH_ERROR, "Item in stack at (%d, %d) has ",
"invalid link %d",
x, y, obj);
break;
mprf(MSGCH_ERROR, "Igrd has invalid item index %d "
"at (%d, %d)",
obj, ri->x, ri->y);
mprf(MSGCH_ERROR, "Linked invalid item at (%d,%d)!", x, y);
_dump_item( mitm[obj].name(DESC_PLAIN).c_str(),
obj, mitm[obj] );
mprf(MSGCH_ERROR, "Item in stack at (%d, %d) has ",
"invalid link %d",
ri->x, ri->y, obj);
// Check that item knows what stack it's in
if (mitm[obj].pos.x != x || mitm[obj].pos.y != y)
{
mprf(MSGCH_ERROR,"Item position incorrect at (%d,%d)!",x,y);
_dump_item( mitm[obj].name(DESC_PLAIN).c_str(),
obj, mitm[obj] );
}
// Check for invalid (zero quantity) items that are linked in.
if (!is_valid_item( mitm[obj] ))
{
mprf(MSGCH_ERROR, "Linked invalid item at (%d,%d)!",
ri->x, ri->y);
_dump_item( mitm[obj].name(DESC_PLAIN).c_str(), obj, mitm[obj] );
}
// Check that item knows what stack it's in
if (mitm[obj].pos != *ri)
{
mprf(MSGCH_ERROR,"Item position incorrect at (%d,%d)!",
ri->x, ri->y);
_dump_item( mitm[obj].name(DESC_PLAIN).c_str(),
obj, mitm[obj] );
}
// If we run into a premarked item we're in real trouble,
// this will also keep this from being an infinite loop.
if (visited[obj])
{
mprf(MSGCH_ERROR,
"Potential INFINITE STACK at (%d, %d)", x, y);
break;
}
visited[obj] = true;
// If we run into a premarked item we're in real trouble,
// this will also keep this from being an infinite loop.
if (visited[obj])
{
mprf(MSGCH_ERROR,
"Potential INFINITE STACK at (%d, %d)", ri->x, ri->y);
break;
mprf( MSGCH_ERROR, "Program bug detected!" );
mprf( MSGCH_ERROR,
"Buggy monster detected: monster #%d; position (%d,%d)",
i, monster.pos().x, monster.pos().y );
mprf(MSGCH_ERROR, "Program bug detected!");
mprf(MSGCH_ERROR,
"Buggy monster detected: monster #%d; position (%d,%d)",
i, monster.pos().x, monster.pos().y);
for (int i = 0; i <= SPWPN_CONFUSE; i++)
{
if (ego_quants[i] > 0)
fprintf(ostat, "%14s: %5.2f\n", names[i],
100.0 * (float) ego_quants[i] / (float) acq_calls);
}
for (int i = 0; i <= SPWPN_CONFUSE; ++i)
if (ego_quants[i] > 0)
{
fprintf(ostat, "%14s: %5.2f\n", names[i],
100.0 * (float) ego_quants[i] / (float) acq_calls);
}
for (int x = MAPGEN_BORDER; x < (GXM - MAPGEN_BORDER - 1); x++)
for (int y = MAPGEN_BORDER; y < (GYM - MAPGEN_BORDER - 1); y++)
for (rectangle_iterator ri(MAPGEN_BORDER); ri; ++ri)
{
std::vector<map_marker*> at_pos = env.markers.get_markers_at(*ri);
for (unsigned int i = 0; i < at_pos.size(); ++i)
if (mon_num != MONS_PROGRAM_BUG)
// Don't attempt to get more information on ghosts or
// pandemonium demons as the ghost struct has not been initialized
// which will cause a crash.
if (mon_num != MONS_PROGRAM_BUG && mon_num != MONS_PLAYER_GHOST
&& mon_num != MONS_PANDEMONIUM_DEMON)