--- deliantra/server/socket/item.C 2007/06/05 13:05:03 1.47
+++ deliantra/server/socket/item.C 2007/07/01 05:00:20 1.50
@@ -1,23 +1,22 @@
/*
- * This file is part of Crossfire TRT, the Multiplayer Online Role Playing Game.
+ * This file is part of Crossfire TRT, the Roguelike Realtime MORPG.
*
* Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Crossfire TRT team
* Copyright (©) 2002,2007 Mark Wedel & Crossfire Development Team
* Copyright (©) 1992,2007 Frank Tore Johansen
*
- * Crossfire TRT is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
+ * Crossfire TRT is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
*
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * for more details.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License along
- * with Crossfire TRT; if not, write to the Free Software Foundation, Inc. 51
- * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
*
* The authors can be reached via e-mail to
*/
@@ -847,6 +846,9 @@
sint16 x = pl->observe->x + dx;
sint16 y = pl->observe->y + dy;
+ if (!m)
+ return;
+
if (!xy_normalise (m, x, y))
{
new_draw_info (NDI_UNIQUE, 0, ob, "You see nothing there.");
@@ -896,19 +898,23 @@
void
LookAt (char *buf, int len, player *pl)
{
- int dx, dy;
char *cp;
- dx = atoi (buf);
+ int dx = atoi (buf);
if (!(cp = strchr (buf, ' ')))
return;
- dy = atoi (cp);
- if (fabs (dx) > pl->ns->mapx / 2 || fabs (dy) > pl->ns->mapy / 2)
- return;
+ int dy = atoi (cp);
- if (pl->blocked_los[dx + pl->ns->mapx / 2][dy + pl->ns->mapy / 2])
- return;
+ if (player *opl = pl->observe->contr)
+ if (client *ns = opl->ns)
+ {
+ if (fabs (dx) > ns->mapx / 2 || fabs (dy) > ns->mapy / 2)
+ return;
+
+ if (opl->blocked_los[dx + ns->mapx / 2][dy + ns->mapy / 2])
+ return;
+ }
look_at (pl, dx, dy);
}