tbamud-3.67/bin/
tbamud-3.67/cnf/
tbamud-3.67/lib/etc/
tbamud-3.67/lib/misc/
tbamud-3.67/lib/plrfiles/A-E/
tbamud-3.67/lib/plrfiles/F-J/
tbamud-3.67/lib/plrfiles/K-O/
tbamud-3.67/lib/plrfiles/P-T/
tbamud-3.67/lib/plrfiles/U-Z/
tbamud-3.67/lib/plrfiles/ZZZ/
tbamud-3.67/lib/plrobjs/A-E/
tbamud-3.67/lib/plrobjs/F-J/
tbamud-3.67/lib/plrobjs/K-O/
tbamud-3.67/lib/plrobjs/P-T/
tbamud-3.67/lib/plrobjs/U-Z/
tbamud-3.67/lib/plrobjs/ZZZ/
tbamud-3.67/lib/text/
tbamud-3.67/lib/text/help/
tbamud-3.67/lib/world/qst/
tbamud-3.67/lib/world/shp/
tbamud-3.67/log/
tbamud-3.67/src/
/**
* @file mud_event.h
* Mud_Event Header file.
* 
* Part of the core tbaMUD source code distribution, which is a derivative
* of, and continuation of, CircleMUD.
* 
* This source code, which was not part of the CircleMUD legacy code,
* is attributed to:
* Copyright 2012 by Joseph Arnusch.                                                    
*/

#ifndef _MUD_EVENT_H_
#define _MUD_EVENT_H_

#include "dg_event.h"

#define EVENT_WORLD 0
#define EVENT_DESC  1
#define EVENT_CHAR  2
#define EVENT_ROOM  3

#define NEW_EVENT(event_id, struct, var, time) (attach_mud_event(new_mud_event(event_id, struct,  var), time))

typedef enum {
    eNULL,
    ePROTOCOLS, /* The Protocol Detection Event */
    eWHIRLWIND, /* The Whirlwind Attack */
    eSPL_DARKNESS, /* Darkness Spell */
} event_id;

struct mud_event_list {
  const char * event_name;
  EVENTFUNC(*func);
  int iEvent_Type;
};

struct mud_event_data {
  struct  event * pEvent;      /***< Pointer reference to the event */
  event_id        iId;         /***< General ID reference */  
  void          * pStruct;     /***< Pointer to NULL, Descriptor, Character .... */
  char          * sVariables;	 /***< String variable */
}; 

/* Externals */
extern struct list_data * world_events;
extern struct mud_event_list mud_event_index[];
/* Local Functions */
void init_events(void);
struct mud_event_data *new_mud_event(event_id iId, void *pStruct, char *sVariables);
void attach_mud_event(struct mud_event_data *pMudEvent, long time);
void free_mud_event(struct mud_event_data *pMudEvent);
struct mud_event_data * char_has_mud_event(struct char_data * ch, event_id iId);
void clear_char_event_list(struct char_data * ch);

/* Events */
EVENTFUNC(event_countdown);
EVENTFUNC(get_protocols);
EVENTFUNC(event_whirlwind);

#endif /* _MUD_EVENT_H_ */