#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "merc.h"
bool char_exists args(( bool backup, char *argument ));
bool check_parse_name args( ( char *name ) );
void do_pload( CHAR_DATA *ch, char *argument )
{
char buf[MAX_STRING_LENGTH],name[MAX_STRING_LENGTH/4];
DESCRIPTOR_DATA *d;
ROOM_INDEX_DATA *in_room;
bool fOld;
if ( IS_NPC(ch) || ch->desc == NULL || ch->in_room == NULL ) return;
if ( argument[0] == '\0' )
{
send_to_char( "Syntax: pload <name>.\n\r", ch );
return;
}
if (!check_parse_name( argument ))
{
send_to_char( "Thats an illegal name.\n\r", ch );
return;
}
if(get_char_world(ch,argument) != NULL)
{
send_to_char("You cannot load a person who is online.\n\r",ch);
return;
}
if ( !char_exists(TRUE,argument) )
{
send_to_char( "That player doesn't exist.\n\r", ch );
return;
}
argument[0] = UPPER(argument[0]);
save_char_obj(ch);
sprintf(buf,"You transform into %s.\n\r",argument);
send_to_char(buf,ch);
sprintf(buf,"$n transforms into %s.",argument);
act(buf,ch,NULL,NULL,TO_ROOM);
sprintf(name,"%s",ch->name);
// send_to_char(name,ch);
d = ch->desc; /* Assign Current desc to D */
in_room = ch->in_room; /* in_room where you are originaly */
extract_char(ch, TRUE); /* Remove your character */
d->character = NULL; /* Make your character point to nothing */
fOld = load_char_obj( d, argument ); /* Load the new character into D */
ch = d->character; /* Character = New Character */
ch->next = char_list; /* Add ch to stack */
char_list = ch; /* Mark person as last in stack */
char_to_room(ch,in_room); /* Put person in room where old char was */
ch->pload = str_dup(name);
sprintf(buf,"Your Pload is %s.\n\r",ch->pload);
send_to_char(buf,ch);
return;
}
void do_preturn( CHAR_DATA *ch, char *argument )
{
char arg[MAX_INPUT_LENGTH];
char buf[MAX_STRING_LENGTH];
DESCRIPTOR_DATA *d;
bool fOld;
if(!(ch != NULL && ch->desc != NULL))
{
bug("Preturn, null char or desc",0);
return;
}
if (IS_NPC(ch)) {send_to_char("Huh?\n\r",ch);return;}
if (ch->pload == NULL) {send_to_char("Huh?\n\r",ch);return;}
sprintf(arg,ch->pload);
if (strlen(arg) < 3 || strlen(arg) > 10)
{send_to_char("Huh?(STRLEN)\n\r",ch);return;}
// if (!str_cmp(ch->pload,arg)) {send_to_char("Huh?\n\r",ch);return;}
sprintf(buf,"You transform back into %s.\n\r",capitalize(ch->pload));
send_to_char(buf,ch);
sprintf(buf,"$n transforms back into %s.",capitalize(ch->pload));
act(buf,ch,NULL,NULL,TO_ROOM);
d = ch->desc;
if (ch != NULL && ch->desc != NULL)
extract_char(ch,TRUE);
else if (ch != NULL)
extract_char(ch,TRUE);
if (ch->desc)
ch->desc->character = NULL;
/*
ch->next = char_list;
char_list = ch;
*/
fOld = load_char_obj(d, capitalize(arg));
ch = d->character;
ch->next = char_list;
char_list = ch;
if (ch->in_room != NULL)
char_to_room(ch,ch->in_room);
else
char_to_room(ch,get_room_index(3001));
free_string(ch->pload);
ch->pload = str_dup("");
return;
}
bool char_exists( bool backup, char *argument )
{
FILE *fp;
char buf [MAX_STRING_LENGTH];
bool found = FALSE;
sprintf( buf, "%s%s%s%s", PLAYER_DIR, initial( argument ),
"/", capitalize( argument ) );
if ( ( fp = fopen( buf, "r" ) ) != NULL )
{
found = TRUE;
fclose( fp );
}
return found;
}