/
LIB3/
LIB3/D/ADMIN/
LIB3/D/ADMIN/OBJ/
LIB3/D/ADMIN/ROOM/W/
LIB3/D/HOME/
LIB3/D/HOME/CITY/ARENA/
LIB3/D/HOME/CITY/ITEMS/
LIB3/D/HOME/CITY/POSTOFFI/
LIB3/DOC/
LIB3/GLOBAL/SPECIAL/
LIB3/GLOBAL/VIRTUAL/
LIB3/NET/
LIB3/NET/CONFIG/
LIB3/NET/DAEMON/CHARS/
LIB3/NET/GOPHER/
LIB3/NET/INHERIT/
LIB3/NET/OBJ/
LIB3/NET/SAVE/
LIB3/NET/VIRTUAL/
LIB3/OBJ/B_DAY/
LIB3/OBJ/HANDLERS/TERM_TYP/
LIB3/PLAYERS/B/
LIB3/PLAYERS/N/
LIB3/ROOM/
LIB3/SAVE/
LIB3/SAVE/BOARDS/
LIB3/SAVE/ENVIRON/
LIB3/SAVE/POST/
LIB3/STD/COMMANDS/SHADOWS/
LIB3/STD/CREATOR/
LIB3/STD/DOM/
LIB3/STD/EFFECTS/
LIB3/STD/EFFECTS/HEALING/
LIB3/STD/EFFECTS/OTHER/
LIB3/STD/EFFECTS/POISONS/
LIB3/STD/ENVIRON/
LIB3/STD/GUILDS/
LIB3/STD/LIQUIDS/
LIB3/STD/ROOM/
LIB3/STD/TRIGGER/SHADOW/
LIB3/W/
LIB3/W/BANNOR/
LIB3/W/NEWSTYLE/
/* The hide in shadows shadow.  Cute huh?
 */

object  tp;
int     found;

void    dest_hide_shadow();

void    setup_shadow( object ob )
{
    tp = ob;
    shadow( ob, 1 );
}

object *move_player( string dir, string dest, string mess, object ob )
{
    dest_hide_shadow();
    return( object * ) tp->move_player( dir, dest, mess, ob );
}

int     do_loud_say( string str )
{
    dest_hide_shadow();
    return( int ) tp->do_loud_say( str );
}

int     do_emote( string str )
{
    dest_hide_shadow();
    return( int ) tp->do_emote( str );
}

int     do_echo( string str )
{
    dest_hide_shadow();
    return( int ) tp->do_echo( str );
}

int     do_shout( string str )
{
    dest_hide_shadow();
    return( int ) tp->do_shout( str );
}

/* added by [als] 16-12-92 */
int     attack_ob( object ob )
{
    dest_hide_shadow();
    return( int ) tp->attack_ob( ob );
}

int     attack_by( object ob )
{
    dest_hide_shadow();
    return( int ) tp->attack_by( ob );
}

int     do_say( string str )
{
    dest_hide_shadow();
    return( int ) tp->do_say( str );
}

int     event_player_search()
{
    dest_hide_shadow();
}

int     soul_com( string str )
{
    int     i;

    if( (i = (int)tp->soul_com( str )) == 1 )
	dest_hide_shadow();
    return i;
}

void    dest_hide_shadow()
{
    if( found )
	return;
    tell_room( environment( tp ), "You notice " + tp->query_cap_name() + " nearby.\n",
	       ({ tp }) );
    tell_object( tp, "You have been noticed.\n" );
    call_out( "do_dest_hide_shadow", 0 );
    found = 1;
}

void    do_dest_hide_shadow()
{
    destruct( this_object() );
}

int     query_hide_shadow()
{
    return 1;
}

string  pretty_short()
{
    if( found && tp )
	return( string ) tp->pretty_short();

    return 0;
}

string short()
{
    if( found && tp || (query_verb() && query_verb() == "who") )
	return( string ) tp->short();

    return 0;
}

string  pretty_plural()
{
    if( found && tp )
	return( string ) tp->pretty_plural();

    return 0;
}

string  query_plural()
{
    if( found && tp )
	return( string ) tp->query_plural();

    return 0;
}