00001
00002 #ifndef _MOB_H_
00003 #define _MOB_H_
00004
00005 #define MAX_RANDOMMONSTER 3
00006 #define MAX_MOB_RACE_DB 6
00007
00008 struct mob_skill {
00009 short state;
00010 short skill_id,skill_lv;
00011 short permillage;
00012 int casttime,delay;
00013 short cancel;
00014 short cond1, cond2;
00015 short target;
00016 int val[5];
00017 short emotion;
00018 };
00019
00020 struct mob_db {
00021 char name[25], jname[25];
00022 int lv;
00023 int max_hp, max_sp;
00024 int base_exp, job_exp;
00025 int atk1, atk2;
00026 int def, mdef;
00027 int str, agi, vit, int_, dex, luk;
00028 int range, range2, range3;
00029 int size, race, element, mode;
00030 short race2;
00031 int speed, adelay, amotion, dmotion;
00032 int mexp, mexpper;
00033 struct { int nameid; short p; } dropitem[10];
00034 struct { int nameid; short p; } mvpitem[3];
00035 int view_class, sex;
00036 short hair, hair_color, weapon, shield, head_top, head_mid, head_buttom, option, clothes_color;
00037 int equip;
00038 int summonper[MAX_RANDOMMONSTER];
00039 int maxskill;
00040 struct mob_skill skill[MAX_MOBSKILL];
00041 };
00042 extern struct mob_db mob_db[];
00043
00044 enum {
00045 MST_TARGET = 0,
00046 MST_SELF,
00047 MST_FRIEND,
00048 MST_MASTER,
00049 MST_AROUND5,
00050 MST_AROUND6,
00051 MST_AROUND7,
00052 MST_AROUND8,
00053 MST_AROUND1,
00054 MST_AROUND2,
00055 MST_AROUND3,
00056 MST_AROUND4,
00057 MST_AROUND = MST_AROUND4,
00058
00059 MSC_ALWAYS = 0x0000,
00060 MSC_MYHPLTMAXRATE,
00061 MSC_MYHPINRATE,
00062 MSC_FRIENDHPLTMAXRATE,
00063 MSC_FRIENDHPINRATE,
00064 MSC_MYSTATUSON,
00065 MSC_MYSTATUSOFF,
00066 MSC_FRIENDSTATUSON,
00067 MSC_FRIENDSTATUSOFF,
00068 MSC_ATTACKPCGT,
00069 MSC_ATTACKPCGE,
00070 MSC_SLAVELT,
00071 MSC_SLAVELE,
00072 MSC_CLOSEDATTACKED,
00073 MSC_LONGRANGEATTACKED,
00074 MSC_AFTERSKILL,
00075 MSC_SKILLUSED,
00076 MSC_CASTTARGETED,
00077 MSC_RUDEATTACKED,
00078 MSC_MASTERHPLTMAXRATE,
00079 MSC_MASTERATTACKED,
00080 MSC_ALCHEMIST,
00081 MSC_SPAWN,
00082 };
00083
00084
00085 enum {
00086 MSS_IDLE,
00087 MSS_WALK,
00088 MSS_LOOT,
00089 MSS_DEAD,
00090 MSS_BERSERK,
00091 MSS_ANGRY,
00092 MSS_RUSH,
00093 MSS_FOLLOW,
00094 };
00095
00096 int mobdb_searchname(const char *str);
00097 int mobdb_checkid(const int id);
00098 int mob_once_spawn(struct map_session_data *sd,char *mapname,
00099 int x,int y,const char *mobname,int class,int amount,const char *event);
00100 int mob_once_spawn_area(struct map_session_data *sd,char *mapname,
00101 int x0,int y_0,int x1,int y_1,
00102 const char *mobname,int class,int amount,const char *event);
00103
00104 int mob_spawn_guardian(struct map_session_data *sd, char *mapname,
00105 int x, int y, const char *mobname, int class, int amount, const char *event, int guardian);
00106
00107
00108 int mob_walktoxy(struct mob_data *md, int x, int y, int easy);
00109
00110
00111
00112 int mob_target(struct mob_data *md, struct block_list *bl, int dist);
00113 int mob_stop_walking(struct mob_data *md, int type);
00114 void mob_stopattack(struct mob_data *);
00115 int mob_spawn(int);
00116 int mob_damage(struct block_list *, struct mob_data*, int, int);
00117 void mob_changestate(struct mob_data *md, int state, int type);
00118 int mob_heal(struct mob_data*, int);
00119 int mob_exclusion_add(struct mob_data *md, int type, int id);
00120 int mob_exclusion_check(struct mob_data *md, struct map_session_data *sd);
00121 int mob_get_viewclass(int);
00122 int mob_get_sex(int);
00123 short mob_get_hair(int);
00124 short mob_get_hair_color(int);
00125 short mob_get_weapon(int);
00126 short mob_get_shield(int);
00127 short mob_get_head_top(int);
00128 short mob_get_head_mid(int);
00129 short mob_get_head_buttom(int);
00130 short mob_get_clothes_color(int);
00131 int mob_get_equip(int);
00132 int do_init_mob(void);
00133
00134 int mob_delete(struct mob_data *md);
00135 void mob_catch_delete(struct mob_data *md, int type);
00136 TIMER_FUNC(mob_timer_delete);
00137
00138 int mob_deleteslave(struct mob_data *md);
00139
00140 int mob_class_change(struct mob_data *md, int *value, int valuesize);
00141 int mob_warp(struct mob_data *md, int m, int x, int y, int type);
00142
00143 int mobskill_use(struct mob_data *md, unsigned int tick, int event);
00144 int mobskill_event(struct mob_data *md, int flag);
00145 TIMER_FUNC(mobskill_castend_id);
00146 TIMER_FUNC(mobskill_castend_pos);
00147 int mob_summonslave(struct mob_data *md2, int *value, int amount, int flag);
00148
00149 int mob_gvmobcheck(struct map_session_data *sd, struct block_list *bl);
00150 void mob_reload(void);
00151
00152 #endif // _MOB_H_