BUGfixes for stock circle bp11

From: lightn (lightn@ksu.edu)
Date: 07/20/96


	Here are 2 bugfixes for stock circle patch level 11...
The first bug allowed immortals to find invisible immortals by doing a where
obj then stating any obj that was carried or worn by someone, to fix this,
change the lines in act.wizard.c do_stat_obj():

  strcat(buf, ", Carried by: ");
  strcat(buf, j->carried_by ? GET_NAME(j->carried_by) : "Nobody");
  strcat(buf, ", Worn by: ");
  strcat(buf, j->worn_by ? GET_NAME(j->worn_by) : "Nobody");

to:

  strcat(buf, ", Carried by: ");
  strcat(buf, j->carried_by ? (!CAN_SEE(ch, j->carried_by) ? "Someone" :
                               GET_NAME(j->carried_by)) : "Nobody");
  strcat(buf, ", Worn by: ");
  strcat(buf, j->worn_by ? (!CAN_SEE(ch, j->worn_by) ? "Someone" :
                            GET_NAME(j->worn_by)) : "Nobody");


The next bug caused the time to be off for the amount of time a person has
played in the stat command; so change the lines in act.wizard.c do_stat_char():

sprintf(buf, "Created: [%s], Last Logon: [%s], Played [%dh %dm], Age [%d]\r\            buf1, buf2, k->player.time.played / 3600,
            ((k->player.time.played / 3600) % 60), age(k).year);
    send_to_char(buf, ch);


to:

sprintf(buf, "Created: [%s], Last Logon: [%s], Played [%dh %dm], Age [%d]\r\            buf1, buf2, k->player.time.played / 3600,
            ((k->player.time.played / 60) % 60), age(k).year);
    send_to_char(buf, ch);


The last bug happened when an imp was switched into a mortal character, and
the mortal regained his link, causing the imp to be disconnected completely
to fix this change the lines in interpreter.c perform_dupe_check():

    } else if (k->character && (GET_IDNUM(k->character) == id)) {
      if (!target && STATE(k) == CON_PLAYING) {
        SEND_TO_Q("\r\nThis body has been usurped!\r\n", k);
        target = k->character;
        mode = USURP;
      }
      . . .

to:

    } else if (k->original && (GET_IDNUM(k->character) == id)) {
      ACMD(do_return);
      do_return(k->character, "", 0, 0);
    } else if (k->character && (GET_IDNUM(k->character) == id)) {
      if (!target && STATE(k) == CON_PLAYING) {
        SEND_TO_Q("\r\nThis body has been usurped!\r\n", k);
        target = k->character;
        mode = USURP;
      }
      . . .

I have tested all of these fixes and they should work right, mail me if
something doesn't.



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