class Event_Data
{
 public:
  event_func*    func;
  event_data*    loop;
  thing_data*   owner;
  int            time;
  void*       pointer; 
  Event_Data( event_func*, thing_data* );
  Event_Data( );
  ~Event_Data( );
};
/* 
 *   ROUTINES
 */
#define QUEUE_LENGTH  50000
extern event_data*   event_queue  [ QUEUE_LENGTH ];
extern int            event_pntr;
void  extract        ( event_data* );
void  unlink         ( event_data* );
void  stop_events    ( thing_data*, event_func* = NULL );
void         add_queue      ( event_data*, int );
void         set_delay      ( char_data*, int );
const char*  name           ( event_data* );
int          time_till      ( event_data* );
void         event_update   ( );
void delay_wander    ( event_data* );
void execute_wander  ( event_data* );
void next_action     ( event_data* );
void execute_leap    ( event_data* );
void execute_drown   ( event_data* );
void execute_path    ( event_data* );
void update_affect   ( event_data* );
void execute_decay   ( event_data* );