out into the open.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7758 c06c8d41-db1a-0410-9941-cceddc491573
BY6T2KQBNMPI54QVEI4QRI6GOCMKAPDEY543VTX7PWXFNNQF25MQC 37NLMXYLDTNPWXKWZ4F3TBMNA7CKL5L6TSUJMA2JY26TCJUUE54AC 43JVVA7TDO34AZTBX4Y6VLCNRP2BHC4OAUGYNWLVYGUIL6HGESPQC JYEEOUYQ7ZPKOGWUV7VCORBVSOLF2UCBFBH3TR75RGOSS6PNKYUAC BR42OZ3CHR5F5MKPBUOPRG3EXIEQRRRWD5L54BTZQRDXV6VBLATQC Q3B3UVMYEVC4YJUPYVSNTR4DJH4E6J4JJDHZNT5LNOCHCPPMEMXAC WFG3MHLJUHQEHV65SPAIOI74NIZTGM447T4WKWKF7CMUIUNRUQOAC 3DQXSE4YGFBBDUWK4YEOFWW4UPWILWELFSLP37SL6BERGAZJC5YAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC ZGUJWUFJ4NFFJ6PGXLFGQWCWBCZHPWGWI44NJHJEVPRG5L36PADQC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC IA6EPF5ZQE6276Q4JSUKBSXHX5ODRY5I5UK7LXH4MQEDG36P6PZAC L254F6ZIU2HWGLFFGPIORTN4C3TDQ3E5JZ7Z7GQA5AEDIKL6PKDAC S34LKQDIQJLIWVIPASOJBBZ6ZCXDHP5KPS7TRBZJSCDRVNCLK6UAC // Reproduced here is some semi-legacy code that makes monsters// move somewhat randomly along oblique paths. It is an exceedingly// good idea, given crawl's unique line of sight properties.//// Added a check so that oblique movement paths aren't used when// close to the target square. -- bwr
// Reproduced here is some semi-legacy code that makes monsters// move somewhat randomly along oblique paths. It is an exceedingly// good idea, given crawl's unique line of sight properties.//// Added a check so that oblique movement paths aren't used when// close to the target square. -- bwr
if (mons_wall_shielded(monster)){if (mmov.x != 0 && mmov.y != 0){bool updown = false;bool leftright = false;coord_def t = monster->pos() + coord_def(mmov.x, 0);if (in_bounds(t) && grid_is_rock(grd(t)) && !grid_is_permarock(grd(t)))updown = true;t = monster->pos() + coord_def(0, mmov.y);if (in_bounds(t) && grid_is_rock(grd(t)) && !grid_is_permarock(grd(t)))leftright = true;
if (updown && (!leftright || coinflip()))mmov.y = 0;else if (leftright)mmov.x = 0;}else if (mmov.x == 0 && monster->target.x == monster->pos().x){bool left = false;bool right = false;coord_def t = monster->pos() + coord_def(-1, mmov.y);if (in_bounds(t) && grid_is_rock(grd(t)) && !grid_is_permarock(grd(t)))left = true;t = monster->pos() + coord_def(1, mmov.y);if (in_bounds(t) && grid_is_rock(grd(t)) && !grid_is_permarock(grd(t)))right = true;if (left && (!right || coinflip()))mmov.x = -1;else if (right)mmov.x = 1;}else if (mmov.y == 0 && monster->target.y == monster->pos().y){bool up = false;bool down = false;coord_def t = monster->pos() + coord_def(mmov.x, -1);if (in_bounds(t) && grid_is_rock(grd(t)) && !grid_is_permarock(grd(t)))up = true;t = monster->pos() + coord_def(mmov.x, 1);if (in_bounds(t) && grid_is_rock(grd(t)) && !grid_is_permarock(grd(t)))down = true;if (up && (!down || coinflip()))mmov.y = -1;else if (down)mmov.y = 1;}}