#pragma once #pragma pattern_limit 1500000 #include struct header { u8 unk[3]; bool flag; u8 unk2; u32 amountOfItems; }; enum ItemType :u32{ Equipped = 0, CashEquiped = 1, Equip = 2, Etc = 3, Cash = 4, Warehouse = 5, GiftBox = 6 }; enum CharacterJob : u32 { NULL, Swordsman = 1, /// 01 Mage, /// 02 Thief, /// 03 Scout, /// 04 Warrior, /// 05 Knight, /// 06 Priest, /// 07 Wizard, /// 08 Rogue, /// 09 Ninja, /// 10 Gunner, /// 11 Archer, /// 12 Berserker, /// 13 Pladin, /// 14 Saint, /// 15 Warlock, /// 16 Knave, /// 17 Assassin, /// 18 Gunslinger, /// 19 Ranger, /// 20 Juggernaut, /// 21 Temple_Knight, /// 22 Exorcist, /// 23 Necromancer, /// 24 Raider, /// 25 Nightstalker, /// 26 Sharpshooter, /// 27 Beast_Keeper, /// 28 }; enum Slot : u32{}; enum Gender : u32{}; struct ElementalStats{ u32 minFire; u32 minWater; u32 minDark; u32 minHoly; u32 maxFire; u32 maxWater; u32 maxDark; u32 maxHoly; u32 fire; u32 water; u32 dark; u32 holy; u32 fireResistance; u32 waterResistance; u32 darkResistance; u32 holyResistance; }; struct AttributeStats{ u32 Strength; u32 Dexterity; u32 Intelligence; u32 Vitality; u32 Luck; u32 Wisdom; }; struct CraftMaterial{ u32 firstId; u32 secondId; u32 thirdId; u32 fourthId; u32 firstAmount; u32 secondAmount; u32 thirdAmount; u32 fourthAmount; }; struct ItemOptions{ u32 available; u32 Ids[4]; }; struct ContainedItems{ u16 firstId; u16 secondId; u16 thirdId; u16 fourthId; u16 fifthId; float firstChacne; float secondChance; float thirdChance; float fourthChance; float fifthChance; }; struct Item { u32 Id; u32 IsDisabled; ItemType type; u8 unk[8]; CharacterJob job1; CharacterJob job2; CharacterJob job3; CharacterJob job4; Slot slot1; Slot slot2; u8 unk2[4]; u32 isCash; u8 unk3[4]; u32 Price; u8 unk4[4]; u32 maxAmount; u8 unk5[12]; u32 maxLevelRequired; Gender gender; u32 unkWeaponSomething; u8 unk6[24]; AttributeStats stats; ElementalStats elementalStats; u8 unk7[12]; float Speed; float Jump; u32 defenseStat; u32 magicId; u8 unk8[8]; u32 additionalHealthRecoveryVolume; u8 unk9[4]; u32 additionalManaRecoveryVolume; u8 unk10[12]; u32 additionalHealthPoints; u32 additionalManaPoints; bool isArrow; u8 unk11[7]; u32 additionalEvasionRate; u32 hitRate; u32 chanceToHit; u32 magicalDamage; u32 criticalHitChance; u8 unk12[8]; u32 minAttackDamage; u32 maxAttackDamage; u32 physicalDamage; CraftMaterial craftMaterial; u32 craftResultAmount; u8 unk13[4]; u32 craftResultItem; u8 unk14[16]; u32 frontWearItemIndex; u32 rearWearItemIndex; u32 sheetX; u32 sheetY; u32 sheetWidth; u32 sheetHeight; u32 sheetId; char name[20]; char description[85]; u8 unk15[175]; u32 isEnchantable; u8 unk16[104]; u32 setItems[5]; u32 setId; ItemOptions options; u8 unk17[23]; u8 petId; u8 unk18[20]; u8 hitBoxScaling; u8 unk19[13]; ContainedItems containedItems; u8 minLevelRequired; u8 unk20[3]; }; std::assert(sizeof(Item) == 932, "Struct isn't the right size"); header header @ 0x00; Item items[header.amountOfItems] @0x09;