/* Description: Become snippet for EmberMud and other Rom derivatives. Written by Skuld, Norn of the Future -- Eternal_Outlaw@Hotmail.com Instructions: Snip this right into your code somewhere, and add the correct lines in interp.c and interp.h. If you are using stock Rom, remove all refrences of chaos. Notes: Because extract_char kills ch->desc->charector, we must set it back to the new ch. Bugs: None that I know of, however, I have only tested this on emberMud, not rom... nothing high level, but I think I saw a request for this somewhere. */ void do_become( CHAR_DATA *ch, char *argument) { DESCRIPTOR_DATA *d; CHAR_DATA *oldch; char * name; char * person = strdup(argument); char * password = strdup(argument); bool fOld; extern bool wizlock; extern bool chaos; extern bool newlock; password = one_argument(password,person); if (IS_NPC(ch)) return; d = ch->desc; name = strdup(ch->name); person[0] = UPPER(person[0]); oldch= d->character; fOld = load_char_obj( d, person ); ch = d->character; if ( IS_SET(ch->act, PLR_DENY) ) { sprintf( log_buf, "Denying access to %s@%s.", argument, d->host ); log_string( log_buf ); write_to_buffer( d, "You are denied access.\n\r", 0 ); d->character = oldch; return; } if ( wizlock && !IS_HERO(ch)) { write_to_buffer( d, "The game is wizlocked.\n\r", 0 ); d->character = oldch; return; } else if (chaos && !IS_HERO(ch)) { write_to_buffer( d, "The game is in CHAOS!\n\r", 0 ); d->character = oldch; return; } if ( fOld ) { if ( strcmp( password,ch->pcdata->pwd )) { write_to_buffer( d, "Wrong password.\n\r", 0 ); d->character = oldch; return; } extract_char( oldch, TRUE ); //Because Extract_Char kills ch->desc->char, d->character = ch; //Set d->charector to ch! sprintf( log_buf, "%s@%s has connected.", ch->name, d->host ); log_string( log_buf ); do_help( ch, "motd" ); d->connected = CON_READ_MOTD; sprintf( log_buf, "%s has become %s", name, person ); log_string( log_buf ); free(name); return; } else { write_to_buffer( d,"Nope. Sorry... Charector doesn't Exist.\n\r",0); d->character = oldch; return; } }