Patch #3

From: George (greerga@CIRCLEMUD.ORG)
Date: 06/06/98


Original report:
--- 8< --- 8< ---
From: Alex <3raf7@qlink.queensu.ca>

Dunno if this carries through to pl8, but even if you are in the pitch
black (ie.. in the dark w/o a light), and you type 'where', you can see
the room's title.
--- 8< --- 8< ---

Easily fixed by not allowing a 'where' on yourself.

Also took the opportunity to make the code look better.

diff -upr stk/act.informative.c 150/act.informative.c
--- stk/act.informative.c       Sat Jun  6 16:00:59 1998
+++ 150/act.informative.c       Sat Jun  6 18:08:54 1998
@@ -1260,23 +1260,30 @@ void perform_mortal_where(struct char_da

   if (!*arg) {
     send_to_char("Players in your Zone\r\n--------------------\r\n", ch);
-    for (d = descriptor_list; d; d = d->next)
-      if (STATE(d) == CON_PLAYING) {
-       i = (d->original ? d->original : d->character);
-       if (i && CAN_SEE(ch, i) && (i->in_room != NOWHERE) &&
-           (world[ch->in_room].zone == world[i->in_room].zone)) {
-         sprintf(buf, "%-20s - %s\r\n", GET_NAME(i), world[i->in_room].name);
-         send_to_char(buf, ch);
-       }
-      }
+    for (d = descriptor_list; d; d = d->next) {
+      if (STATE(d) != CON_PLAYING || d->character == ch)
+       continue;
+      if ((i = (d->original ? d->original : d->character)) == NULL)
+       continue;
+      if (i->in_room == NOWHERE || !CAN_SEE(ch, i))
+       continue;
+      if (world[ch->in_room].zone != world[i->in_room].zone)
+       continue;
+      sprintf(buf, "%-20s - %s\r\n", GET_NAME(i), world[i->in_room].name);
+      send_to_char(buf, ch);
+    }
   } else {                     /* print only FIRST char, not all. */
-    for (i = character_list; i; i = i->next)
-      if (world[i->in_room].zone == world[ch->in_room].zone && CAN_SEE(ch, i) &&
-         (i->in_room != NOWHERE) && isname(arg, i->player.name)) {
-       sprintf(buf, "%-25s - %s\r\n", GET_NAME(i), world[i->in_room].name);
-       send_to_char(buf, ch);
-       return;
-      }
+    for (i = character_list; i; i = i->next) {
+      if (i->in_room == NOWHERE || i == ch)
+       continue;
+      if (!CAN_SEE(ch, i) || world[i->in_room].zone != world[ch->in_room].zone)
+       continue;
+      if (!isname(arg, i->player.name))
+       continue;
+      sprintf(buf, "%-25s - %s\r\n", GET_NAME(i), world[i->in_room].name);
+      send_to_char(buf, ch);
+      return;
+    }
     send_to_char("No-one around by that name.\r\n", ch);
   }
 }

--
George Greer, greerga@circlemud.org | Genius may have its limitations, but
http://patches.van.ml.org/          | stupidity is not thus handicapped.
http://www.van.ml.org/CircleMUD/    |                  -- Elbert Hubbard


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/15/00 PST