skylib_fluffos_v3/
skylib_fluffos_v3/bin/
skylib_fluffos_v3/bin/db/
skylib_fluffos_v3/fluffos-2.9-ds2.04/
skylib_fluffos_v3/fluffos-2.9-ds2.04/ChangeLog.old/
skylib_fluffos_v3/fluffos-2.9-ds2.04/Win32/
skylib_fluffos_v3/fluffos-2.9-ds2.04/compat/
skylib_fluffos_v3/fluffos-2.9-ds2.04/compat/simuls/
skylib_fluffos_v3/fluffos-2.9-ds2.04/include/
skylib_fluffos_v3/fluffos-2.9-ds2.04/testsuite/
skylib_fluffos_v3/fluffos-2.9-ds2.04/testsuite/clone/
skylib_fluffos_v3/fluffos-2.9-ds2.04/testsuite/command/
skylib_fluffos_v3/fluffos-2.9-ds2.04/testsuite/data/
skylib_fluffos_v3/fluffos-2.9-ds2.04/testsuite/etc/
skylib_fluffos_v3/fluffos-2.9-ds2.04/testsuite/include/
skylib_fluffos_v3/fluffos-2.9-ds2.04/testsuite/inherit/
skylib_fluffos_v3/fluffos-2.9-ds2.04/testsuite/inherit/master/
skylib_fluffos_v3/fluffos-2.9-ds2.04/testsuite/log/
skylib_fluffos_v3/fluffos-2.9-ds2.04/testsuite/single/
skylib_fluffos_v3/fluffos-2.9-ds2.04/testsuite/single/tests/compiler/
skylib_fluffos_v3/fluffos-2.9-ds2.04/testsuite/single/tests/efuns/
skylib_fluffos_v3/fluffos-2.9-ds2.04/testsuite/single/tests/operators/
skylib_fluffos_v3/fluffos-2.9-ds2.04/testsuite/u/
skylib_fluffos_v3/fluffos-2.9-ds2.04/tmp/
skylib_fluffos_v3/fluffos-2.9-ds2.04/windows/
skylib_fluffos_v3/mudlib/
skylib_fluffos_v3/mudlib/cmds/
skylib_fluffos_v3/mudlib/cmds/admin/
skylib_fluffos_v3/mudlib/cmds/guild-race/
skylib_fluffos_v3/mudlib/cmds/living/broken/
skylib_fluffos_v3/mudlib/cmds/player/group_cmds/
skylib_fluffos_v3/mudlib/cmds/playtester/
skylib_fluffos_v3/mudlib/d/admin/
skylib_fluffos_v3/mudlib/d/admin/room/
skylib_fluffos_v3/mudlib/d/admin/room/we_care/
skylib_fluffos_v3/mudlib/d/admin/save/
skylib_fluffos_v3/mudlib/d/admin/text/
skylib_fluffos_v3/mudlib/d/learning/TinyTown/buildings/
skylib_fluffos_v3/mudlib/d/learning/TinyTown/map/
skylib_fluffos_v3/mudlib/d/learning/TinyTown/roads/
skylib_fluffos_v3/mudlib/d/learning/chars/
skylib_fluffos_v3/mudlib/d/learning/functions/
skylib_fluffos_v3/mudlib/d/learning/handlers/
skylib_fluffos_v3/mudlib/d/learning/help_topics/
skylib_fluffos_v3/mudlib/d/learning/help_topics/npcs/
skylib_fluffos_v3/mudlib/d/learning/help_topics/objects/
skylib_fluffos_v3/mudlib/d/learning/help_topics/rcs_demo/
skylib_fluffos_v3/mudlib/d/learning/help_topics/rcs_demo/RCS/
skylib_fluffos_v3/mudlib/d/learning/help_topics/rooms/
skylib_fluffos_v3/mudlib/d/learning/help_topics/rooms/crowd/
skylib_fluffos_v3/mudlib/d/learning/help_topics/rooms/situations/
skylib_fluffos_v3/mudlib/d/learning/save/
skylib_fluffos_v3/mudlib/d/learning/school/
skylib_fluffos_v3/mudlib/d/learning/school/add_sc/
skylib_fluffos_v3/mudlib/d/learning/school/characters/
skylib_fluffos_v3/mudlib/d/learning/school/general/
skylib_fluffos_v3/mudlib/d/learning/school/getting-started/
skylib_fluffos_v3/mudlib/d/learning/school/getting-started/basic_commands/
skylib_fluffos_v3/mudlib/d/learning/school/getting-started/edtutor/
skylib_fluffos_v3/mudlib/d/learning/school/getting-started/unix_tutor/
skylib_fluffos_v3/mudlib/d/learning/school/items/
skylib_fluffos_v3/mudlib/d/learning/school/npc_school/
skylib_fluffos_v3/mudlib/d/learning/school/room_school/
skylib_fluffos_v3/mudlib/d/learning/school/room_school/room_basic/
skylib_fluffos_v3/mudlib/d/learning/school/room_school/situations/
skylib_fluffos_v3/mudlib/d/learning/school/room_school/terrain_tutor/
skylib_fluffos_v3/mudlib/d/learning/text/
skylib_fluffos_v3/mudlib/d/liaison/
skylib_fluffos_v3/mudlib/d/mudlib/
skylib_fluffos_v3/mudlib/d/mudlib/changes/
skylib_fluffos_v3/mudlib/d/playtesters/
skylib_fluffos_v3/mudlib/d/playtesters/effects/
skylib_fluffos_v3/mudlib/d/playtesters/handlers/
skylib_fluffos_v3/mudlib/d/playtesters/items/
skylib_fluffos_v3/mudlib/d/sage/
skylib_fluffos_v3/mudlib/doc/
skylib_fluffos_v3/mudlib/doc/creator/
skylib_fluffos_v3/mudlib/doc/driver/
skylib_fluffos_v3/mudlib/doc/driver/efuns/arrays/
skylib_fluffos_v3/mudlib/doc/driver/efuns/buffers/
skylib_fluffos_v3/mudlib/doc/driver/efuns/calls/
skylib_fluffos_v3/mudlib/doc/driver/efuns/compile/
skylib_fluffos_v3/mudlib/doc/driver/efuns/filesystem/
skylib_fluffos_v3/mudlib/doc/driver/efuns/floats/
skylib_fluffos_v3/mudlib/doc/driver/efuns/functions/
skylib_fluffos_v3/mudlib/doc/driver/efuns/general/
skylib_fluffos_v3/mudlib/doc/driver/efuns/mappings/
skylib_fluffos_v3/mudlib/doc/driver/efuns/mixed/
skylib_fluffos_v3/mudlib/doc/driver/efuns/mudlib/
skylib_fluffos_v3/mudlib/doc/driver/efuns/numbers/
skylib_fluffos_v3/mudlib/doc/driver/efuns/parsing/
skylib_fluffos_v3/mudlib/doc/login/
skylib_fluffos_v3/mudlib/doc/lpc/basic_manual/
skylib_fluffos_v3/mudlib/doc/lpc/intermediate/
skylib_fluffos_v3/mudlib/doc/new/add_command/
skylib_fluffos_v3/mudlib/doc/new/events/
skylib_fluffos_v3/mudlib/doc/new/handlers/
skylib_fluffos_v3/mudlib/doc/new/living/race/
skylib_fluffos_v3/mudlib/doc/new/living/spells/
skylib_fluffos_v3/mudlib/doc/new/object/
skylib_fluffos_v3/mudlib/doc/new/player/
skylib_fluffos_v3/mudlib/doc/new/room/guild/
skylib_fluffos_v3/mudlib/doc/new/room/outside/
skylib_fluffos_v3/mudlib/doc/new/room/storeroom/
skylib_fluffos_v3/mudlib/doc/object/
skylib_fluffos_v3/mudlib/doc/playtesters/
skylib_fluffos_v3/mudlib/doc/policy/
skylib_fluffos_v3/mudlib/doc/weapons/
skylib_fluffos_v3/mudlib/global/
skylib_fluffos_v3/mudlib/global/creator/
skylib_fluffos_v3/mudlib/handlers/
skylib_fluffos_v3/mudlib/include/casino/
skylib_fluffos_v3/mudlib/include/cmds/
skylib_fluffos_v3/mudlib/include/effects/
skylib_fluffos_v3/mudlib/include/npc/
skylib_fluffos_v3/mudlib/include/room/
skylib_fluffos_v3/mudlib/include/shops/
skylib_fluffos_v3/mudlib/net/daemon/
skylib_fluffos_v3/mudlib/net/daemon/chars/
skylib_fluffos_v3/mudlib/net/inherit/
skylib_fluffos_v3/mudlib/net/obj/
skylib_fluffos_v3/mudlib/net/obj/BACKUPS/
skylib_fluffos_v3/mudlib/obj/amulets/
skylib_fluffos_v3/mudlib/obj/armours/plate/
skylib_fluffos_v3/mudlib/obj/b_day/
skylib_fluffos_v3/mudlib/obj/clothes/transport/horse/
skylib_fluffos_v3/mudlib/obj/faith/symbols/
skylib_fluffos_v3/mudlib/obj/fungi/
skylib_fluffos_v3/mudlib/obj/gatherables/
skylib_fluffos_v3/mudlib/obj/instruments/
skylib_fluffos_v3/mudlib/obj/media/
skylib_fluffos_v3/mudlib/obj/misc/player_shop/
skylib_fluffos_v3/mudlib/obj/monster/godmother/
skylib_fluffos_v3/mudlib/obj/monster/transport/
skylib_fluffos_v3/mudlib/obj/rings/
skylib_fluffos_v3/mudlib/obj/scabbards/
skylib_fluffos_v3/mudlib/obj/spells/
skylib_fluffos_v3/mudlib/obj/stationery/
skylib_fluffos_v3/mudlib/obj/stationery/envelopes/
skylib_fluffos_v3/mudlib/obj/toys/
skylib_fluffos_v3/mudlib/obj/vessels/
skylib_fluffos_v3/mudlib/obj/weapons/axes/
skylib_fluffos_v3/mudlib/obj/weapons/chains/
skylib_fluffos_v3/mudlib/obj/weapons/maces/BACKUPS/
skylib_fluffos_v3/mudlib/save/autodoc/
skylib_fluffos_v3/mudlib/save/book_handler/
skylib_fluffos_v3/mudlib/save/books/history/calarien/
skylib_fluffos_v3/mudlib/save/mail/
skylib_fluffos_v3/mudlib/save/new_soul/data/
skylib_fluffos_v3/mudlib/save/parcels/
skylib_fluffos_v3/mudlib/save/playerinfo/
skylib_fluffos_v3/mudlib/save/players/d/
skylib_fluffos_v3/mudlib/save/players/s/
skylib_fluffos_v3/mudlib/save/random_names/
skylib_fluffos_v3/mudlib/save/random_names/data/
skylib_fluffos_v3/mudlib/save/terrains/
skylib_fluffos_v3/mudlib/save/terrains/tutorial_desert/
skylib_fluffos_v3/mudlib/save/terrains/tutorial_grassy_field/
skylib_fluffos_v3/mudlib/save/terrains/tutorial_mountain/
skylib_fluffos_v3/mudlib/save/todo_lists/
skylib_fluffos_v3/mudlib/secure/
skylib_fluffos_v3/mudlib/secure/cmds/admin/
skylib_fluffos_v3/mudlib/secure/cmds/lord/
skylib_fluffos_v3/mudlib/secure/config/
skylib_fluffos_v3/mudlib/secure/handlers/autodoc/
skylib_fluffos_v3/mudlib/secure/handlers/intermud/
skylib_fluffos_v3/mudlib/secure/include/global/
skylib_fluffos_v3/mudlib/secure/save/
skylib_fluffos_v3/mudlib/secure/save/handlers/
skylib_fluffos_v3/mudlib/secure/std/
skylib_fluffos_v3/mudlib/secure/std/classes/
skylib_fluffos_v3/mudlib/secure/std/modules/
skylib_fluffos_v3/mudlib/std/creator/
skylib_fluffos_v3/mudlib/std/dom/
skylib_fluffos_v3/mudlib/std/effects/
skylib_fluffos_v3/mudlib/std/effects/external/
skylib_fluffos_v3/mudlib/std/effects/fighting/
skylib_fluffos_v3/mudlib/std/effects/magic/
skylib_fluffos_v3/mudlib/std/effects/magic/BACKUPS/
skylib_fluffos_v3/mudlib/std/effects/other/BACKUPS/
skylib_fluffos_v3/mudlib/std/effects/priest/
skylib_fluffos_v3/mudlib/std/effects/room/
skylib_fluffos_v3/mudlib/std/environ/
skylib_fluffos_v3/mudlib/std/guilds/
skylib_fluffos_v3/mudlib/std/guilds/old/
skylib_fluffos_v3/mudlib/std/languages/
skylib_fluffos_v3/mudlib/std/liquids/
skylib_fluffos_v3/mudlib/std/npc/
skylib_fluffos_v3/mudlib/std/npc/goals/
skylib_fluffos_v3/mudlib/std/npc/goals/basic/
skylib_fluffos_v3/mudlib/std/npc/goals/misc/
skylib_fluffos_v3/mudlib/std/npc/plans/
skylib_fluffos_v3/mudlib/std/npc/plans/basic/
skylib_fluffos_v3/mudlib/std/npc/types/
skylib_fluffos_v3/mudlib/std/npc/types/helper/
skylib_fluffos_v3/mudlib/std/npcs/
skylib_fluffos_v3/mudlib/std/outsides/
skylib_fluffos_v3/mudlib/std/races/shadows/
skylib_fluffos_v3/mudlib/std/room/basic/BACKUPS/
skylib_fluffos_v3/mudlib/std/room/basic/topography/
skylib_fluffos_v3/mudlib/std/room/controller/
skylib_fluffos_v3/mudlib/std/room/inherit/topography/
skylib_fluffos_v3/mudlib/std/room/topography/area/
skylib_fluffos_v3/mudlib/std/room/topography/iroom/
skylib_fluffos_v3/mudlib/std/room/topography/milestone/
skylib_fluffos_v3/mudlib/std/shadows/curses/
skylib_fluffos_v3/mudlib/std/shadows/disease/
skylib_fluffos_v3/mudlib/std/shadows/fighting/
skylib_fluffos_v3/mudlib/std/shadows/healing/
skylib_fluffos_v3/mudlib/std/shadows/magic/
skylib_fluffos_v3/mudlib/std/shadows/poison/
skylib_fluffos_v3/mudlib/std/shadows/room/
skylib_fluffos_v3/mudlib/std/shops/controllers/
skylib_fluffos_v3/mudlib/std/shops/objs/
skylib_fluffos_v3/mudlib/std/shops/player_shop/
skylib_fluffos_v3/mudlib/std/socket/
skylib_fluffos_v3/mudlib/std/soul/d/
skylib_fluffos_v3/mudlib/std/soul/e/
skylib_fluffos_v3/mudlib/std/soul/i/
skylib_fluffos_v3/mudlib/std/soul/j/
skylib_fluffos_v3/mudlib/std/soul/k/
skylib_fluffos_v3/mudlib/std/soul/l/
skylib_fluffos_v3/mudlib/std/soul/n/
skylib_fluffos_v3/mudlib/std/soul/o/
skylib_fluffos_v3/mudlib/std/soul/q/
skylib_fluffos_v3/mudlib/std/soul/r/
skylib_fluffos_v3/mudlib/std/soul/u/
skylib_fluffos_v3/mudlib/std/soul/v/
skylib_fluffos_v3/mudlib/std/soul/y/
skylib_fluffos_v3/mudlib/std/soul/z/
skylib_fluffos_v3/mudlib/std/stationery/
skylib_fluffos_v3/mudlib/w/
skylib_fluffos_v3/mudlib/w/default/
skylib_fluffos_v3/mudlib/w/default/armour/
skylib_fluffos_v3/mudlib/w/default/clothes/
skylib_fluffos_v3/mudlib/w/default/item/
skylib_fluffos_v3/mudlib/w/default/npc/
skylib_fluffos_v3/mudlib/w/default/room/
skylib_fluffos_v3/mudlib/w/default/weapon/
skylib_fluffos_v3/mudlib/www/
skylib_fluffos_v3/mudlib/www/java/
skylib_fluffos_v3/mudlib/www/secure/
skylib_fluffos_v3/mudlib/www/secure/lpc/advanced/
skylib_fluffos_v3/mudlib/www/secure/lpc/intermediate/
skylib_fluffos_v3/win32/
/**
 * The standard inheritable object for player-run shop manager offices.
 * This object defines the managers' office, allowing access to managers'
 * commands.  The majority of player-shop functionality is handled from
 * within the main office.  See the header file for a complete description
 * of the shop's workings.
 * @see /include/player_shop.h
 * @see /std/shops/player_shop/office.c
 * @see /std/shops/player_shop/counter.c
 * @see /std/shops/player_shop/storeroom.c
 * @see /std/shops/player_shop/shop_front.c
 * @see /std/shops/player_shop/shopkeeper.c
 * @author Ringo
 * @started 1st August 1999
 */
