very good.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3083 c06c8d41-db1a-0410-9941-cceddc491573
POKKD4OOQZD4PMEITE5SNPXBNRJNNEJ5DJLRHF5PSF4G4MCYFM3AC
EWFP6RFDHTEGD6SX36LYRLQB3APIKGAHNBKWPD56RGYBUE4FWJUQC
YPALSPBPRHBZ6AA7Q2JVYWM53XIPB536EJGHUMESY4GKF4XFILZQC
FBK5ECMQ6HJSQSN7C3DICKJIRJ3CSO3CHCQ3ONPBKLLSHDGPBQ7QC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
LPW5S327G7WSDHNED5A2UB72HVH27YYNFZGBYWUW5XSV7U4HPNQAC
LIBWXPN6HLJAIGEFJYLOL4HLIUD236U3WM5QPHIZ3DSB4CCUJERAC
ZCRK2DJ5VKECRQXZTWT4NUDL2VT5ZHUK7NT6NQPLRJ56TDX5PJSAC
3UDBQWJX7TIIV3WJWCOIETL7NYQ4GPEU5SUXA247SUZXNEAQQMBQC
7CMQLE4XIFMWDEUZAOKIKDW7BHAJCK5S26APMEZ6TEFEH63TEZ6AC
4BSWRAIA7TLRFRZ4RMLOVDHWDWBGJCAQZUOPXPJYW6OJY6B3HPLQC
Y4ZNLX7ZW3DDSUXXQSQ235EHKVLLEFOTG2J2FOT7Z6HM6OMPY2OAC
MLZSEZWNNZMSIDQNAAIOJJR4K7VSVJICL5SAGHD3ROM7SYDVZABAC
5FECCMAC5QKG3SJ4ATZFE2QF7I3A4YKWKCU4XQEW2P2SWZ2J33YQC
AQ36MO7VNGSGQ5KK7JCQA2WEHUELAFLSU2QBUWROVJFOTPMGFGMQC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
3FBKOX4Y5QYPMBOCSAMHNZXCY7Z75YDQDL4EJZHZIGDXL7RMZ7TAC
JM7UAK777RAVDAVLQLEOBRTGNW2B47S5G55XITJXO243IUNZHVYQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
void drift_player(int move_x, int move_y)
{
int drift_dir = -1;
int okay_dirs = 0;
// don't drift if held in a net
if (you.attribute[ATTR_HELD])
return;
if (you.can_pass_through(new_pos)
&& !is_grid_dangerous(grd(new_pos))
&& (targ_monst == NON_MONSTER ||
mons_is_submerged(&menv[targ_monst])))
{
if (one_chance_in(++okay_dirs))
drift_dir = i;
}
}
if (okay_dirs > 0)
{
const coord_def drift_delta = Compass[drift_dir];
const coord_def new_pos = you.pos() + drift_delta;
if (drift_delta == coord_def(-move_x, -move_y))
mpr("You drift backwards.");
else if (drift_delta == coord_def(move_x, move_y))
mpr("You drift forwards.");
else
mpr("You drift.");
move_player_to_grid(new_pos.x, new_pos.y, true, true, false);
}
}