Horizon Official Technical Documentation
MonsterDefinitions.hpp
Go to the documentation of this file.
1/***************************************************
2 * _ _ _ *
3 * | | | | (_) *
4 * | |_| | ___ _ __ _ _______ _ __ *
5 * | _ |/ _ \| '__| |_ / _ \| '_ \ *
6 * | | | | (_) | | | |/ / (_) | | | | *
7 * \_| |_/\___/|_| |_/___\___/|_| |_| *
8 ***************************************************
9 * This file is part of Horizon (c).
10 * Copyright (c) 2019 Sagun K. (sagunxp@gmail.com).
11 * Copyright (c) 2019 Horizon Dev Team.
12 *
13 * Base Author - Sagun K. (sagunxp@gmail.com)
14 *
15 * This library is free software; you can redistribute it and/or modify
16 * it under the terms of the GNU General Public License as published by
17 * the Free Software Foundation, either version 3 of the License, or
18 * (at your option) any later version.
19 *
20 * This library is distributed in the hope that it will be useful,
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 * GNU General Public License for more details.
24 *
25 * You should have received a copy of the GNU General Public License
26 * along with this library. If not, see <http://www.gnu.org/licenses/>.
27 **************************************************/
28
29#ifndef HORIZON_ZONE_MONSTER_DEFINITIONS_HPP
30#define HORIZON_ZONE_MONSTER_DEFINITIONS_HPP
31
34#include <cinttypes>
35#include <string>
36#include <unordered_map>
37
38#define MAX_MOB_DROP 10
39#define MAX_MVP_DROP 10
40#define MAX_MOB_DB 22000
41
46};
47
49 // Base Races
61 // Boss
64
65 MONSTER_RACE_MAX, // Array size delimiter (keep before the combination races)
66
67 // Combination Races
73};
74
86};
87
89{
107 //MD_RANDOMTARGET = 0x00010000, // Not implemented
108 // Note: This should be kept within INT_MAX, since it's often cast to int.
110};
111
118 MONSTER_SKILL_STATE_BERSERK, //Aggressive mob attacking
119 MONSTER_SKILL_STATE_ANGRY, //Mob retaliating from being attacked.
120 MONSTER_SKILL_STATE_RUSH, //Mob following a player after being attacked.
121 MONSTER_SKILL_STATE_FOLLOW, //Mob following a player without being attacked.
123};
124
140};
141
167};
168
172 std::string map_name{""};
174 int16_t x{0}, y{0}, x_area{0}, y_area{0};
175 std::string mob_name{""};
176 int16_t amount{0};
178 int16_t dead_amount{ 0 };
180 int64_t dead_time{ 0 };
181 int64_t spawn_time{ 0 };
182 };
183 std::unordered_map<int64_t, s_monster_spawn_time_cache> dead_spawn_time_list;
184};
185
187 uint16_t skill_id{0};
188 uint16_t skill_level{0};
190 int cast_time{0};
191 int delay{0};
192 bool cancelable{0};
193 int16_t cast_condition{0};
194 int32_t condition_data{0};
195 int val[5]{0};
196 int16_t emotion_id{0};
197 uint16_t msg_id{0};
200};
201
203{
204 uint16_t monster_id{0};
208
209 uint16_t level{1};
210 int32_t hp{0};
211 int32_t sp{0};
212 int32_t attack_range{0};
213 int32_t attack_damage[2]{0};
214 int32_t defense{0};
215 int32_t magic_defense{0};
216
217 struct {
218 int16_t str{0};
219 int16_t agi{0};
220 int16_t vit{0};
221 int16_t int_{0};
222 int16_t dex{0};
223 int16_t luk{0};
225
226 short view_range{1};
227 short chase_range{1};
232 int8_t element_level{0};
233 int32_t mode{0};
234 int32_t move_speed{0};
235 int32_t attack_delay{0};
236 int32_t attack_motion{0};
237 int32_t damage_motion{0};
238 int32_t damage_taken_rate{100};
239
241 int32_t sprite_id{0};
242 int32_t weapon_id{0};
243 int32_t shield_id{0};
244 int32_t robe_id{0};
245 int32_t headgear_top_id{0};
248 int32_t hair_style_id{0};
249 int32_t body_style_id{0};
250 int32_t hair_color_id{0};
251 int32_t body_color_id{0};
253 } view{0};
254 //struct view_data vd;
255 unsigned int option;
256 //struct mob_skill skill[MAX_MOBSKILL];
257 //struct spawn_info spawn[10];
258 struct rewards
259 {
260 struct drops { int item_id{0}, chance{0}; };
261
262 unsigned int base_exp{0}, job_exp{0};
263 unsigned int mvp_exp{0};
267};
268
269#endif /* HORIZON_ZONE_MONSTER_DEFINITIONS_HPP */
#define MAX_UNIT_NAME_LENGTH
Definition: Client.hpp:34
monster_secondary_race_type
Definition: MonsterDefinitions.hpp:75
@ MONSTER_RACE2_GUARDIAN
Definition: MonsterDefinitions.hpp:81
@ MONSTER_RACE2_KOBOLD
Definition: MonsterDefinitions.hpp:78
@ MONSTER_RACE2_NONE
Definition: MonsterDefinitions.hpp:76
@ MONSTER_RACE2_ORC
Definition: MonsterDefinitions.hpp:79
@ MONSTER_RACE2_GOBLIN
Definition: MonsterDefinitions.hpp:77
@ MONSTER_RACE2_SCARABA
Definition: MonsterDefinitions.hpp:83
@ MONSTER_RACE2_NINJA
Definition: MonsterDefinitions.hpp:82
@ MONSTER_RACE2_MAX
Definition: MonsterDefinitions.hpp:85
@ MONSTER_RACE2_TURTLE
Definition: MonsterDefinitions.hpp:84
@ MONSTER_RACE2_GOLEM
Definition: MonsterDefinitions.hpp:80
monster_mode_type
Definition: MonsterDefinitions.hpp:89
@ MONSTER_MODE_MASK_TARGETWEAK
Definition: MonsterDefinitions.hpp:105
@ MONSTER_MODE_MASK_LOOTER
Definition: MonsterDefinitions.hpp:92
@ MONSTER_MODE_MASK_CHANGECHASE
Definition: MonsterDefinitions.hpp:101
@ MONSTER_MODE_MASK_CASTSENSOR_IDLE
Definition: MonsterDefinitions.hpp:95
@ MONSTER_MODE_MASK_PLANT
Definition: MonsterDefinitions.hpp:97
@ MONSTER_MODE_MASK_NOKNOCKBACK
Definition: MonsterDefinitions.hpp:106
@ MONSTER_MODE_MASK_BOSS
Definition: MonsterDefinitions.hpp:96
@ MONSTER_MODE_MASK_CANATTACK
Definition: MonsterDefinitions.hpp:98
@ MONSTER_MODE_MASK_CASTSENSOR_CHASE
Definition: MonsterDefinitions.hpp:100
@ MONSTER_MODE_MASK_AGGRESSIVE
Definition: MonsterDefinitions.hpp:93
@ MONSTER_MODE_MASK_CANMOVE
Definition: MonsterDefinitions.hpp:91
@ MONSTER_MODE_MASK_DETECTOR
Definition: MonsterDefinitions.hpp:99
@ MONSTER_MODE_MASK_CHANGETARGET_CHASE
Definition: MonsterDefinitions.hpp:104
@ MONSTER_MODE_MASK_ANGRY
Definition: MonsterDefinitions.hpp:102
@ MONSTER_MODE_MASK_NONE
Definition: MonsterDefinitions.hpp:90
@ MONSTER_MODE_MASK_ALL
Definition: MonsterDefinitions.hpp:109
@ MONSTER_MODE_MASK_CHANGETARGET_MELEE
Definition: MonsterDefinitions.hpp:103
@ MONSTER_MODE_MASK_ASSIST
Definition: MonsterDefinitions.hpp:94
monster_boss_type
Definition: MonsterDefinitions.hpp:42
@ BOSS_TYPE_MINI
Definition: MonsterDefinitions.hpp:44
@ BOSS_TYPE_MVP
Definition: MonsterDefinitions.hpp:45
@ BOSS_TYPE_NONE
Definition: MonsterDefinitions.hpp:43
monster_skill_cast_condition_type
Definition: MonsterDefinitions.hpp:142
@ MONSTER_SKILL_CC_FRIENDSTATUSOFF
Definition: MonsterDefinitions.hpp:151
@ MONSTER_SKILL_CC_FRIENDHPINRATE
Definition: MonsterDefinitions.hpp:147
@ MONSTER_SKILL_CC_FRIENDSTATUSON
Definition: MonsterDefinitions.hpp:150
@ MONSTER_SKILL_CC_SKILLUSED
Definition: MonsterDefinitions.hpp:159
@ MONSTER_SKILL_CC_MAGICATTACKED
Definition: MonsterDefinitions.hpp:166
@ MONSTER_SKILL_CC_MASTERATTACKED
Definition: MonsterDefinitions.hpp:163
@ MONSTER_SKILL_CC_MASTERHPLTMAXRATE
Definition: MonsterDefinitions.hpp:162
@ MONSTER_SKILL_CC_CASTTARGETED
Definition: MonsterDefinitions.hpp:160
@ MONSTER_SKILL_CC_ALWAYS
Definition: MonsterDefinitions.hpp:143
@ MONSTER_SKILL_CC_ATTACKPCGT
Definition: MonsterDefinitions.hpp:152
@ MONSTER_SKILL_CC_CLOSERANGEATTACKED
Definition: MonsterDefinitions.hpp:156
@ MONSTER_SKILL_CC_ALCHEMIST
Definition: MonsterDefinitions.hpp:164
@ MONSTER_SKILL_CC_LONGRANGEATTACKED
Definition: MonsterDefinitions.hpp:157
@ MONSTER_SKILL_CC_MYHPLTMAXRATE
Definition: MonsterDefinitions.hpp:144
@ MONSTER_SKILL_CC_ATTACKPCGE
Definition: MonsterDefinitions.hpp:153
@ MONSTER_SKILL_CC_SLAVELE
Definition: MonsterDefinitions.hpp:155
@ MONSTER_SKILL_CC_FRIENDHPLTMAXRATE
Definition: MonsterDefinitions.hpp:146
@ MONSTER_SKILL_CC_MYSTATUSOFF
Definition: MonsterDefinitions.hpp:149
@ MONSTER_SKILL_CC_AFTERSKILL
Definition: MonsterDefinitions.hpp:158
@ MONSTER_SKILL_CC_SLAVELT
Definition: MonsterDefinitions.hpp:154
@ MONSTER_SKILL_CC_MYSTATUSON
Definition: MonsterDefinitions.hpp:148
@ MONSTER_SKILL_CC_MYHPINRATE
Definition: MonsterDefinitions.hpp:145
@ MONSTER_SKILL_CC_SPAWN
Definition: MonsterDefinitions.hpp:165
@ MONSTER_SKILL_CC_RUDEATTACKED
Definition: MonsterDefinitions.hpp:161
monster_primary_race_type
Definition: MonsterDefinitions.hpp:48
@ MONSTER_RACE_NONDEMIHUMAN
Every race except Demi-Human (including Player)
Definition: MonsterDefinitions.hpp:68
@ MONSTER_RACE_NONDEMIPLAYER
Every race except Demi-Human (and except Player)
Definition: MonsterDefinitions.hpp:71
@ MONSTER_RACE_ALL
Every race (implemented as equivalent to RC_BOSS and RC_NONBOSS)
Definition: MonsterDefinitions.hpp:72
@ MONSTER_RACE_MAX
Definition: MonsterDefinitions.hpp:65
@ MONSTER_RACE_DRAGON
Dragon.
Definition: MonsterDefinitions.hpp:59
@ MONSTER_RACE_ANGEL
Angel.
Definition: MonsterDefinitions.hpp:58
@ MONSTER_RACE_BOSS
Boss.
Definition: MonsterDefinitions.hpp:62
@ MONSTER_RACE_PLANT
Plant.
Definition: MonsterDefinitions.hpp:53
@ MONSTER_RACE_PLAYER
Player.
Definition: MonsterDefinitions.hpp:60
@ MONSTER_RACE_DEMON
Demon.
Definition: MonsterDefinitions.hpp:56
@ MONSTER_RACE_UNDEAD
Undead.
Definition: MonsterDefinitions.hpp:51
@ MONSTER_RACE_DEMIHUMAN
Demi-Human (not including Player)
Definition: MonsterDefinitions.hpp:57
@ MONSTER_RACE_INSECT
Insect.
Definition: MonsterDefinitions.hpp:54
@ MONSTER_RACE_DEMIPLAYER
Demi-Human (including Player)
Definition: MonsterDefinitions.hpp:70
@ MONSTER_RACE_FORMLESS
Formless.
Definition: MonsterDefinitions.hpp:50
@ MONSTER_RACE_NONPLAYER
Every non-player race.
Definition: MonsterDefinitions.hpp:69
@ MONSTER_RACE_FISH
Fish.
Definition: MonsterDefinitions.hpp:55
@ MONSTER_RACE_NONBOSS
Non-boss.
Definition: MonsterDefinitions.hpp:63
@ MONSTER_RACE_BRUTE
Beast/Brute.
Definition: MonsterDefinitions.hpp:52
monster_skill_target_type
Definition: MonsterDefinitions.hpp:125
@ MONSTER_SKILL_TARGET_MASTER
Definition: MonsterDefinitions.hpp:130
@ MONSTER_SKILL_TARGET_AROUND
Definition: MonsterDefinitions.hpp:139
@ MONSTER_SKILL_TARGET_FRIEND
Definition: MonsterDefinitions.hpp:129
@ MONSTER_SKILL_TARGET_AROUND4
Definition: MonsterDefinitions.hpp:138
@ MONSTER_SKILL_TARGET_AROUND6
Definition: MonsterDefinitions.hpp:132
@ MONSTER_SKILL_TARGET_AROUND2
Definition: MonsterDefinitions.hpp:136
@ MONSTER_SKILL_TARGET_AROUND5
Definition: MonsterDefinitions.hpp:131
@ MONSTER_SKILL_TARGET_AROUND8
Definition: MonsterDefinitions.hpp:134
@ MONSTER_SKILL_TARGET_CURRENT
Definition: MonsterDefinitions.hpp:126
@ MONSTER_SKILL_TARGET_AROUND3
Definition: MonsterDefinitions.hpp:137
@ MONSTER_SKILL_TARGET_SELF
Definition: MonsterDefinitions.hpp:128
@ MONSTER_SKILL_TARGET_AROUND7
Definition: MonsterDefinitions.hpp:133
@ MONSTER_SKILL_TARGET_RANDOM
Definition: MonsterDefinitions.hpp:127
@ MONSTER_SKILL_TARGET_AROUND1
Definition: MonsterDefinitions.hpp:135
#define MAX_MVP_DROP
Definition: MonsterDefinitions.hpp:39
#define MAX_MOB_DROP
Definition: MonsterDefinitions.hpp:38
monster_skill_state_type
Definition: MonsterDefinitions.hpp:112
@ MONSTER_SKILL_STATE_ANYTARGET
Definition: MonsterDefinitions.hpp:122
@ MONSTER_SKILL_STATE_RUSH
Definition: MonsterDefinitions.hpp:120
@ MONSTER_SKILL_STATE_BERSERK
Definition: MonsterDefinitions.hpp:118
@ MONSTER_SKILL_STATE_IDLE
Definition: MonsterDefinitions.hpp:114
@ MONSTER_SKILL_STATE_DEAD
Definition: MonsterDefinitions.hpp:117
@ MONSTER_SKILL_STATE_WALK
Definition: MonsterDefinitions.hpp:115
@ MONSTER_SKILL_STATE_FOLLOW
Definition: MonsterDefinitions.hpp:121
@ MONSTER_SKILL_STATE_LOOT
Definition: MonsterDefinitions.hpp:116
@ MONSTER_SKILL_STATE_ANGRY
Definition: MonsterDefinitions.hpp:119
@ MONSTER_SKILL_STATE_ANY
Definition: MonsterDefinitions.hpp:113
element_type
Definition: UnitDefinitions.hpp:970
@ ELE_NEUTRAL
Definition: UnitDefinitions.hpp:971
unit_gender_types
Definition: UnitDefinitions.hpp:988
@ UNIT_GENDER_FEMALE
Definition: UnitDefinitions.hpp:989
unit_size_type
Definition: UnitDefinitions.hpp:36
@ ESZ_MEDIUM
Definition: UnitDefinitions.hpp:38
Definition: MonsterDefinitions.hpp:240
unit_gender_types gender
Definition: MonsterDefinitions.hpp:252
int32_t body_color_id
Definition: MonsterDefinitions.hpp:251
int32_t body_style_id
Definition: MonsterDefinitions.hpp:249
int32_t headgear_top_id
Definition: MonsterDefinitions.hpp:245
int32_t headgear_bottom_id
Definition: MonsterDefinitions.hpp:247
int32_t hair_color_id
Definition: MonsterDefinitions.hpp:250
int32_t hair_style_id
Definition: MonsterDefinitions.hpp:248
int32_t shield_id
Definition: MonsterDefinitions.hpp:243
int32_t headgear_middle_id
Definition: MonsterDefinitions.hpp:246
int32_t robe_id
Definition: MonsterDefinitions.hpp:244
int32_t weapon_id
Definition: MonsterDefinitions.hpp:242
int32_t sprite_id
Definition: MonsterDefinitions.hpp:241
Definition: MonsterDefinitions.hpp:260
int item_id
Definition: MonsterDefinitions.hpp:260
int chance
Definition: MonsterDefinitions.hpp:260
Definition: MonsterDefinitions.hpp:259
struct drops items_mvp[MAX_MVP_DROP]
Definition: MonsterDefinitions.hpp:265
unsigned int job_exp
Definition: MonsterDefinitions.hpp:262
unsigned int mvp_exp
Definition: MonsterDefinitions.hpp:263
unsigned int base_exp
Definition: MonsterDefinitions.hpp:262
struct drops items[MAX_MOB_DROP]
Definition: MonsterDefinitions.hpp:264
Definition: MonsterDefinitions.hpp:203
int32_t mode
Definition: MonsterDefinitions.hpp:233
int16_t vit
Definition: MonsterDefinitions.hpp:220
int16_t agi
Definition: MonsterDefinitions.hpp:219
int32_t sp
Definition: MonsterDefinitions.hpp:211
struct monster_config_data::@132 stats
int32_t damage_motion
Definition: MonsterDefinitions.hpp:237
char sprite_name[MAX_UNIT_NAME_LENGTH]
Definition: MonsterDefinitions.hpp:205
struct monster_config_data::monster_view_data view
uint16_t level
Definition: MonsterDefinitions.hpp:209
struct monster_config_data::rewards rewards
element_type element
Definition: MonsterDefinitions.hpp:231
char alt_name[MAX_UNIT_NAME_LENGTH]
Definition: MonsterDefinitions.hpp:207
short view_range
Definition: MonsterDefinitions.hpp:226
int32_t damage_taken_rate
Definition: MonsterDefinitions.hpp:238
int16_t dex
Definition: MonsterDefinitions.hpp:222
int32_t magic_defense
Definition: MonsterDefinitions.hpp:215
int32_t attack_motion
Definition: MonsterDefinitions.hpp:236
int32_t hp
Definition: MonsterDefinitions.hpp:210
int16_t str
Definition: MonsterDefinitions.hpp:218
int32_t attack_delay
Definition: MonsterDefinitions.hpp:235
int32_t attack_damage[2]
Definition: MonsterDefinitions.hpp:213
int32_t defense
Definition: MonsterDefinitions.hpp:214
int8_t element_level
Definition: MonsterDefinitions.hpp:232
uint16_t monster_id
Definition: MonsterDefinitions.hpp:204
short chase_range
Definition: MonsterDefinitions.hpp:227
unit_size_type size
Definition: MonsterDefinitions.hpp:228
int16_t luk
Definition: MonsterDefinitions.hpp:223
monster_secondary_race_type secondary_race
Definition: MonsterDefinitions.hpp:230
int32_t move_speed
Definition: MonsterDefinitions.hpp:234
int16_t int_
Definition: MonsterDefinitions.hpp:221
monster_primary_race_type primary_race
Definition: MonsterDefinitions.hpp:229
char name[MAX_UNIT_NAME_LENGTH]
Definition: MonsterDefinitions.hpp:206
unsigned int option
Definition: MonsterDefinitions.hpp:255
int32_t attack_range
Definition: MonsterDefinitions.hpp:212
Definition: MonsterDefinitions.hpp:186
int16_t emotion_id
Definition: MonsterDefinitions.hpp:196
int cast_time
Definition: MonsterDefinitions.hpp:190
uint16_t skill_level
Definition: MonsterDefinitions.hpp:188
uint16_t skill_id
Definition: MonsterDefinitions.hpp:187
bool cancelable
Definition: MonsterDefinitions.hpp:192
int16_t cast_condition
Definition: MonsterDefinitions.hpp:193
int delay
Definition: MonsterDefinitions.hpp:191
uint16_t msg_id
Definition: MonsterDefinitions.hpp:197
int val[5]
Definition: MonsterDefinitions.hpp:195
int16_t skill_invoke_rate
Definition: MonsterDefinitions.hpp:189
int32_t condition_data
Definition: MonsterDefinitions.hpp:194
Definition: MonsterDefinitions.hpp:179
int64_t spawn_time
Definition: MonsterDefinitions.hpp:181
int64_t dead_time
Definition: MonsterDefinitions.hpp:180
Definition: MonsterDefinitions.hpp:169
int16_t y
Definition: MonsterDefinitions.hpp:174
int32_t spawn_delay_variance
Definition: MonsterDefinitions.hpp:177
int16_t x_area
Definition: MonsterDefinitions.hpp:174
std::unordered_map< int64_t, s_monster_spawn_time_cache > dead_spawn_time_list
Definition: MonsterDefinitions.hpp:183
int16_t x
Definition: MonsterDefinitions.hpp:174
int spawn_dataset_id
Definition: MonsterDefinitions.hpp:170
std::string map_name
Definition: MonsterDefinitions.hpp:172
int16_t amount
Definition: MonsterDefinitions.hpp:176
int32_t spawn_delay_base
Definition: MonsterDefinitions.hpp:177
std::string mob_name
Definition: MonsterDefinitions.hpp:175
int16_t dead_amount
Definition: MonsterDefinitions.hpp:178
MapCoords coords
Definition: MonsterDefinitions.hpp:173
int monster_id
Definition: MonsterDefinitions.hpp:171
int16_t y_area
Definition: MonsterDefinitions.hpp:174