#include <player_shop.h>
#include <mail.h>
#include <move_failures.h>
#include <money.h>

inherit ROOM_OBJ;

int do_list( mixed * );
int do_logs( mixed *, string );
int do_mail( mixed * );
int do_query( string );
int do_view( string );
int do_project( string );
int do_vote( mixed *, string );
int do_commend( string );
int do_fire( mixed * );
int do_warn( mixed * );
int do_demote( string );
int do_suspend( mixed * );
int do_leave( mixed * );
int do_ban( mixed * );
int do_unban( string );
int do_set( mixed *, string );
int do_transfer( mixed * );
int do_policy(mixed *);

private string _office = "",
               _place = "",
               _shop_front = "",
               _counter = "",
               _storeroom = "";

private mapping _applicants = ([]);

/** @ignore yes */
void create()
{
   do_setup++;
   ::create();
   do_setup--;
   add_property( "determinate", "" );
   if ( !do_setup )
   {
      this_object()->setup();
      this_object()->reset();
   }
}
/* create() */


/** @ignore yes */
void init()
{
   ::init();
   if ( !_office || _office == "" )
   {
      return;
   }
   if ( !_office->query_manager( this_player()->query_name() ) &&
     !_office->query_retired( this_player()->query_name() ) &&
     !creatorp(this_player()) )
   {
      return;
   }
   add_command( "list", ({ "", "{employees|applicants|baddies}" }),
     (: do_list($4) :) );
   add_command( "memo", "" );
   add_command( "office", "" );
   add_command( "claim", "" );
   add_command( "accounts", "" );
   add_command( "logs", ({ "", "<number>", "{personnel|accounts|chart}" }),
     (: do_logs($4,$5) :) );
   add_command( "query", "{pay|employees}", (: do_query($4[0]) :) );
   add_command( "view", "<string'employee'>", (: do_view($4[0]) :)  );
   add_command( "project", "{pay|bonus}", (: do_project($4[0]) :) );
   add_command( "vote", "policy <word'name'> {y|n}", (: do_vote($4,$5) :) );
   add_command( "policy", "{suggest|remove} <word'policy'>",
     (: do_policy($4) :) );
   add_command( "policies", "" );

   if ( _office->query_retired( this_player()->query_name() ) )
   {
      return;
   }
   add_command( "rent", "cabinet" );
   add_command( "remove", "cabinet" );
   add_command( "retire", "" );
   add_command( "vote", "<word'applicant'> {y|n|a}", (: do_vote($4,$5) :) );
   add_command( "check", "votes" );
   add_command( "commend", "<word'employee'>", (: do_commend($4[0]) :) );
   add_command( "fire", "<word'employee'> [for] <string'reason'>",
     (: do_fire($4) :) );
   add_command( "warn", "<word'employee'> [for] <string'reason'>",
     (: do_warn($4) :) );
   add_command( "demote", "<word'employee'>", (: do_demote($4[0]) :) );
   add_command( "suspend", "<word'employee'> [for] <number> [months]",
     (: do_suspend($4) :) );
   add_command( "leave", "<word'employee'> [for] <number> [days]",
     (: do_leave($4) :) );
   add_command( "ban", "<word'person'> for <string'reason'>",
     (: do_ban($4) :) );
   add_command( "unban", "<word'person'>", (: do_unban($4[0]) :) );
   add_command( "set", ({ "maximum <number> [employees]",
     "pay <number'amount'> <string'type'>" }), (: do_set($4,$5) :) );
   add_command( "transfer", "<number'amount'> <string'type'> [from] "
     "{register|bonus|profit} [to] {register|bonus|profit}",
     (: do_transfer($4) :) );
}
/* init() */


