gurba-0.40/
gurba-0.40/bin/
gurba-0.40/lib/
gurba-0.40/lib/cmds/guild/fighter/
gurba-0.40/lib/cmds/monster/
gurba-0.40/lib/cmds/race/catfolk/
gurba-0.40/lib/cmds/race/dwarf/
gurba-0.40/lib/cmds/verb/
gurba-0.40/lib/daemons/data/
gurba-0.40/lib/data/boards/
gurba-0.40/lib/data/messages/
gurba-0.40/lib/data/players/
gurba-0.40/lib/design/
gurba-0.40/lib/domains/gurba/
gurba-0.40/lib/domains/gurba/guilds/fighter/
gurba-0.40/lib/domains/gurba/monsters/
gurba-0.40/lib/domains/gurba/objects/armor/
gurba-0.40/lib/domains/gurba/objects/clothing/
gurba-0.40/lib/domains/gurba/objects/weapons/
gurba-0.40/lib/domains/gurba/vendors/
gurba-0.40/lib/kernel/cmds/admin/
gurba-0.40/lib/kernel/daemons/
gurba-0.40/lib/kernel/include/
gurba-0.40/lib/kernel/lib/
gurba-0.40/lib/kernel/net/
gurba-0.40/lib/kernel/sys/
gurba-0.40/lib/logs/
gurba-0.40/lib/pub/
gurba-0.40/lib/std/modules/languages/
gurba-0.40/lib/std/races/
gurba-0.40/lib/std/races/monsters/
gurba-0.40/lib/wiz/fudge/
gurba-0.40/lib/wiz/spud/
gurba-0.40/src/host/beos/
gurba-0.40/src/host/pc/res/
gurba-0.40/src/kfun/
gurba-0.40/src/lpc/
gurba-0.40/src/parser/
gurba-0.40/tmp/
inherit MONSTER;
inherit M_ACTIONS;
/* inherit M_TRIGGERS; */

int nFollow;

void
setup( void ) {
  set_name( "bob" );
  set_proper_name( "Bob" );
  set_gender( 1 );
  set_adj( "slave" );
  set_in_room_desc( "Bob, Fudge's slave." );
  set_long( "Bob is wearing a simple robe, and his head is always bent in humbleness." );
  set_race( "human" );
  /*  add_pattern( "Fudge says: Bob, %s", "call parse $1" ); */
  nFollow = call_out( "follow_fudge", 2 );
}

void 
follow_fudge( void ) {
  object *objs;
  object fudge;
  int i;
  int nFudgeHere;


  nFudgeHere = 0;
  objs = query_environment()->query_inventory();
  for( i = 0; i < sizeof( objs ); i++ ) {
    if( objs[i]->query_id() == "fudge" ) {
      nFudgeHere = 1;
    }
  }

  if( nFudgeHere == 0 ) {
    fudge = USER_D->find_user( "fudge" );
    if( fudge == 0 ) {
      /* Fudge has left the building */
      remove_call_out( nFollow );
      respond( "say It seems Fudge has left these planes." );
      die();
      destruct_object( this_object() );
      return;
    }
    if( query_environment() != fudge->query_player()->query_environment() ) {
      switch( random( 10 ) ) {
      case 0: query_environment()->tell_room( 0, "Bob leaves."); break;
      case 1: query_environment()->tell_room( 0, "Bob tries to follow his master."); break;
      case 2: query_environment()->tell_room( 0, "Bob follows Fudge."); break;
      case 3: query_environment()->tell_room( 0, "Bob disappears in a cloud of smoke."); break;
      case 4: query_environment()->tell_room( 0, "Bob suddenly vanishes."); break;
      case 5: query_environment()->tell_room( 0, "Bob fades out of view."); break;
      case 6: query_environment()->tell_room( 0, "Bob runs off after Fudge."); break;
      case 7: query_environment()->tell_room( 0, "Bob suddenly notices that Fudge has left, and runs off."); break;
      case 8: query_environment()->tell_room( 0, "Bob fades into the shadows, and is gone."); break;
      case 9: query_environment()->tell_room( 0, "Bob snaps his fingers, and is gone."); break;

      }

      move(fudge->query_player()->query_environment()->base_name());
      switch( random( 10 ) ) {
      case 0: query_environment()->tell_room( 0, "Bob follows the light of his life."); break;
      case 1: query_environment()->tell_room( 0, "Bob follows in his masters footsteps."); break;
      case 2: query_environment()->tell_room( 0, "Bob appears next to Fudge in a cloud of smoke."); break;
      case 3: query_environment()->tell_room( 0, "Bob enters."); break;
      case 4: query_environment()->tell_room( 0, "Bob appears."); break;
      case 5: query_environment()->tell_room( 0, "Bob arrives shortly after Fudge."); break;
      case 6: query_environment()->tell_room( 0, "Bob comes running, tying to keep up with Fudge."); break;
      case 7: query_environment()->tell_room( 0, "A humble slave enters."); break;
      case 8: query_environment()->tell_room( 0, "A humble person wearing a robe enters."); break;
      case 9: query_environment()->tell_room( 0, "Bob catches up with Fudge."); break;
      }
    }
  }
  nFollow = call_out( "follow_fudge", 2 );
}

void 
parse( string str ) {
  if( str == "status" ) {
    respond( "say There are " + sizeof( USER_D->query_users() ) + " players here." );
    respond( "say Of these " + sizeof( USER_D->query_users() ) + " players, " + sizeof( USER_D->query_wizards() ) + " are wizards." );
  } else {
    respond( str );
  }
  /*  respond("say Parsing: " + str ); */
  /*  respond("say I did not understand you, master.");
      respond("bow fudge"); */
}

void
outside_message( string str ) {

  str = ANSI_D->strip_colors( str );
  str = str[..(strlen(str)-3)];
  if( strlen( str ) > 18 ) {
    if( str[..16] == "Fudge says: Bob, " ) {
      parse( str[17..] );
    }
  }
}