summaryrefslogtreecommitdiff
path: root/src/map/mob.hpp
blob: 6161bab88ca325bde594710ceb99b30f396c5ebf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
// $Id: mob.h,v 1.4 2004/09/25 05:32:18 MouseJstr Exp $
#ifndef MOB_HPP
#define MOB_HPP
#include "../common/timer.hpp"
#define MAX_RANDOMMONSTER 3

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;
    int  speed, adelay, amotion, dmotion;
    int  mexp, mexpper;
    int  mutations_nr, mutation_power;
    struct
    {
        int  nameid, p;
    } dropitem[8];
    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,
    MST_FRIEND,
    MST_MASTER,
    MST_AROUND5,
    MST_AROUND6,
    MST_AROUND7,
    MST_AROUND8,
    MST_AROUND1,
    MST_AROUND2,
    MST_AROUND3,
    MST_AROUND4,
    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_NOTINTOWN = 0x0032,

    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,                 // 攻撃
    MSS_DEAD,                   // 死亡
    MSS_LOOT,                   // ルート
    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_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_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);
void mob_timer_delete (timer_id, tick_t, custom_id_t, custom_data_t);

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);
void mobskill_castend_id (timer_id tid, tick_t tick, custom_id_t id, custom_data_t data);
void mobskill_castend_pos (timer_id tid, tick_t tick, custom_id_t id, custom_data_t 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