/**
 * Set the path of the main office.
 * @param path The full path & filename.
 */
void set_office(string path) {
  _office = path;
}

int do_list(mixed *stuff) {
   string word, results;
   int emps_in;
   object ob;
   mapping _employees = ([ ]);
   
   _employees = _office->query_employees();
   results = "   Employees of "+ _office->query_shop_name() + "\n"
     "     As at " + ctime( time() ) + "\n\n";

   /* Retired managers */
   foreach ( word in _office->get_retired() )
   {
      if ( (ob = find_player( word )) && !ob->query_invis() )
      {
         results += "%^GREEN%^";
      }
      results += "     "+ capitalize( word )+
      "%^RESET%^ (retired manager)\n";
   }

   /* Managers */
   foreach ( word in _office->get_managers() )
   {
      if ( (ob = find_player( word )) && !ob->query_invis() )
      {
         emps_in ++;
         results += "%^GREEN%^";
      }
      results += "     "+ capitalize( word )+ "%^RESET%^ (manager)"+
        _office->list_stuff( word );
   }

   /* Supervisors */
   foreach ( word in _office->get_supervisors() )
   {
      if ( (ob = find_player( word )) && !ob->query_invis() )
      {
         emps_in ++;
         results += "%^GREEN%^";
      }
      results += "     "+ capitalize( word )+ "%^RESET%^ (supervisor)"+
        _office->list_stuff( word );
   }

   /* Riff-raff */
   foreach ( word in keys(_employees))
   {
      if ( (ob = find_player( word )) && !ob->query_invis() )
      {
         emps_in ++;
         results += "%^GREEN%^";
      }
      results += "     "+ capitalize( word )+ "%^RESET%^"+
        _office->list_stuff( word );
   }

   /* Applicants */
   foreach ( word in keys(_office->get_applicants()) )
   {
      if ( (ob = find_player( word )) && !ob->query_invis() )
      {
         results += "%^YELLOW%^";
      }
      results += "     "+ capitalize( word )+
      " %^YELLOW%^(applicant)%^RESET%^\n";
   }

   /* Baddies */
   foreach ( word in keys(_office->get_baddies()) )
   {
      if ( (ob = find_player (word ) ) && !ob->query_invis() )
      {
         results += "%^RED%^";
      }
      results += "     "+ capitalize( word )+
      " %^RED%^(baddie)%^RESET%^\n";
   }

   results += "\n";

   /* If viewed by manager or creator, display number of employees logged
    * on and number clocked in.
    */
   if( creatorp(TP) || _employees[TP->query_name()][EMP_POINTS] & MANAGER ) {
      if ( emps_in == 1 ) {
         results += "   There is one employee ";
      } else {
         results += "   There are "+ query_num(emps_in,0)+ " employees ";
      }
      results += "out of "+ query_num( sizeof( _employees ) )+
        " on "+mud_name()+" at the moment, with "+
        query_num( _office->num_employees_in(), 0 ) +
        " currently clocked in.\n\n";
   }

   tell_object( this_player(), "$P$Employees$P$"+ results );
   add_succeeded_mess( "" );
   return 1;
}
/* do_list() */

