--- deliantra/server/socket/request.C 2007/06/09 20:07:50 1.107 +++ deliantra/server/socket/request.C 2007/06/09 20:51:45 1.108 @@ -1032,12 +1032,10 @@ return; int x, y, ax, ay, startlen, max_x, max_y, oldlen; - sint16 nx, ny; int estartlen, eoldlen; uint8 eentrysize; uint16 ewhatstart, ewhatflag; uint8 extendedinfos; - maptile *m; check_map_change (pl); prefetch_surrounding_maps (pl->ob); @@ -1113,9 +1111,25 @@ for (y = ob->y - socket.mapy / 2; y < max_y; y++, ay++) { + sint16 nx, ny; + maptile *m = 0; + ax = 0; for (x = ob->x - socket.mapx / 2; x < max_x; x++, ax++) { + // check to see if we can simply go one right quickly + ++nx; + if (m && nx >= m->width) + m = 0; + + if (!m) + { + nx = x; ny = y; m = plmap; + + if (!xy_normalise (m, nx, ny)) + m = 0; + } + int emask, mask; emask = mask = (ax & 0x3f) << 10 | (ay & 0x3f) << 4; @@ -1124,10 +1138,6 @@ /* If the coordinates are not valid, or it is too dark to see, * we tell the client as such */ - nx = x; - ny = y; - m = get_map_from_coord (plmap, &nx, &ny); - if (!m) { /* space is out of map. Update space and clear values