#pragma once

#include <cstdint>

namespace diablo2 {
	namespace structures {
		//https://phrozen-library.fandom.com/wiki/Items_line
		struct items_line {
			char flippy_file[32]; //0x00
			char inv_file[32]; //0x20
			char unique_inv_file[32]; //0x40
			char setinv_file[32]; //0x60
			union {
				uint32_t number_code; //0x80
				char string_code[4]; //0x80
			};

			uint32_t norm_code; //0x84
			uint32_t uber_code; //0x88
			uint32_t ultra_code; //0x8C
			uint32_t alternate_gfx; //0x90
			void* spell; //0x94
			uint16_t state; //0x98
			uint16_t cstate1; //0x9A
			uint16_t cstate2; //0x9C
			uint16_t stat1; //0x9E
			uint16_t stat2; //0xA0
			uint16_t stat3; //0xA2
			uint32_t calc1; //0xA4
			uint32_t calc2; //0xA8
			uint32_t calc3; //0xAC
			uint32_t len; //0xB0
			uint16_t spell_desc; //0xB4
			uint16_t spell_desc_str; //0xB6
			uint32_t spell_desc_calc; //0xB8
			uint32_t better_gem; //0xBC
			uint32_t weapon_class; //0xC0
			uint32_t two_handed_weapon_class; //0xC4
			uint32_t transmog_type; //0xC8
			uint32_t min_ac; //0xCC
			uint32_t max_ac; //0xD0
			uint32_t gamble_cost; //0xD4
			uint32_t speed; //0xD8
			uint32_t bit_field1; //0xDC
			uint32_t cost; //0xE0
			uint32_t min_stack; //0xE4
			uint32_t max_stack; //0xE8
			uint32_t spawn_stack; //0xEC
			uint32_t gem_offset; //0xF0
			uint16_t name_str; //0xF4
			uint16_t version; //0xF6
			uint16_t auto_prefix; //0xF8
			uint16_t missile_type; //0xFA
			uint8_t rarity; //0xFC
			uint8_t level; //0xFD
			uint8_t min_damage; //0xFE
			uint8_t max_damage; //0xFF
			uint8_t min_misdamage; //0x100
			uint8_t max_misdamage; //0x101
			uint8_t two_hand_min_damage; //0x102
			uint8_t two_hand_max_damage; //0x103
			uint16_t range_adder; //0x104
			uint16_t str_bonus; //0x106
			uint16_t dex_bonus; //0x108
			uint16_t req_str; //0x10A
			uint16_t req_dex; //0x10C
			uint8_t absorbs; //0x10E
			uint8_t inv_width; //0x10F
			uint8_t inv_height; //0x110
			uint8_t block; //0x111
			uint8_t durability; //0x112
			uint8_t no_durability; //0x11
			uint8_t missile; //0x114
			uint8_t component; //0x115
			uint8_t right_arm; //0x116
			uint8_t left_arm; //0x117
			uint8_t torso; //0x118
			uint8_t legs; //0x119
			uint8_t right_spad; //0x11A
			uint8_t left_spad; //0x11B
			uint8_t two_handed; //0x11C
			uint8_t useable; //0x11D
			uint16_t type; //0x11E
			uint16_t type2; //0x120
			uint16_t subtype; //0x122
			uint16_t drop_sound; //0x124
			uint16_t use_sound; //0x126
			uint8_t drop_sfx_frame; //0x128
			uint8_t unique; //0x129
			uint8_t quest; //0x12A
			uint8_t quest_diff_check; //0x12B
			uint8_t transparent; //0x12C
			uint8_t trans_tbl; //0x12D
			uint8_t pad0_x12_e; //0x12E
			uint8_t light_radius; //0x12F
			uint8_t belt; //0x130
			uint8_t auto_belt; //0x131
			uint8_t stackable; //0x132
			uint8_t spawnable; //0x133
			uint8_t spell_icon; //0x134
			uint8_t dur_warning; //0x135
			uint8_t quantity_warning; //0x136
			uint8_t has_inv; //0x137
			uint8_t gem_sockets; //0x138
			uint8_t transmogrify; //0x139
			uint8_t transmog_min; //0x13A
			uint8_t transmog_max; //0x13B
			uint8_t hit_class; //0x13C
			uint8_t one_or_two_handed; //0x13D
			uint8_t gem_apply_type; //0x13E
			uint8_t level_req; //0x13F
			uint8_t magic_lvl; //0x140
			uint8_t transform; //0x141
			uint8_t inv_trans; //0x142
			uint8_t compact_save; //0x143
			uint8_t skip_name; //0x144
			uint8_t nameable; //0x145
			uint8_t akara_min; //0x146
			uint8_t gheed_min; //0x147
			uint8_t charsi_min; //0x148
			uint8_t fara_min; //0x149
			uint8_t lysander_min; //0x14A
			uint8_t drognan_min; //0x14B
			uint8_t hralti_min; //0x14C
			uint8_t alkor_min; //0x14D
			uint8_t ormus_min; //0x14E
			uint8_t elzix_min; //0x14F
			uint8_t asheara_min; //0x150
			uint8_t cain_min; //0x151
			uint8_t halbu_min; //0x152
			uint8_t jamella_min; //0x153
			uint8_t malah_min; //0x154
			uint8_t larzuk_min; //0x155
			uint8_t drehya_min; //0x156
			uint8_t akara_max; //0x157
			uint8_t gheed_max; //0x158
			uint8_t charsi_max; //0x159
			uint8_t fara_max; //0x15A
			uint8_t lysander_max; //0x15B
			uint8_t drognan_max; //0x15C
			uint8_t hralti_max; //0x15D
			uint8_t alkor_max; //0x15E
			uint8_t ormus_max; //0x15F
			uint8_t elzix_max; //0x160
			uint8_t asheara_max; //0x161
			uint8_t cain_max; //0x162
			uint8_t halbu_max; //0x163
			uint8_t jamella_max; //0x164
			uint8_t malah_max; //0x165
			uint8_t larzuk_max; //0x166
			uint8_t drehya_max; //0x167
			uint8_t akara_magic_min; //0x168
			uint8_t gheed_magic_min; //0x169
			uint8_t charsi_magic_min; //0x16A
			uint8_t fara_magic_min; //0x16B
			uint8_t lysander_magic_min; //0x16C
			uint8_t drognan_magic_min; //0x16D
			uint8_t hralti_magic_min; //0x16E
			uint8_t alkor_magic_min; //0x16F
			uint8_t ormus_magic_min; //0x170
			uint8_t elzix_magic_min; //0x171
			uint8_t asheara_magic_min; //0x172
			uint8_t cain_magic_min; //0x173
			uint8_t halbu_magic_min; //0x174
			uint8_t jamella_magic_min; //0x175
			uint8_t malah_magic_min; //0x176
			uint8_t larzuk_magic_min; //0x177
			uint8_t drehya_magic_min; //0x178
			uint8_t akara_magic_max; //0x179
			uint8_t gheed_magic_max; //0x17A
			uint8_t charsi_magic_max; //0x17B
			uint8_t fara_magic_max; //0x17C
			uint8_t lysander_magic_max; //0x17D
			uint8_t drognan_magic_max; //0x17E
			uint8_t hralti_magic_max; //0x17F
			uint8_t alkor_magic_max; //0x180
			uint8_t ormus_magic_max; //0x181
			uint8_t elzix_magic_max; //0x182
			uint8_t asheara_magic_max; //0x183
			uint8_t cain_magic_max; //0x184
			uint8_t halbu_magic_max; //0x185
			uint8_t jamella_magic_max; //0x186
			uint8_t malah_magic_max; //0x187
			uint8_t larzuk_magic_max; //0x188
			uint8_t drehya_magic_max; //0x189
			uint8_t akara_magic_lvl; //0x18A
			uint8_t gheed_magic_lvl; //0x18B
			uint8_t charsi_magic_lvl; //0x18C
			uint8_t fara_magic_lvl; //0x18D
			uint8_t lysander_magic_lvl; //0x18E
			uint8_t drognan_magic_lvl; //0x18F
			uint8_t hralti_magic_lvl; //0x190
			uint8_t alkor_magic_lvl; //0x191
			uint8_t ormus_magic_lvl; //0x192
			uint8_t elzix_magic_lvl; //0x193
			uint8_t asheara_magic_lvl; //0x194
			uint8_t cain_magic_lvl; //0x195
			uint8_t halbu_magic_lvl; //0x196
			uint8_t jamella_magic_lvl; //0x197
			uint8_t malah_magic_lvl; //0x198
			uint8_t larzuk_magic_lvl; //0x199
			uint8_t drehya_magic_lvl; //0x19A
			uint8_t pad0_x19_b; //0x19B
			uint32_t nightmare_upgrade; //0x19C
			uint32_t hell_upgrade; //0x1A0
			uint8_t perm_store_item; //0x1A4
			uint8_t multi_buy; //0x1A5
			uint16_t pad0_x1_a6; //0x1A6
		};
	}
}