/
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/
inherit "/obj/monster";
#include "/d/home/city/townhall/path.h"		/*  Just path.h normally  */

void    setup()
{
    set_name( "official" );
    set_short( "An official" );
    set_long( "This is an official of " + CITYNAME + ". He wears a smart suit " +
	      "and appears to be in charge of emoteing.  He looks like he could do " +
	      "with a stiff drink.\n" );
    set_class( "fighter" );
    set_race( "human" );
    set_level( 10 );
    load_chat( 100, ({ 
			  1, ({ "'Ooooh, emote? Well there's a lot of paperwork involved...",
				"'Well maybe if you made it worth my while I could cut a few corners...",
				":winks at you.\n" }) }) );
}

void    init()
{
    ::init();
    add_action( "emote_quest", "give", 1 );
}

int     emote_quest( string arg )
{
    string  givenobj, givento, a;

    if( this_player()->query_property( "emote" ) )
    {
	return( 0 );
    }
    sscanf( arg, "%s %s %s", givenobj, a, givento );
    if( !givenobj || !givento )
    {
	return( 0 );
    }
    givenobj = this_player()->expand_nickname( givenobj );
    givento = this_player()->expand_nickname( givento );
    if( present( givento, environment( this_player() ) ) != this_object() )
    {
	return( 0 );
    }
    if( !present( givenobj, this_player() )->query_property( "emote bottle" ) )
    {
	return( 0 );
    }
    if( !present( givenobj, this_player() ) )
    {
	return( 0 );
    }
    present( givenobj, this_player() )->dest_me();
    say( this_player()->query_cap_name() + " gives something to the official.\n" );
    write( "You give the whiskey bottle to the official.\n" );
    say( "The official whispers something to " +
	 this_player()->query_cap_name() + ".\n" );
    write( "The official looks pleased and whispers to you: " +
	   "Excellent!  My favourite brand!  Here tell you what, I'll give " +
	   "you the emote ability, just don't tell anyone I did this for you.\n" );
    this_player()->add_property( "emote", 1 );
    return( 1 );
}