/
Ghost/
Ghost/gods/
Ghost/log/
Ghost/player/
/***************************************************************************
 *        Port of ROM 2.4b6 to Windows by TAKA                             *
 *                                                                         *
 *  I call this "NEW ROM" Ghost since it has changed extensively.          *
 *  This version runs as a native console application                      *
 *  windows NT 4 service patch 3, Windows 95 software version release 2    *
 *  and windows 98.                                                        *
 *                                                                         *
 *  Ghost to my knowledge is the first ROM port to windows to be 100%      *
 *  stable.                                                                *
 *                                                                         *
 *  I compiled it using MS Vissual C++ 5.0                                 *
 *  THE FOLLOWING MODULES WERE MODIFIED TO ALLOW STABLE WINDOWS OPERATION  *
 *  - merc.h                                                               *
 *  - comm.c                                                               *
 *  - db.c                                                                 *
 *  BE SURE TO INCLUDE IN THE LINK LIST                                    *
 *  - wsock32.lib                                                          *
 *                                                                         *
 *  Other source files are straight from the ROM24b6 distribution.         *
 *                                                                         *
 *  ALL I ASK FOR MY WORK:                                                 *
 *  1) Is that you do not remove or modify this comment block.             *
 *  2) You must state on the entry screen that this is GHOST a ROM code    *
 *     base designed and ported to windows by TAKA    .                    *
 *  3) The latest version number from you source listing must be must be   *
 *     in the help file as well as my name TAKA                            *
 *     and my email a_ghost_dancer@excite.com                              *
 *     < < Simplist way is to leave my help entry supplied > >             *
 *  4) You must abid by all other ROM and MERC licences                    *
 *  5) Finally any improvements or snippets you make please forward them   *
 *     to me so we can imcorperate them into the latest version. I will    *
 *     post all snippets with the authors named and credited.              *
 *                                                                         *
 *  Last thank you to all the ROM amd MERC folks for this wounderful code  *
 *  base know as ROM.                                                      *
 *                                                                         *
 *          TAKA                                                           *
 *          a_ghost_dancer@excite.com                                      *
 *                                                                         *
 ***************************************************************************

 ***************************************************************************
 *  Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer,        *
 *  Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe.   *
 *                                                                         *
 *  Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael          *
 *  Chastain, Michael Quan, and Mitchell Tse.                              *
 *                                                                         *
 *  In order to use any part of this Merc Diku Mud, you must comply with   *
 *  both the original Diku license in 'license.doc' as well the Merc       *
 *  license in 'license.txt'.  In particular, you may not remove either of *
 *  these copyright notices.                                               *
 *                                                                         *
 *  Much time and thought has gone into this software and you are          *
 *  benefitting.  We hope that you share your changes too.  What goes      *
 *  around, comes around.                                                  *
 **************************************************************************/

/***************************************************************************
*       ROM 2.4 is copyright 1993-1996 Russ Taylor                         *
*       ROM has been brought to you by the ROM consortium                  *
*           Russ Taylor (rtaylor@pacinfo.com)                              *
*           Gabrielle Taylor (gtaylor@pacinfo.com)                         *
*           Brian Moore (rom@rom.efn.org)                                  *
*       By using this code, you have agreed to follow the terms of the     *
*       ROM license, in the file Rom24/doc/rom.license                     *
***************************************************************************/

#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#include <sys/time.h>
#endif
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include "merc.h"

extern void do_save( CHAR_DATA *ch, char *argument );

void do_remor( CHAR_DATA *ch, char *argument )
{
    send_to_char( "If you want to REMORT, you must spell it out.\n\r", ch );
    return;
}

void do_remort( CHAR_DATA *ch, char *argument )
{
    DESCRIPTOR_DATA *d;
    char strsave[MAX_INPUT_LENGTH], player_name[MAX_INPUT_LENGTH];
    char player_pwd[MAX_STRING_LENGTH], buf[MAX_STRING_LENGTH];
    int player_incarnations = 0;

    if ( IS_NPC(ch) || ( d = ch->desc ) == NULL )
		return;

    if (( ch->level < LEVEL_HERO && !IS_SET( ch->act, PLR_REMORT ) )
		|| (IS_SET( ch->act, PLR_REMORT ) && (ch->level <= 10) ))
    {
		sprintf( buf,
		    "You must be level %d or already have remorted to remort.\n\rAnd you can not remort after level 10.\n\r",
		    LEVEL_HERO );
		send_to_char( buf, ch );
		return;
    }

    if ( ch->pcdata->confirm_remort )
    {
		if ( argument[0] != '\0' )
		{
			send_to_char( "Remort status removed.\n\r", ch );
		    ch->pcdata->confirm_remort = FALSE;
		    return;
		}
		else
		{
			/*
			 * Get ready to delete the pfile, send a nice informational message.
			 * Save the pfile as .rmt first.
			 */
			do_save( ch, "");

			sprintf( strsave, "%s%s", PLAYER_DIR, capitalize( ch->name ) );
			stop_fighting( ch, TRUE );
			send_to_char( "You have chosen to remort.  You will now be dropped in at the race\n\r", ch );
			send_to_char( "selection section of character creation, and will be allowed to choose from\n\r", ch );
			send_to_char( "a wider selection of races and classes.\n\r\n\r", ch );
			send_to_char( "In the unlikely event that you are disconnected or the MUD\n\r", ch );
			send_to_char( "crashes while you are creating your character, create a new character\n\r", ch );
			send_to_char( "as normal and write a note to 'immortal'.\n\r", ch );
			send_to_char( "\n\r[Hit Enter to Continue]\n\r", ch );
			wiznet( "$N has remorted.", ch, NULL, 0, 0, 0 );

			/*
			 * I quote:
			 * "After extract_char the ch is no longer valid!"
			 */
			sprintf( player_name, "%s", capitalize( ch->name ) );
			sprintf( player_pwd, "%s", ch->pcdata->pwd );
			if (ch->level == LEVEL_HERO)
				player_incarnations = ++ch->pcdata->incarnations;
			extract_char( ch, TRUE );

			/*
			 * Delete the pfile, but don't boot the character.
			 * Instead, do a load_char_obj to get a new ch,
			 * saving the password, and the incarnations.  Then,
			 * set the PLR_REMORT bit and drop the player in at
			 * CON_BEGIN_REMORT.
			 */
			unlink( strsave );
			load_char_obj( d, player_name );
			d->character->pcdata->pwd = str_dup( player_pwd );
			d->character->pcdata->incarnations = player_incarnations;
			if(( !IS_SET( ch->act, PLR_REMORT ) ) && (ch->level == LEVEL_HERO ))
				SET_BIT( ch->act, PLR_REMORT );
			else
				SET_BIT( ch->act, PLR_REMORT2);
			d->connected = CON_BEGIN_REMORT;

			return;
		}
    }

    if ( argument[0] != '\0' )
    {
		send_to_char( "Just type remort.  No argument.\n\r", ch );
		return;
    }

    send_to_char("Type remort again to confirm this command.\n\r", ch );
    send_to_char("WARNING: This command is irreversible.\n\r", ch );
    send_to_char("Typing remort with an argument will undo remort status.\n\r", ch );
    ch->pcdata->confirm_remort = TRUE;
    wiznet( "$N is contemplating remorting.",ch,NULL,0,0,get_trust(ch));
}