tfe-1.0/area/
tfe-1.0/files/
tfe-1.0/logs/
tfe-1.0/logs/immortal/
tfe-1.0/logs/mob/
tfe-1.0/logs/object/
tfe-1.0/logs/player/
tfe-1.0/logs/room/
tfe-1.0/notes/clans/
tfe-1.0/player/
tfe-1.0/prev/
tfe-1.0/prev/area/
tfe-1.0/prev/player/
tfe-1.0/prev/rooms/
tfe-1.0/rooms/
tfe-1.0/src-gc/
tfe-1.0/src-msvc/
tfe-1.0/src-unix/
tfe-1.0/www/
tfe-1.0/www/html/
/*
 *   DESCRIPTION STRUCTURE
 */


class Extra_Data : public Visible_Data
{
 public:
  char*        keyword;        
  char*           text;

  Extra_Data( ) {
    record_new( sizeof( extra_data ), MEM_EXTRA );
    }

  ~Extra_Data( ) {
    record_delete( sizeof( extra_data ), MEM_EXTRA );
    free_string( keyword, MEM_EXTRA );
    free_string( text, MEM_EXTRA );
    }

  int Type ( ) { return EXTRA_DATA; }
  
  void         Look_At    ( char_data* );
  const char*  Keywords   ( char_data* );
};


bool  obj_descr     ( char_data*, thing_array&, char* );
bool  room_descr    ( char_data*, extra_data*, char* );
void  show_extras   ( char_data*, extra_array& );
void  edit_extra    ( extra_array&, wizard_data*, int, char*, char* );
void  read_extra    ( FILE*, extra_array& );
void  write_extras  ( FILE*, extra_array& );


/*
 *   LOOK ROUTINES
 */


void   glance        ( char_data*, char_data* );
void   look_in       ( char_data*, obj_data* );
void   look_at       ( char_data*, obj_data* );
void   show_room     ( char_data*, room_data*, bool, bool );


/*
 *   NOISE
 */


inline bool can_hear( char_data* ch )
{
  if( ch->position <= POS_SLEEPING )
    return FALSE;

  return TRUE;
}


/*
 *   WHO ROUTINES
 */


inline bool can_see_who( char_data* ch, char_data* victim )
{
  wizard_data* imm;

  if( ( imm = wizard( victim ) ) != NULL
    && is_set( victim->pcdata->pfile->flags, PLR_WIZINVIS )
    && get_trust( ch ) < imm->wizinvis )
    return FALSE;

  return TRUE;
}


inline const char* who_name( char_data* ch, char_data* victim )
{
  return can_see_who( ch, victim ) ? victim->Seen_Name( ch ) : "someone";
}