/
mudtem/
mudtem/area/scripts/
mudtem/bin/
mudtem/log/
mudtem/player/
mudtem/slang/autoconf/
mudtem/slang/doc/
mudtem/slang/doc/OLD/help/
mudtem/slang/doc/internal/
mudtem/slang/doc/text/
mudtem/slang/doc/tm/tools/
mudtem/slang/examples/
mudtem/slang/modules/
mudtem/slang/slsh/
mudtem/slang/slsh/lib/
mudtem/slang/slsh/scripts/
mudtem/slang/src/mkfiles/
mudtem/slang/src/util/
mudtem/src/CVS/
mudtem/src/include/
mudtem/src/include/CVS/
mudtem/src/var/CVS/
#include "events.h"

#define entidadEsCh( ent )	( (ent) && ((ent)->tipo == ENT_CH) )
#define entidadEsObj( ent )	( (ent) && ((ent)->tipo == ENT_OBJ) )
#define entidadEsString( ent )	( (ent) && ((ent)->tipo == ENT_STRING) )
#define entidadEsRoom( ent )	( (ent) && ((ent)->tipo == ENT_ROOM) )
#define entidadEsInt( ent )	( (ent) && ((ent)->tipo == ENT_INT) )

#define entEsCh(ent)		entidadEsCh(ent)
#define entEsObj(ent)		entidadEsObj(ent)
#define entEsStr(ent)		entidadEsString(ent)
#define entEsRoom(ent)		entidadEsRoom(ent)
#define entEsInt(ent)		entidadEsInt(ent)

#define entidadGetCh( ent )	( (ent)->u.ch )
#define entidadGetObj( ent )	( (ent)->u.obj )
#define entidadGetString( ent )	( (ent)->u.string )
#define entidadGetRoom( ent )	( (ent)->u.room )
#define entidadGetInt( ent )	( (ent)->u.entero )

#define entGetCh(ent)		entidadGetCh(ent)
#define entGetObj(ent)		entidadGetObj(ent)
#define entGetRoom(ent)		entidadGetRoom(ent)

const char *	entidadToString		( Entity * );
const char *	entidadToStringNoColor	( Entity * );
const char *	entidadToStringExt	( Entity * );
int		entidadGetNivel		( Entity * );
Entity *	objToEntidad		( OBJ_DATA *, bool );
Entity *	chToEntidad		( CHAR_DATA *, bool );
Entity *	stringToEntidad		( char *, bool, ROOM_INDEX_DATA * );
Entity *	intToEntidad		( int, bool, ROOM_INDEX_DATA * );
Entity *	roomToEntidad		( ROOM_INDEX_DATA *, bool );

#define entToString(ent)		entidadToString(ent)
#define entToStringExt(ent)		entidadToStringExt(ent)
#define entGetNivel(ent)		entidadGetNivel(ent)
#define entGetTipo(ent)			entidadGetTipo(ent)

#define strToEnt(a,room)	stringToEntidad(a, FALSE, room)
#define chToEnt(a)		chToEntidad(a, FALSE)
#define objToEnt(a)		objToEntidad(a, FALSE)
#define intToEnt(a,room)	intToEntidad(a, FALSE, room)
#define roomToEnt(a)		roomToEntidad(a, FALSE)
#define entGetVnum(a)		entidadGetVnum(a)

ROOM_INDEX_DATA *	entWhereIs	( Entity * );

int		entidadGetVnum		( Entity * );
char *		entidadGetTipo		( Entity * );
char *		newPERS			( Entity *, CHAR_DATA * );

void		limpiar_ent_temp	( void );
bool		entComparar		( Entity *, Entity * );
CHAR_DATA *	ent_get_char_room	( Entity *, char * );

#if !defined(USAR_MACROS)
Entity *	entGetTarget		( Entity * );
int		entGetSex		( Entity * );
long		entGetId		( Entity * );
char *		entGetClanGod		( Entity * );
int		entGetRace		( Entity * );
#else
#define entGetTarget(ent)	(((ent) && (ent)->tipo == ENT_CH) ? (ent)->u.ch->mprog_target : NULL)
#define entGetSex(ent)		(((ent) && (ent)->tipo == ENT_CH) ? URANGE(0,(ent)->u.ch->sex,2) : SEX_NEUTRAL)
#define	entGetId(ent)		(((ent) && entEsCh(ent)) ? (ent)->u.ch->id : 0)
#define entGetClanGod(ent)	(((ent) && entEsCh(ent)) ? CLAN_GOD((ent)->u.ch) : "Mota")
#define entGetRace(ent)		(((ent) && entEsCh(ent)) ? (ent)->u.ch->race : 0)
#endif

void		send_to_ent		( char *, Entity * );
void		entSetTarget		( Entity *, Entity * );
OBJ_DATA *	ent_get_obj_world	( Entity *, char * );
CHAR_DATA *	ent_get_char_world	( Entity *, char * );
OBJ_DATA *	ent_get_obj_here	( Entity *, char * );
bool		ent_can_see		( Entity *, Entity * );
int		entGetClan		( Entity * );
bool		ent_can_see_ch		( Entity *, CHAR_DATA * );
const char *	entPERS			( Entity *, Entity * );
char *		entGetShortDescr	( Entity * );
char *		entGetName		( Entity * );
bool		entHasTarget		( Entity * );
MPROG_LIST *	entGetProgs		( Entity * );
void		affect_to_ent		( Entity *, AFFECT_DATA * );
int		entGetSavingThrow	( Entity * );
void		entSetSavingThrow	( Entity *, int );
bool		ent_is_part		( Entity *, long );
void		obj_to_ent		( OBJ_DATA *, Entity * );
void		change_health		( Entity *, Entity *, int );
void		entSetAlignment		( Entity *, int );
int		entGetAlignment		( Entity * );
int		entGetHit		( Entity * );
int		entGetMaxHit		( Entity * );
void		entSetHit		( Entity *, int );
void		ent_update_pos		( Entity * );
void		ent_wear_obj		( Entity *, OBJ_DATA *, bool );
OBJ_DATA *	ent_get_eq_char		( Entity *, int );
bool		ent_is_npc		( Entity * );
bool		ent_saves_spell		( int, Entity *, int );
bool		ent_is_affected		( Entity *, int );
bool		ent_died		( Entity * );
#define ent_is_evil(ent) 		(entGetAlignment(ent) <= -350)
#define ent_is_good(ent) 		(entGetAlignment(ent) >= 350 )
#define ent_is_neutral(ent)		(!ent_is_evil(ent) && !ent_is_good(ent))
bool		ent_is_safe_spell	( Entity *, Entity *, bool );
bool		ent_IS_AFFECTED		( Entity *, long );
bool		ent_IS_AFFECTED2	( Entity *, long );
int		ent_get_skill		( Entity *, int );
bool		ent_is_same_group	( Entity *, Entity * );
int		ent_get_curr_stat	( Entity *, int );
CHAR_DATA *	entGetPet		( Entity * );
void		ent_multi_hit		( Entity *, Entity *, int );
void		ent_event_add		( Entity *, int, void *, ev_callback );
void		ent_add_follower	( Entity *, Entity * );
CHAR_DATA *	entGetPeopleRoom	( Entity * );
ROOM_INDEX_DATA *	ent_find_location	( Entity *, char * );
Entity *	entCopiar		( Entity * );
void		poner_ent_lista		( Entity * );
void		dead_update		( void );
int		get_prog_delay		( Entity * );
char *		entGetNombre		( Entity * );