--- deliantra/server/socket/request.C 2007/08/24 00:26:10 1.119 +++ deliantra/server/socket/request.C 2007/08/26 04:21:30 1.122 @@ -265,9 +265,9 @@ buf += strlen (buf) + 9; // initial map and its origin - maptile *map = pl->ob->map; - int mapx = pl->ns->mapx / 2 - pl->ob->x; - int mapy = pl->ns->mapy / 2 - pl->ob->y; + maptile *map = pl->observe->map; + int mapx = pl->ns->mapx / 2 - pl->observe->x; + int mapy = pl->ns->mapy / 2 - pl->observe->y; int max_distance = 8; // limit maximum path length to something generous while (*buf && map && max_distance) @@ -278,7 +278,7 @@ { if (!map->tile_path [dir]) map = 0; - else if (map->tile_available (dir)) + else if (map->tile_available (dir, false)) { maptile *neigh = map->tile_map [dir]; @@ -302,7 +302,7 @@ if (!max_distance) send_packet_printf ("mapinfo %s error", token); - else if (!map || !map->path[0]) + else if (!map || !map->path) send_packet_printf ("mapinfo %s nomap", token); else { @@ -1131,7 +1131,9 @@ { nx = x; ny = y; m = plmap; - if (!xy_normalise (m, nx, ny)) + if (xy_normalise (m, nx, ny)) + m->touch (); + else m = 0; } @@ -1158,8 +1160,6 @@ continue; } - m->touch (); - int d = pl->blocked_los[ax][ay]; if (d > 3)