// $Id: mob.h,v 1.4 2004/09/25 05:32:18 MouseJstr Exp $
#ifndef _MOB_H_
#define _MOB_H_
#define MAX_RANDOMMONSTER 3
#define MAX_MOB_RACE_DB 6
struct mob_skill {
short state;
short skill_id,skill_lv;
short permillage;
int casttime,delay;
short cancel;
short cond1,cond2;
short target;
int val[5];
short emotion;
};
struct mob_db {
char name[24],jname[24];
int lv;
int max_hp,max_sp;
int base_exp,job_exp;
int atk1,atk2;
int def,mdef;
int str,agi,vit,int_,dex,luk;
int range,range2,range3;
int size,race,element,mode;
short race2; // celest
int speed,adelay,amotion,dmotion;
int mexp,mexpper;
struct { int nameid,p; } dropitem[10]; //8 -> 10 Lupus
struct { int nameid,p; } mvpitem[3];
int view_class,sex;
short hair,hair_color,weapon,shield,head_top,head_mid,head_buttom,option,clothes_color; // [Valaris]
int equip; // [Valaris]
int summonper[MAX_RANDOMMONSTER];
int maxskill;
struct mob_skill skill[MAX_MOBSKILL];
};
extern struct mob_db mob_db[];
enum {
MST_TARGET = 0,
MST_SELF = 1,
MST_FRIEND = 2,
MST_AROUND5 = 3,
MST_AROUND6 = 4,
MST_AROUND7 = 5,
MST_AROUND8 = 6,
MST_AROUND1 = 7,
MST_AROUND2 = 8,
MST_AROUND3 = 9,
MST_AROUND4 = 10,
MST_AROUND = MST_AROUND4,
MSC_ALWAYS = 0x0000,
MSC_MYHPLTMAXRATE = 0x0001,
MSC_FRIENDHPLTMAXRATE= 0x0010,
MSC_MYSTATUSON = 0x0020,
MSC_MYSTATUSOFF = 0x0021,
MSC_FRIENDSTATUSON = 0x0030,
MSC_FRIENDSTATUSOFF = 0x0031,
MSC_ATTACKPCGT = 0x0100,
MSC_ATTACKPCGE = 0x0101,
MSC_SLAVELT = 0x0110,
MSC_SLAVELE = 0x0111,
MSC_CLOSEDATTACKED = 0x1000,
MSC_LONGRANGEATTACKED= 0x1001,
MSC_SKILLUSED = 0x1010,
MSC_CASTTARGETED = 0x1011,
};
enum {
MSS_IDLE, // ?@
MSS_WALK, // ?
MSS_ATTACK, // U
MSS_DEAD, // S
MSS_LOOT, // [g
MSS_CHASE, // ?
};
int mobdb_searchname(const char *str);
int mobdb_checkid(const int id);
int mob_once_spawn(struct map_session_data *sd,char *mapname,
int x,int y,const char *mobname,int class_,int amount,const char *event);
int mob_once_spawn_area(struct map_session_data *sd,char *mapname,
int x0,int y0,int x1,int y1,
const char *mobname,int class_,int amount,const char *event);
int mob_spawn_guardian(struct map_session_data *sd,char *mapname, // Spawning Guardians [Valaris]
int x,int y,const char *mobname,int class_,int amount,const char *event,int guardian); // Spawning Guardians [Valaris]
int mob_walktoxy(struct mob_data *md,int x,int y,int easy);
//int mob_randomwalk(struct mob_data *md,int tick);
//int mob_can_move(struct mob_data *md);
int mob_target(struct mob_data *md,struct block_list *bl,int dist);
int mob_stop_walking(struct mob_data *md,int type);
int mob_stopattack(struct mob_data *);
int mob_spawn(int);
int mob_damage(struct block_list *,struct mob_data*,int,int);
int mob_changestate(struct mob_data *md,int state,int type);
int mob_heal(struct mob_data*,int);
int mob_exclusion_add(struct mob_data *md,int type,int id);
int mob_exclusion_check(struct mob_data *md,struct map_session_data *sd);
int mob_get_viewclass(int);
int mob_get_sex(int);
short mob_get_hair(int);
short mob_get_hair_color(int);
short mob_get_weapon(int);
short mob_get_shield(int);
short mob_get_head_top(int);
short mob_get_head_mid(int);
short mob_get_head_buttom(int);
short mob_get_clothes_color(int); //player mob dye [Valaris]
int mob_get_equip(int); // mob equip [Valaris]
int do_init_mob(void);
int mob_delete(struct mob_data *md);
int mob_catch_delete(struct mob_data *md,int type);
int mob_timer_delete(int tid, unsigned int tick, int id, int data);
int mob_deleteslave(struct mob_data *md);
int mob_counttargeted(struct mob_data *md,struct block_list *src,int target_lv);
int mob_class_change(struct mob_data *md,int *value);
int mob_warp(struct mob_data *md,int m,int x,int y,int type);
int mobskill_use(struct mob_data *md,unsigned int tick,int event);
int mobskill_event(struct mob_data *md,int flag);
int mobskill_castend_id( int tid, unsigned int tick, int id,int data );
int mobskill_castend_pos( int tid, unsigned int tick, int id,int data );
int mob_summonslave(struct mob_data *md2,int *value,int amount,int flag);
int mob_gvmobcheck(struct map_session_data *sd, struct block_list *bl);
void mob_reload(void);
#endif