--- deliantra/server/server/player.C 2010/04/18 05:54:18 1.273 +++ deliantra/server/server/player.C 2010/04/21 06:40:57 1.274 @@ -395,27 +395,13 @@ while (diff > 1 && max > 0) { mapxy lastpos = pos; - pos.move (dir); - - MoveType blocked; - bool blocksview; - - if (pos.normalise ()) - { - mapspace &ms = *pos; - blocksview = ms.flags () & P_BLOCKSVIEW; - blocked = ms.move_block; - } - else - { - blocksview = true; - blocked = MOVE_ALL; - } + pos.move (dir); /* Space is blocked - try changing direction a little */ - if ((blocksview || OB_TYPE_MOVE_BLOCK (mon, blocked)) - && (blocked_link (mon, pos.m, pos.x, pos.y))) + if (!pos.normalise () + || (((pos->flags () & P_BLOCKSVIEW) || OB_TYPE_MOVE_BLOCK (mon, pos->move_block)) + && blocked_link (mon, pos.m, pos.x, pos.y))) { /* recalculate direction from last good location. Possible * we were not traversing ideal location before.