#pragma once

#include <cstdint>

namespace diablo2 {
	namespace structures {
		struct monstats_line {
			uint16_t id; //0x00
			uint16_t base_id; //0x02
			uint16_t next_in_class; //0x04
			uint16_t name_str; //0x06
			uint16_t desc_str; //0x08
			uint16_t unk0_x0_a; //0x0A
			uint32_t mon_stats_flags; //0x0C
			uint32_t code; //0x10
			uint16_t mon_sound; //0x14
			uint16_t u_mon_sound; //0x16
			uint16_t mon_stats_ex; //0x18
			uint16_t mon_prop; //0x1A
			uint16_t mon_type; //0x1C
			uint16_t ai; //0x1E
			uint16_t spawn; //0x20
			uint8_t spawn_x; //0x22
			uint8_t spawn_y; //0x23
			uint16_t spawn_mode; //0x24
			uint16_t minion1; //0x26
			uint16_t minion2; //0x28
			uint16_t unk0_x2_a; //0x2A
			uint8_t party_min; //0x2C
			uint8_t party_max; //0x2D
			uint8_t rarity; //0x2E
			uint8_t min_grp; //0x2F
			uint8_t max_grp; //0x30
			uint8_t sparse_populate; //0x31
			uint16_t velocity; //0x32
			uint16_t run; //0x34
			uint16_t unk0_x36; //0x36
			uint16_t unk0_x38; //0x38
			uint16_t miss_a1; //0x3A
			uint16_t miss_a2; //0x3C
			uint16_t miss_s1; //0x3E
			uint16_t miss_s2; //0x40
			uint16_t miss_s3; //0x42
			uint16_t miss_s4; //0x44
			uint16_t miss_c; //0x46
			uint16_t miss_sq; //0x48
			uint16_t unk0_x4_a; //0x4A
			uint8_t align; //0x4C
			uint8_t trans_lvl; //0x4D
			uint8_t threat; //0x4E
			uint8_t ai_del; //0x4F
			uint8_t ai_del_n; //0x50
			uint8_t ai_del_h; //0x51
			uint8_t ai_dist; //0x52
			uint8_t ai_dist_n; //0x53
			uint16_t ai_dist_h; //0x54
			uint16_t ai_p1; //0x56
			uint16_t ai_p1_n; //0x58
			uint16_t ai_p1_h; //0x5A
			uint16_t ai_p2; //0x5C
			uint16_t ai_p2_n; //0x5E
			uint16_t ai_p2_h; //0x60
			uint16_t ai_p3; //0x62
			uint16_t ai_p3_n; //0x64
			uint16_t ai_p3_h; //0x66
			uint16_t ai_p4; //0x68
			uint16_t ai_p4_n; //0x6A
			uint16_t ai_p4_h; //0x6C
			uint16_t ai_p5; //0x6E
			uint16_t ai_p5_n; //0x70
			uint16_t ai_p5_h; //0x72
			uint16_t ai_p6; //0x74
			uint16_t ai_p6_n; //0x76
			uint16_t ai_p6_h; //0x78
			uint16_t ai_p7; //0x7A
			uint16_t ai_p7_n; //0x7C
			uint16_t ai_p7_h; //0x7E
			uint16_t ai_p8; //0x80
			uint16_t ai_p8_n; //0x82
			uint16_t ai_p8_h; //0x84
			uint16_t treasure_class1; //0x86
			uint16_t treasure_class2; //0x88
			uint16_t treasure_class3; //0x8A
			uint16_t treasure_class4; //0x8C
			uint16_t treasure_class1_n; //0x8E
			uint16_t treasure_class2_n; //0x90
			uint16_t treasure_class3_n; //0x92
			uint16_t treasure_class4_n; //0x94
			uint16_t treasure_class1_h; //0x96
			uint16_t treasure_class2_h; //0x98
			uint16_t treasure_class3_h; //0x9A
			uint16_t treasure_class4_h; //0x9C
			uint8_t tc_quest_id; //0x9E
			uint8_t tc_quest_cp; //0x9F
			uint8_t drain; //0xA0
			uint8_t drain_n; //0xA1
			uint8_t drain_h; //0xA2
			uint8_t to_block; //0xA3
			uint8_t b_to_block_n; //0xA4
			uint8_t to_block_h; //0xA5
			uint16_t crit; //0xA6
			uint16_t skill_damage; //0xA8
			uint16_t level; //0xAA
			uint16_t level_n; //0xAC
			uint16_t level_h; //0xAE
			uint16_t min_hp; //0xB0
			uint16_t min_hp_n; //0xB2
			uint16_t min_hp_h; //0xB4
			uint16_t max_hp; //0xB6
			uint16_t max_hp_n; //0xB8
			uint16_t max_hp_h; //0xBA
			uint16_t ac; //0xBC
			uint16_t ac_n; //0xBE
			uint16_t ac_h; //0xC0
			uint16_t a1_th; //0xC2
			uint16_t a1_th_n; //0xC4
			uint16_t a1_th_h; //0xC6
			uint16_t a2_th; //0xC8
			uint16_t a2_th_n; //0xCA
			uint16_t a2_th_h; //0xCC
			uint16_t s1_th; //0xCE
			uint16_t s1_th_n; //0xD0
			uint16_t s1_th_h; //0xD2
			uint16_t exp; //0xD4
			uint16_t exp_n; //0xD6
			uint16_t exp_h; //0xD8
			uint16_t a1_min_d; //0xDA
			uint16_t a1_min_d_n; //0xDC
			uint16_t a1_min_d_h; //0xDE
			uint16_t a1_max_d; //0xE0
			uint16_t a1_max_d_n; //0xE2
			uint16_t a1_max_d_h; //0xE4
			uint16_t a2_min_d; //0xE6
			uint16_t a2_min_d_n; //0xE8
			uint16_t a2_min_d_h; //0xEA
			uint16_t a2_max_d; //0xEC
			uint16_t a2_max_d_n; //0xEE
			uint16_t a2_max_d_h; //0xF0
			uint16_t s1_min_d; //0xF2
			uint16_t s1_min_d_n; //0xF4
			uint16_t s1_min_d_h; //0xF6
			uint16_t s1_max_d; //0xF8
			uint16_t s1_max_d_n; //0xFA
			uint16_t s1_max_d_h; //0xFC
			uint8_t el1_mode; //0xFE
			uint8_t el2_mode; //0xFF
			uint8_t el3_mode; //0x100
			uint8_t el1_type; //0x101
			uint8_t el2_type; //0x102
			uint8_t el3_type; //0x103
			uint8_t el1_pct; //0x104
			uint8_t el1_pct_n; //0x105
			uint8_t el1_pct_h; //0x106
			uint8_t el2_pct; //0x107
			uint8_t el2_pct_n; //0x108
			uint8_t el2_pct_h; //0x109
			uint8_t el3_pct; //0x10A
			uint8_t el3_pct_n; //0x10B
			uint8_t el3_pct_h; //0x10C
			uint8_t unk0_x_10d; //0x10D
			uint16_t el1_min_d; //0x10E
			uint16_t el1_min_d_n; //0x110
			uint16_t el1_min_d_h; //0x112
			uint16_t el2_min_d; //0x114
			uint16_t el2_min_d_n; //0x116
			uint16_t el2_min_d_h; //0x118
			uint16_t el3_min_d; //0x11A
			uint16_t el3_min_d_n; //0x11C
			uint16_t el3_min_d_h; //0x11E
			uint16_t el1_max_d; //0x120
			uint16_t el1_max_d_n; //0x122
			uint16_t el1_max_d_h; //0x124
			uint16_t el2_max_d; //0x126
			uint16_t el2_max_d_n; //0x128
			uint16_t el2_max_d_h; //0x12A
			uint16_t el3_max_d; //0x12C
			uint16_t el3_max_d_n; //0x12E
			uint16_t el3_max_d_h; //0x130
			uint16_t el_1dur; //0x132
			uint16_t el_1dur_n; //0x134
			uint16_t el_1dur_h; //0x136
			uint16_t el_2dur; //0x138
			uint16_t el_2dur_n; //0x13A
			uint16_t el_2dur_h; //0x13C
			uint16_t el_3dur; //0x13E
			uint16_t el_3dur_n; //0x140
			uint16_t el_3dur_h; //0x142
			uint16_t res_dmg; //0x144
			uint16_t res_dmg_n; //0x146
			uint16_t res_dmg_h; //0x148
			uint16_t res_magic; //0x14A
			uint16_t res_magic_n; //0x14C
			uint16_t res_magic_h; //0x14E
			uint16_t res_fire; //0x150
			uint16_t res_fire_n; //0x152
			uint16_t res_fire_h; //0x154
			uint16_t res_light; //0x156
			uint16_t res_light_n; //0x158
			uint16_t res_light_h; //0x15A
			uint16_t res_cold; //0x15C
			uint16_t res_cold_n; //0x15E
			uint16_t res_cold_h; //0x160
			uint16_t res_poison; //0x162
			uint16_t res_poison_n; //0x164
			uint16_t res_poiosn_h; //0x166
			uint8_t cold_effect; //0x168
			uint8_t cold_effect_n; //0x169
			uint16_t cold_effect_h; //0x16A
			uint32_t send_skills; //0x16C
			uint16_t skill1; //0x170
			uint16_t skill2; //0x172
			uint16_t skill3; //0x174
			uint16_t skill4; //0x176
			uint16_t skill5; //0x178
			uint16_t skill6; //0x17A
			uint16_t skill7; //0x17C
			uint16_t skill8; //0x17E
			uint32_t unk0_x180[6]; //0x180
			uint8_t sk1_lvl; //0x198
			uint8_t sk2_lvl; //0x199
			uint8_t sk3_lvl; //0x19A
			uint8_t sk4_lvl; //0x19B
			uint8_t sk5_lvl; //0x19C
			uint8_t sk6_lvl; //0x19D
			uint8_t sk7_lvl; //0x19E
			uint8_t sk8_lvl; //0x19F
			uint32_t damage_regen; //0x1A0
			uint8_t spl_end_death; //0x1A4
			uint8_t spl_get_mode_chart; //0x1A5
			uint8_t spl_end_generic; //0x1A6
			uint8_t spl_client_end; //0x1A7
		};
	}
}
