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/
#include <type.h>
inherit "/std/body/size"; /* satch */
/* inherit "/std/modules/m_autoload_filename"; */

static string brief_desc;
string  long_desc;
static object  object_environment;
static string *ids;
static string *adjs;
static int object_size;
string proper_name;
static string *object_commands;
static string detailed_desc;

void create( void ) {
  brief_desc = "";
  ids = ({ "nondescript thing" });
  adjs = ({ });
  OBJECT_D->register_object( this_object() );
}

int is_living( void ) {
  return( 0 );
}

int is_player( void ) {
  return( 0 );
}

varargs void set_id( string str, mixed args...) {
  int i;

  ids = ({ str });
  for( i = 0; i < sizeof( args ); i++ ) {
    ids += ({ (string) args[i] });
  }
}

varargs void add_id( string str, mixed args...) {
  int i;

  if( ids == 0 )
    ids = ({ });

  ids += ({ str });
  for( i = 0; i < sizeof( args ); i++ ) {
    ids += ({ (string) args[i] });
  }
}

varargs void add_ids( string str, mixed args...) {
  int i;

  if( ids == 0 )
    ids = ({ });

  ids += ({ str });
  for( i = 0; i < sizeof( args ); i++ ) {
    ids += ({ (string) args[i] });
  }
}

string query_id( void ) {
  return( ids[0] );
}

string *query_ids( void ) {
  return( ids );
}

int is_id( string id ) {
  int i;
  for( i = 0; i < sizeof( ids ); i++ ) {
    if( ids[i] == id )
      return( 1 );
  }
  return( 0 );
}

varargs void set_adj( string str, mixed args...) {
  int i;

  adjs = ({ str });
  for( i = 0; i < sizeof( args ); i++ ) {
    adjs += ({ (string) args[i] });
  }
}

varargs void add_adj( string str, mixed args...) {
  int i;

  if( adjs == 0 )
    adjs = ({ });
  adjs += ({ str });
  for( i = 0; i < sizeof( args ); i++ ) {
    adjs += ({ (string) args[i] });
  }
}

string *query_adjs( void ) {
  return( adjs );
}

string query_adj( void ) {
  if( sizeof( adjs ) == 0 )
    return( "" );
  return( adjs[0] );
}

int is_adj( string adj ) {
  int i;
  for( i = 0; i < sizeof( adjs ); i++ ) {
    if( adjs[i] == adj )
      return( 1 );
  }
  return( 0 );
}

void set_brief( string str ) {
  brief_desc = str;
}

void set_in_room_desc( string str ) {
  brief_desc = str;
}

string query_in_room_desc( void ) {
  return( brief_desc );
}

string query_brief( void ) {
  if( brief_desc == 0 || brief_desc == "" ) {
    if( query_adj() == 0 || query_adj() == "" ) {
      brief_desc = article( query_id() ) + " " + query_id();
    } else {
      brief_desc = article( query_adj() ) + " " + query_adj() + " " 
	         + query_id();
    }
  }
  return( brief_desc );
}

void set_long( string str ) {
  long_desc = str;
}

string query_long( void ) {
  return( long_desc );
}

void set_proper_name( string name ) {
  proper_name = name;
} 

string query_proper_name( void ) {
  return( proper_name );
}
/*

void set_size( int sz ) {
  object_size = sz;
}

int query_size( void ) {
  return( object_size );
}
*/

object query_environment( void ) {
  return( object_environment );
}

void set_environment( object ob ) {
  object_environment = ob;
}

void destruct( void ) {
  if( object_environment ) 
    object_environment->remove_object( this_object() );

  OBJECT_D->unregister_object( this_object() );
  destruct_object( this_object() );
}

int move( mixed destination ) {
  int err;
  object dest;

  if( !destination )
    return( 0 );
  if( typeof( destination ) == T_STRING ) {
    /* Remove trailing .c */
    if( destination[strlen( destination )-2..] == ".c" )
      destination = destination[..strlen(destination)-3];
    dest = find_object( destination );
    if( !dest )
      dest = compile_object( destination );
  } else {
    dest = destination;
  }

  if( !dest ) {
    return( 0 );
  }

  if( object_environment == dest ) {
    return( 0 );
  }

  err = dest->receive_object( this_object() );

  if( err != 1) {
    write( "Error in move:" + err + "\n" );
    return( 0 );
  }

  if( object_environment ) {
    if( object_environment->is_living() ) {
      if( sizeof( this_object()->query_object_commands() ) > 0 ) {
	string *objcmds;
	int i;

	objcmds = this_object()->query_object_commands();
	for( i = 0; i < sizeof( objcmds ); i++ ) {
	  object_environment->remove_item_command( objcmds[i] );
	}
      }
    }
    object_environment->remove_object( this_object() );
    
  }

  object_environment = dest;

  if( object_environment->is_living() ) {
    if( sizeof( this_object()->query_object_commands() ) > 0 ) {
      string *objcmds;
      int i;
      
      objcmds = this_object()->query_object_commands();
      for( i = 0; i < sizeof( objcmds ); i++ ) {
	object_environment->add_item_command( objcmds[i], this_object() );
      }
    }
  }
  
  
  return( 1 );
}

void add_object_command( string command ) {
  if( object_commands == 0 )
    object_commands = ({ });
  object_commands += ({ command });
}

void remove_object_command( string command ) {
  if( object_commands == 0 )
    object_commands = ({ });
  object_commands -= ({ command });
  
}

string *query_object_commands( void ) {
  if( object_commands == 0 )
    object_commands = ({ });
  return( object_commands );
}

void set_detailed_desc( string desc ) {
	detailed_desc = desc;
}

string query_detailed_desc( void ) {
	return( detailed_desc );
}