/**
 * @ignore yes
 * Send a memo to each employee.  Only used if there is no board.
 */
int do_memo()
{
   this_player()->do_edit( 0, "end_memo" );
   add_succeeded_mess( "" );
   return 1;
}
/* do_memo() */


/** @ignore yes */
void end_memo( string text )
{
   string *employees;
   if ( !text )
   {
      tell_object( this_player(), "Aborted.\n" );
#ifdef DEBUG
      debug_printf( "No message text.  Aborting.\n" );
#endif
      return;
   }
   employees = _office->get_managers() -
      ( creatorp(TP) ? ({ }) : ({ TP->query_name() }));
   tell_object( this_player(),
     "Do you want to keep a copy of the memo? " );
   input_to( "send_memo", 0, text, employees );
}
/* end_memo() */


/** @ignore yes */
void send_memo( string ans, string text, string *employees )
{
   if ( strlen(ans) < 1 || ( ans[0] != 'y' && ans[0] != 'n' ) )
   {
      tell_object( TP,
        "Do you want to keep a copy of the memo? (Yes or No)? " );
      input_to( "send_memo", 0, text );
      return;
   }
   _office->send_memo(ans, text, employees);
}
/* send_memo() */

int do_office() {
}

int do_claim() {
  object thing;
  thing = clone_object(MGR_BOOK);
  thing->set_read_mess("\n  "+_office->query_shop_name()+"\n\n"
              "  Staff Handbook\n\n  This handbook belongs to "+
              TP->query_short()+"\n\n", "common", 100);
  thing->set_office(_office);
  thing->move(TP);
  TP->add_succeeded_mess(TO, "$N $V $I.\n", ({ thing }));
  return 1; 
}

int do_accounts() {
}

int do_logs(string stuff, int num) {
}

int do_query(string stuff) {
}

int do_view(string stuff) {
}

int do_project(string stuff) {
}

int do_vote(mixed *stuff, string pat) {
  return _office->do_vote(stuff, pat);
}

int do_policy(string *stuff) {
}

int do_policies() {
}

int do_rent() {
}

int do_remove() {
}

int do_retire() {
}

int do_check() {
}

int do_commend(string stuff) {
}

int do_fire(string *stuff) {
}

int do_warn(string *stuff) {
}

int do_demote(string stuff) {
}

int do_suspend(string *stuff) {
}

int do_leave(string *stuff) {
}

int do_ban(string *stuff) {
}

int do_unban(string stuff) {
}

int do_set(string *stuff, string pat) {
}

int do_transfer(string *stuff) {
}