git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@9733 c06c8d41-db1a-0410-9941-cceddc491573
YHDGYR3VS3BCPPD4NLT53AN23R2KYPXBAN5JZJK55673VQ7MP7DAC
J5UGBV3RSQDQUEGHIMXS3PLNPSO4VTK2SGDLQGHCTDXTF5HUOZ5AC
76XAPPSY2BXXT7AC45TNI7DL7AP6242DXC45CDIZ6T3RN4ZI3R4AC
WT66JDIRTLLP37SHTV4GI3V64JFJ4D25LNRLGCHFG6CLEFKJ3QGQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
PKXXBHS3LWLPZI2QVRX22MSQ4R2626IXRSNHFFYHXYTLJJQU54LQC
KZMLJTPHO2VSNRKKZ252S7F25KWFIH2WT4JR6GLUJROADBU7WLYAC
SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC
NUYXKJP5YXHRDUQW5QW7UC3D5U3VPANIOZAOHFCPWMSRYGMA3GCAC
KAOE5HB3THUKVGFZRO5EZESHEB3Q34WUO5DFMLWIKOBF47LZTIYAC
HFZQADL3R7ITWM3VPW5G3NCB2AHRMAMKYZOI3STW5LWUCTV4FFFQC
2E4RV454MTTCKYLKMSHEEAFPNAFVUXXPBZV3XP6V7QMF4BBWE7TAC
BKQIVRLP3ZWFWOZAFACQPXCIJLVA3BLPZJ56PK67D4VT3NT6RBIAC
UZ6N6HOUPGVSPC5NQROEEDWMEGJA5XUWUY2AKH5QG65AZ25PVXDAC
GXXYPBFEWKRZQ6OBGYNS2EXZN52NGNV3UU3WM6S5R74CMJBAKGTAC
QX7GM3YZFUBCXTLQIKF27YOPKYR2655HYRWSNTDXXI6CTH4XEP7AC
ON7HKKWM4CRYWNI5SZKKWI5Q5MVFOPC6QVKHXX3D66G7EOZEMGWAC
WEZLXS4OSKPX6ZFFZZKKEO4NKG2QC4AFANVC34IYNDAEDGWJJHLQC
MSRJ3N4NX255RVISUOPTTTY2GG4JVVNNM76HWUZ2EKCYESNI6MLQC
RXZRRWQZH7H3E66ENDI6WTSDDTC5F7MDGIMZTEDYDE4YCUQN4CSAC
std::vector<coord_def> d;
d.push_back(coord_def(-1,-1));
d.push_back(coord_def( 0,-1));
d.push_back(coord_def( 1,-1));
d.push_back(coord_def(-1, 0));
d.push_back(coord_def( 1, 0));
d.push_back(coord_def(-1, 1));
d.push_back(coord_def( 0, 1));
d.push_back(coord_def( 1, 1));
// Search the eight possible directions in random order, with increasing
// distance from the monster.
std::random_shuffle(d.begin(), d.end(), random2);
for (unsigned int i = 0; i < d.size(); i++)
{
const coord_def p = mon->pos() + coord_def(k*d[i].x, k*d[i].y);
if (_mons_check_set_foe(mon, p, friendly, neutral))
return;
}
{
int count = 0;
bool success = false;
for (int i = -k; i <= k; ++i)
for (int j = -k; j <= k; (abs(i) == k ? j++ : j += 2*k))
{
const coord_def p = mon->pos() + coord_def(i, j);
if (one_chance_in(++count)
&& _mons_check_set_foe(mon, p, friendly, neutral))
{
success = true;
}
}
if (success)
break;
}