level. Fixes [2472560]. Code cleanups in _handle_monster_move().
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8870 c06c8d41-db1a-0410-9941-cceddc491573
2IPPYYFWEFI342OOKTTEKMLLBUFPERK7RNLBF2TWQF5D47M6PSTAC YKTMDZB5HVAP2IJGCOJQMIBH6CAD47O62SGRP4XNOAQ55EA3OSJQC XZTGZ7MOPX7ZOHQ4IQPXOHGUH5WPRNOYAQ6IQOMZDZYNVSAYFTNAC KMID7RZF737CIGE4TTZPJIXVOL5JSXG6AWXVKGLNPXARNPHJEBCAC CA6AAWUMXEKXR5VTGK7DHBBLTXDKWP5HUJIKMPZBM7QCYXFZKCHQC 4DVSA4UKEO3B44LGKGQYIIP2YF2A33ACY2TMO7CNGUBML6REPCYAC AOXEL2V6ICXEIRWXB76LJARWP3NPKG2L4UFYOIQUALUJU4ZLE3UQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC 542UIZKI65UDRNEMGFFDBWYD5XC7AYLTZ3JZQRR2GHYJALD3YY6QC PKENI7REL6MQ5KKGSBIOVMPJKITY6OLQRXHVD4Z6PU7HMS23XM7AC PKXXBHS3LWLPZI2QVRX22MSQ4R2626IXRSNHFFYHXYTLJJQU54LQC SPWOUV6ZNHLBSAX455ACJDBEJYVFHGO4H76L4NPAE5DF6BEAK34QC SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC SIPZWJMMXWK3H2DOA337HXWDFKKNBKMQ7W2YIVDZKPZGZMBTYHVAC P5TRGRH7XMQSPCZKM5IEEO34TY6WMLGHHX7BU6Y453JFRXLUR2VQC NCRXRQNCAMQQOZCL7TBMKGM6TOGDAHR3GRXAVVB26FLGE2KUZC2QC OCAXB5FMLNTM6ZOSWRFWBMRFFXHTLSJXHXR2AT6Q6MZN5RX5V2QAC OSGS3PH2L5CBTDVZCZS6OCFQNA4A7RMEXBYJQB7DDZBYYJW7QSSAC KAOE5HB3THUKVGFZRO5EZESHEB3Q34WUO5DFMLWIKOBF47LZTIYAC T2AYVN57EFJQLFUFLAZDXKDAFDGTDLQIEQWQZNYFWJZBYSTYH4QQC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC IPQ63XIUPHFMCQOZZAVSGCJOZFDRDWZTUUJSAUMARNDUFLBEMYIAC MIMW5CBZXQEGL6BFKK2LK322VRSBADFF7AXMC24F3OBCDUYKQTGQC NNG27Y5ZQAZX6UD7F7M4F6KEZBEDFXPEEC3LFUSX4ESKT7K6UJQAC TGJZXTUIAKCFZQJ54ZQEBGFBVZSJCAX6AWDRSH3TP7UJRLGUM5SAC 4UXFU3FZOCBSLDQ4S7MJKAE2H7VUHCNRDQMIY6NJ3PHYXWNGISDQC PHBACPMH3F34GODHVDKNCMXWU373RJQGVTDLBFCCDLLWDXVYOLTAC YTIPWYSKK63WIUKVYLCD2WQUYIBW4R57653MOCJWIKNIFCNHA2DQC ZGUJWUFJ4NFFJ6PGXLFGQWCWBCZHPWGWI44NJHJEVPRG5L36PADQC S34LKQDIQJLIWVIPASOJBBZ6ZCXDHP5KPS7TRBZJSCDRVNCLK6UAC LOEVXFCKSHE3TCQSUSHOIHHVDJT3RFLE6U3VDI6JXAQTQI5KCJ4AC UTGQ25S6K4R2POPYLVF6A5ZU4PRTN3SIR4DL672HERNAE3RZP7AAC LTX72QGIPNUGWQN5ULPOMFCOPZTK7472DQY4AYX5WM3WHSUVXI5QC SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC 5KJCHLIUFKRPMIVWUAYT6EOF7SW4PTQF6Y5OPEFWXGLE7DUGYLZAC XJBNF2N35THJC2KYGCMPLC3CDCJP25CEDKHUI3P55V6H5YWXBUKAC R22TTMI6WXWULC7ODKFF3QCB7MOTETQQ6IR4BUCUPOCQKQNCTT5AC 5HGMULU7IWTFJJH35S6XTCW3YZEMCORXHQL6NVY2TO4DUMVITNJAC QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC KNW37MRIU72X4LPXSA4AUPW3VJMOXKWY2XFTV67KW2ZXTCSYMMNAC FUEEIUKGHHFPIRZCN3N753GONWAZTWQ2ZWR53IBJAAZ6FZUNGOMAC for (int yi = -1; yi <= 1; ++yi)for (int xi = -1; xi <= 1; ++xi){coord_def c = monster->pos() + coord_def(xi, yi);if (in_bounds(c) && monster->can_pass_through(c)&& one_chance_in(++pfound)){mmov.x = xi;mmov.y = yi;}}if (x_chance_in_y(2, 2 + pfound))mmov.reset();// Bounds check: don't let confused monsters try to run// off the grid.const coord_def s = monster->pos() + mmov;if (!in_bounds_x(s.x))mmov.x = 0;if (!in_bounds_y(s.y))mmov.y = 0;
for (adjacent_iterator ai(monster->pos(), false); ai; ++ai)if (monster->can_pass_through(*ai))if (one_chance_in(++pfound))mmov = *ai - monster->pos();
if (!monster->can_pass_through(monster->pos() + mmov))mmov.reset();int enemy = mgrd(monster->pos() + mmov);if (enemy != NON_MONSTER&& !is_sanctuary(monster->pos())&& !mmov.origin())
// OK, mmov determined.const coord_def newcell = mmov + monster->pos();monsters* enemy = monster_at(newcell);if (enemy&& newcell != monster->pos()&& !is_sanctuary(monster->pos()))
int targmon = mgrd(monster->pos() + mmov);if (targmon != NON_MONSTER&& targmon != i&& !mons_aligned(i, targmon))
monsters* targ = monster_at(monster->pos() + mmov);if (targ&& targ != monster&& !mons_aligned(monster->mindex(), targ->mindex()))
}if (attacked){
{monster_attack( monster_index(monster) );return (true);}// XXX Is this necessary? Isn't it handled by the next case?if (f == monster->pos())
// last updated: 08jun2000 {dlb}/* ************************************************************************ called from: monstuff* *********************************************************************** */bool monster_attack(int monster_attacking, bool allow_unarmed = true);// last updated: 08jun2000 {dlb}/* ************************************************************************ called from: monstuff* *********************************************************************** */bool monsters_fight(int monster_attacking, int monster_attacked,
bool monster_attack(monsters* attacker, bool allow_unarmed = true);bool monsters_fight(monsters* attacker, monsters* attacked,