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);elsemprf(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 inif (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 inif (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)