#define APPLY_NONE 0
#define APPLY_STR 1
#define APPLY_DEX 2
#define APPLY_INT 3
#define APPLY_WIS 4
#define APPLY_CON 5
#define APPLY_MAGIC 6
#define APPLY_FIRE 7
#define APPLY_COLD 8
#define APPLY_ELECTRIC 9
#define APPLY_MIND 10
#define APPLY_AGE 11
#define APPLY_MANA 12
#define APPLY_HIT 13
#define APPLY_MOVE 14
#define APPLY_AC 17
#define APPLY_HITROLL 18
#define APPLY_DAMROLL 19
#define APPLY_MANA_REGEN 20
#define APPLY_HIT_REGEN 21
#define APPLY_MOVE_REGEN 22
#define APPLY_ACID 23
#define APPLY_POISON 24
#define MAX_AFF_LOCATION 25
#define AFFECT_INTS 3
class Affect_Data
{
public:
char_data* leech;
char_data* victim;
int type;
int duration;
int level;
int location;
int modifier;
int leech_regen;
int leech_max;
Affect_Data( );
~Affect_Data( );
};
extern const char* fake_mob [ MAX_FAKE_MOB ];
void add_affect ( char_data*, affect_data* );
void add_affect ( obj_data*, affect_data* );
int affect_level ( char_data*, int );
int affect_duration ( char_data*, int );
bool has_affect ( char_data*, int );
bool is_affected ( obj_data*, int );
void strip_affect ( char_data*, int );
bool strip_affect ( obj_data*, int );
void remove_affect ( char_data* );
void remove_affect ( char_data*, affect_data* );
void remove_affect ( obj_data*, affect_data*, bool = TRUE );
void read_affects ( FILE*, obj_clss_data* );
void read_affects ( FILE*, obj_data* );
void read_affects ( FILE*, char_data* );
void write_affects ( FILE*, obj_clss_data* );
void write_affects ( FILE*, obj_data* );
void write_affects ( FILE*, char_data* );