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/
static mapping patterns;

void respond( string message );

void add_pattern( string pattern, string action ) {
  
  if( patterns == 0 ) {
    patterns = ([ ]);
  }
  patterns[pattern] = action;
}

void outside_message( string msg ) {
  string *pats;
  string left;
  string right;
  int i,j;
  int args;

  left = "";
  right = "";

  if( msg[strlen( msg )-1] == '\n' )
    msg = msg[..strlen( msg ) -2 ];


  msg = ANSI_D->strip_colors( msg );

  if( patterns == 0 )
    patterns = ([ ]);

  pats = map_indices( patterns );
  for( i = 0; i < sizeof( pats ); i++ ) {
    args = 0;
    for( j = 0; j < strlen( pats[i] ); j++ ) {
      if( pats[i][j] == '%' )
	args++;
    }
    if( args == 0 ) {
      if( strstr( msg, pats[i] ) != -1 ) {
	respond( patterns[pats[i]] );
	return;
      }
    } else if( sscanf( msg, pats[i], left, right ) == args ) {
      /* We found a match */
      msg = patterns[pats[i]];
      msg = replace_string( msg, "$1", left );
      msg = replace_string( msg, "$2", right );
      respond( msg );
      return;
    }
  }
}