ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/socket/request.C
(Generate patch)

Comparing deliantra/server/socket/request.C (file contents):
Revision 1.119 by root, Fri Aug 24 00:26:10 2007 UTC vs.
Revision 1.122 by root, Sun Aug 26 04:21:30 2007 UTC

263{ 263{
264 char *token = buf; 264 char *token = buf;
265 buf += strlen (buf) + 9; 265 buf += strlen (buf) + 9;
266 266
267 // initial map and its origin 267 // initial map and its origin
268 maptile *map = pl->ob->map; 268 maptile *map = pl->observe->map;
269 int mapx = pl->ns->mapx / 2 - pl->ob->x; 269 int mapx = pl->ns->mapx / 2 - pl->observe->x;
270 int mapy = pl->ns->mapy / 2 - pl->ob->y; 270 int mapy = pl->ns->mapy / 2 - pl->observe->y;
271 int max_distance = 8; // limit maximum path length to something generous 271 int max_distance = 8; // limit maximum path length to something generous
272 272
273 while (*buf && map && max_distance) 273 while (*buf && map && max_distance)
274 { 274 {
275 int dir = *buf++ - '1'; 275 int dir = *buf++ - '1';
276 276
277 if (dir >= 0 && dir <= 3) 277 if (dir >= 0 && dir <= 3)
278 { 278 {
279 if (!map->tile_path [dir]) 279 if (!map->tile_path [dir])
280 map = 0; 280 map = 0;
281 else if (map->tile_available (dir)) 281 else if (map->tile_available (dir, false))
282 { 282 {
283 maptile *neigh = map->tile_map [dir]; 283 maptile *neigh = map->tile_map [dir];
284 284
285 switch (dir) 285 switch (dir)
286 { 286 {
300 max_distance = 0; 300 max_distance = 0;
301 } 301 }
302 302
303 if (!max_distance) 303 if (!max_distance)
304 send_packet_printf ("mapinfo %s error", token); 304 send_packet_printf ("mapinfo %s error", token);
305 else if (!map || !map->path[0]) 305 else if (!map || !map->path)
306 send_packet_printf ("mapinfo %s nomap", token); 306 send_packet_printf ("mapinfo %s nomap", token);
307 else 307 else
308 { 308 {
309 int flags = 0; 309 int flags = 0;
310 310
1129 1129
1130 if (!m) 1130 if (!m)
1131 { 1131 {
1132 nx = x; ny = y; m = plmap; 1132 nx = x; ny = y; m = plmap;
1133 1133
1134 if (!xy_normalise (m, nx, ny)) 1134 if (xy_normalise (m, nx, ny))
1135 m->touch ();
1136 else
1135 m = 0; 1137 m = 0;
1136 } 1138 }
1137 1139
1138 int emask, mask; 1140 int emask, mask;
1139 emask = mask = (ax & 0x3f) << 10 | (ay & 0x3f) << 4; 1141 emask = mask = (ax & 0x3f) << 10 | (ay & 0x3f) << 4;
1156 } 1158 }
1157 1159
1158 continue; 1160 continue;
1159 } 1161 }
1160 1162
1161 m->touch ();
1162
1163 int d = pl->blocked_los[ax][ay]; 1163 int d = pl->blocked_los[ax][ay];
1164 1164
1165 if (d > 3) 1165 if (d > 3)
1166 { 1166 {
1167 1167

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines