[CopyOver] BugFix

From: Akuma/Chris Baggett/DOOMer (doomer@BAYOU.COM)
Date: 07/18/97


So far, i've only found ONE bug.  If you've noticed that after
initiating a copyover, you can no longer do a
where <charactername>     and be able to find that character.
of course, they DO show up on  where (occasionally)

the fix i did for this, was to do this

*******************************************
file        function              where abouts
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
comm.c      N/A                 with other externs
----------------------------------------------
extern struct char_data *character_list;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
comm.c      copyover_recover()    after enter_player_game()
----------------------------------------------
            write_to_descriptor (desc, "\n\rCopyover recovery complete.\n\r");
            enter_player_game(d);
+      d->character->next = character_list;
+      character_list = d->character;
            d->connected = CON_PLAYING;
            look_at_room(d->character, 0);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

Simple fix, but a NECESSARY one.  otherwise, you cannot
snoop, goto, tell, or anything else that would work if it
were global,   TRUST me.   and also, another thing i did,
was move the  copyover_recover to inside the game_loop() function
BEFORE the while() command and after the time assignment. like this:
***********************************************
comm.c         init_game()      after  boot_db(); call
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  log("Finding player limit.");
  max_players = get_max_players();
if (!fCopyOver)
{
  log("Opening mother connection.");
  mother_desc = init_socket(port);
}

  boot_db();

#ifndef CIRCLE_WINDOWS
  log("Signal trapping.");
  signal_setup();
#endif
-  if (fCopyOver)
-    copyover_recover();

  log("Entering game loop.");

  game_loop(mother_desc);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
comm.c       game_loop()     before the while(!circle_...) { }
-------------------------------------------------
  /* initialize various time values */
  null_time.tv_sec = 0;
  null_time.tv_usec = 0;
  opt_time.tv_usec = OPT_USEC;
  opt_time.tv_sec = 0;
  FD_ZERO(&null_set);

  gettimeofday(&last_time, (struct timezone *) 0);
+   if (fCopyOver)
+       copyover_recover();

  /* The Main Loop.  The Big Cheese.  The Top Dog.  The Head Honcho.  The.. */
  while (!circle_shutdown) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

and that should make it work, if the character_list addition
thing doesn't work by itself.

anyway, other than the bug where he forgot to add the
character to the character_list,   i had no problems with it :-)

pretty kewl if ya ask me, and i'm still modifiying it.

Code On
Akuma the Raging Coder
  +------------------------------------------------------------+
  | "The poets talk about love, but what I talk about is DOOM, |
  |      because in the end, DOOM is all that counts." -       |
  |   Alex Machine/George Stark/Stephen King, The Dark Half    |
  |        "Nothing is IMPOSSIBLE, Just IMPROBABLE"            |
  |   "Easier Said Than Done, But Better Done Than Said..."    |
  +------------------------------------------------------------+


     +------------------------------------------------------------+
     | 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/08/00 PST