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 global_events;

void create( void ) {
  global_events = ([ ]);
}

void add_event( string name ) {
  if( global_events == 0 )
    global_events = ([ ]);
  global_events[name] = ({ });
}

void remove_event( string name ) {
  global_events[name] = 0;
}

void subscribe_event( string name ) {
  global_events[name] -= ({ previous_object() });
  global_events[name] += ({ previous_object() });
}

void unsubscribe_event( string name ) {
  global_events[name] -= ({ previous_object() });
}

varargs void event( string name, mixed args... ) {
  object *obs;
  int i;

  global_events[name] -= ({ 0 });
  obs = global_events[name];
  if( obs == 0 )
    return;

  for( i = 0; i < sizeof( obs ); i++ ) {
    call_other( obs[i], "event_" + name, args );
  }
}