Explanation of Extract_Char please

From: Pure Krome (Pure@SPRINT.COM.AU)
Date: 03/13/98


Hi All.
    i'm trying to make it so that instead of being killed and going to
the menu, you die and goto your some room defined in some constant
array. I've removed the menu from the game though. Anyways, looking at
the function extract_char in handler.c, i'm confussed about some stuff.
I think it's confussing me, becuase i don't want to remove the player
from CON_PLAYING state ... anyways .. this is what is confussing..

....
  char_from_room(ch);

  /* pull the char from the list */
  REMOVE_FROM_LIST(ch, character_list, next);

****** What's THAT do and why remove it from what list??!! *** (above)

*** And this ?? ****
  if (ch->desc && ch->desc->original)
    do_return(ch, "", 0, 0);

/* lets just save their info .. save room is set as NOWHERE above. Does
this matter ? */
  if (!IS_NPC(ch)) {
    save_char(ch, save_room);
    Crash_delete_crashfile(ch);
  } else {
    if (GET_MOB_RNUM(ch) > -1)          /* if mobile */
      mob_index[GET_MOB_RNUM(ch)].number--;
    clearMemory(ch);            /* Only NPC's can have memory */
    if (SCRIPT(ch))
      extract_script(SCRIPT(ch));
    free_char(ch);
    freed = 1;
  }

  if (!freed && ch->desc != NULL) {
    STATE(ch->desc) = CON_CLOSE;
    /*SEND_TO_Q(MENU, ch->desc);  - Removed and line above changed - Jus
17/3/97 */
/* My thoughts ..
    STATE(ch->desc) = CON_PLAYING;
    char_to_room(ch,
r_mortal_start_room[GET_HOME(ch)][(int)GET_CLASS(ch)]);
should there be some sorta of restore char to restore the states ???
*/
  } else {  /* if a player gets purged from within the game */
    if (!freed)
      free_char(ch);
  }


sorry for my ignorance.

Jussy


     +------------------------------------------------------------+
     | 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