home · contact · privacy
Server: Fix doubling of items listed via THINGS_HERE.
[plomrogue] / src / server / run.c
index 83fc1a0f737963d5b17b7ceaa0e9d13507941af4..6f24f461d0c6d96ccf404574b8a8cc89d697dec7 100644 (file)
@@ -221,14 +221,30 @@ static uint8_t parse_command_meta(char * tok0)
             }
             send_to_outfile("THINGS_HERE START\n", 1);
             struct Thing * player = get_player();
-            struct ThingInMemory * t;
-            for (t = player->t_mem; t; t = t->next)
+            if ('v' == player->fov_map[atoi(tok1)*world.map.length+atoi(tok2)])
             {
-                if (t->pos.y == atoi(tok1) && t->pos.x == atoi(tok2))
+                struct Thing * t;
+                for (t = world.things; t; t = t->next)
                 {
-                    struct ThingType * tt = get_thing_type(t->type);
-                    send_to_outfile(tt->name, 0);
-                    send_to_outfile("\n", 1);
+                    if (t->pos.y == atoi(tok1) && t->pos.x == atoi(tok2))
+                    {
+                        struct ThingType * tt = get_thing_type(t->type);
+                        send_to_outfile(tt->name, 0);
+                        send_to_outfile("\n", 1);
+                    }
+                }
+            }
+            else
+            {
+                struct ThingInMemory * t_mem;
+                for (t_mem = player->t_mem; t_mem; t_mem = t_mem->next)
+                {
+                    if (t_mem->pos.y == atoi(tok1) && t_mem->pos.x == atoi(tok2))
+                    {
+                        struct ThingType * tt = get_thing_type(t_mem->type);
+                        send_to_outfile(tt->name, 0);
+                        send_to_outfile("\n", 1);
+                    }
                 }
             }
             send_to_outfile("THINGS_HERE END\n", 1);