Visible WAIT_STATE code by Ranka the Implementor of Arion 
[telnet://irc.nohik.ee 4242] (rainer_roomet@hotmail.com).



- credits -
You may use this code when you give me about $1000, my
name have to marked in each help file and also I need
full access into your MUD! It was joke :)

You may use this code however you wish. Build more into it,
give it to friend or to your dog, or I don't know. I don't
need any credits or help files. Only thing what I want -
when you found bug, typo or something like that. Just
mail to me at: rainer_roomet@hotmail.com or come to
telnet://irc.nohik.ee on port 4242 and contact with
Ranka.

- notes -
This code hasn't well tested. And it may include some bugs, 
if you found any bug, please send mail to me at:
rainer_roomet@hotmail.com or come to telnet://irc.nohik.ee 4242
and contact with Ranka. 

P.S. BEFORE INSTALLING ALWAYS MAKE A BACKUP!!!!!!!!!!!!!!!!!!!!	

- explanation -
using this code, you can see your delays as 'points',
for example:

> cast 'armor'
> You begin to utter some strange incantations...
>You are already armored.
>...... <----- this is delay
>The High Priest says '.. about 'the Elendil Sword' then talk to me.'
>..... <--- this is delay

And always you can turn these 'points' off and to get usual ROM delay
mood.


- installing -

Open the file:

-- merc.h --
------------

Find following lines:
#define PLR_AUTOSAC             (F)
#define PLR_AUTOGOLD		(G)
#define PLR_AUTOSPLIT		(H)

And add following:

#define PLR_WAIT			(I)

if it is done. Savd and close the MERC.H
========================================


Now open the file act_info.c!
----------------
-- act_info.c --
----------------

At the end of the file add following:

/*
 * command for showing delays 
 */
 
void do_delay( CHAR_DATA *ch, char *argument)
{
    char arg[MAX_INPUT_LENGTH];

    one_argument( argument, arg );

    if (IS_NPC(ch))
        return;
  
    if (arg[0] == '\0')
    {
	if (IS_SET(ch->act, PLR_WAIT))
	{
	   send_to_char("Delay display is now OFF.\n\r", ch);
	   REMOVE_BIT(ch->act, PLR_WAIT);
        }
	else
	{
	   send_to_char("Delay display is now ON.\n\r", ch);
	   SET_BIT(ch->act, PLR_WAIT);
        }
    }
	

    if ( !str_cmp( arg, "on" ))
    {
	send_to_char("Delay display is now ON.\n\r", ch);
	SET_BIT(ch->act, PLR_WAIT);
	return;
    }
    else if ( !str_cmp( arg, "off" ))
    {
	send_to_char("Delay display is now OFF.\n\r", ch);
	REMOVE_BIT(ch->act, PLR_WAIT);
	return;
    }
    else if ( !str_cmp( arg, "status" ))
    {
	send_to_char("Your delay status is currently", ch);
	if (IS_SET(ch->act, PLR_WAIT))
	    send_to_char(" ON.\n\r", ch);
	else
	    send_to_char(" OFF.\n\r", ch);
	   
	return;
    }
}


Close the act_info.c and open comm.c

===========================

Open file:

------------
-- comm.c --
------------

in function, "void game_loop_unix( int control )", 
there find following lines:

            if (d->character != NULL && d->character->wait > 0)
            {
                --d->character->wait;
                continue;
            }

REPLACE previous lines with following:

	    if ( d->character != NULL && d->character->wait > 0 )
	    {
		    if (d->character->position != POS_FIGHTING 
		    && IS_SET(d->character->act, PLR_WAIT))
		    {
         
   	            if (d->character->wait == 1)
		        send_to_char("\n\r\n\r", d->character);

	  	    	--d->character->wait;
		        send_to_char(".", d->character);
		        continue;
		    }
		    else
		    {
	  	    	--d->character->wait;
		        continue;
		    }


	    }


Now find function, "bool process_output( DESCRIPTOR_DATA *d, bool fPrompt )".

There find following lines:

if (!IS_SET (ch->comm, COMM_COMPACT))
       write_to_buffer (d, "\n\r", 2);

REPLACE these lines with following:

if (!IS_SET(ch->comm, COMM_COMPACT) )
{   
    if (ch->wait <= 0 || ch->fighting != NULL || !IS_SET(ch->act, PLR_WAIT))
    write_to_buffer( d, "\n\r", 2 );
}


Now find function, "void bust_a_prompt( CHAR_DATA *ch )" 
and find following lines:

    point = buf;
    str = ch->prompt;

After these lines add following:

    if (ch->wait > 0 && ch->fighting == NULL && IS_SET(ch->act, PLR_WAIT))
        return;

Now find function, 
"void write_to_buffer( DESCRIPTOR_DATA *d, const char *txt, int length )",
there find:

    /*
     * Initial \n\r if needed.
     */
    if (d->outtop == 0 && !d->fcommand)
    {
        d->outbuf[0] = '\n';
        d->outbuf[1] = '\r';
        d->outtop = 2;
    }


And REPLACE it with:

    /*
     * Initial \n\r if needed.
     */
    if ( d->outtop == 0 && !d->fcommand )
    {
	if (d->character != NULL 
	&&  (d->character->wait <= 0 || d->character->fighting != NULL))
	{	
	  d->outbuf[0]	= '\n';
	  d->outbuf[1]	= '\r';
	  d->outtop	= 2;
	}
    }


================================================

-----------------------
-- comm.c or nanny.c --
-----------------------

/* If you have file 'nanny.c' open it, if not then open comm.c */

Now find:
                sprintf (buf, "the %s", title_table[ch->class][ch->level]
                         [ch->sex == SEX_FEMALE ? 1 : 0]);
                set_title (ch, buf); 

And add before or after it following lines:

SET_BIT(ch->act, PLR_WAIT); 

/* it sets WAIT displaying ON, when new character enters the game,
You may turn it off, 'SET_BIT(ch->act, PLR_WAIT)' or remove it. */

====================================================================

--------------
-- interp.c --
--------------

Add new command, 'do_delay' at the end of the command list.

{ "delay",	do_delay,	POS_DEAD,	 0,  LOG_NORMAL, 1 },
=====================================================================

--------------
-- interp.h --
--------------

Add new command, 'do_delay' somewhere in interp.h,

DECLARE_DO_FUN( do_delay );



/***********************************************************************/
/*  Now 'make clean' and recompile. It should be work, but if You have */
/*  some problems, found typos, bugs, ideas or if you hate me, then    */
/*  feel free to mail me at: rainer_roomet@hotmail.com 		       */
/*                                                                     */
/* Thanks for using my Snippet.					       */
/* Rainer Roomet.                                                      */
/* The Lost Lands of Arion                                             */
/* telnet://irc.nohik.ee 4242                                          */
/* rainer_roomet@hotmail.com                                           */
/*                                                                     */
/* 30.05.2004.                                                         */
/*************************************************************************