git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1975 c06c8d41-db1a-0410-9941-cceddc491573
NUYXKJP5YXHRDUQW5QW7UC3D5U3VPANIOZAOHFCPWMSRYGMA3GCAC
T2AYVN57EFJQLFUFLAZDXKDAFDGTDLQIEQWQZNYFWJZBYSTYH4QQC
TZTHE3TEKUDMNLAXWKHO66SYIVCVCIOJLKF3MCHSNJTXCKTWK3LAC
Y7ZDLE2BHSLBQUXBWLAFBJXXIH5WYGPBRJDIH33WX7VPLO7PFODQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
3NFVCXRVGHN2CHLLWFZES5RBS4R2BCDS4EEQNSDCFYIFQWQK7MUQC
OP6CTAKWCAU64JXQ3USQYR5E5IFHQHNCACII5UMVRXUTZXJQOAZAC
}
// instead berserkers attack nearest monsters
if (mon->has_ench(ENCH_BERSERK)
&& (mon->foe == MHITNOT || isFriendly && mon->foe == MHITYOU))
{
// intelligent monsters prefer to attack the player,
// even when berserking
if (!isFriendly && proxPlayer && mons_intel(mon->type) >= I_NORMAL)
{
mon->foe = MHITYOU;
}
else
{
set_nearest_monster_foe(mon);
}
int mx = mon->x;
int my = mon->y;
for (int k = 1; k <= 8; k++)
for (int x = mx - k; x <= mx + k; x++)
for (int y = my - k; y <= my + k; y++)
{
if (x != mx-k && x != mx+k && y != my-k && y != my+k)
continue;
if (!friendly && x == you.x_pos && y == you.y_pos
&& mons_player_visible(mon))
{
mon->foe = MHITYOU;
return;
}
if (mgrd[x][y] != NON_MONSTER
&& !(x == mx && y == my))
{
monsters *foe = &menv[mgrd[x][y]];
if (mons_monster_visible(mon, foe)
&& mons_friendly(foe) != friendly)
{
mon->foe = mgrd[x][y];
return;
}
}
}
}