#pragma once #include #include namespace mods::skillslots { // Weapon sets and combat-art slots per inventory: the game's 5 plus 2 kept in // a shadow inventory (see skillslots.cpp). constexpr unsigned kSlots = 7; constexpr unsigned kGameSlots = 5; // cInventoryEntry layout (docs/skill-slots.md). constexpr size_t kInventorySize = 0x1180; constexpr size_t kWeaponSets = 0xc18; // kGameSlots x 2 hands x {item id, 2 dwords} constexpr size_t kWeaponSetSize = 0x18; constexpr size_t kWeaponHandSize = 0xc; constexpr size_t kArtSlots = 0xc90; // kGameSlots x 2 variants x {u16 type, u16 data, 4 dwords} constexpr size_t kArtSlotSize = 0x28; constexpr size_t kArtEntrySize = 0x14; constexpr size_t kSelected = 0xd58; // u16 [0] weapon set, [1] art slot // The shadow inventory holding slots 6-7 (at indices 0-1) of `inventory`, or // null if it has none yet and `create` is false. uint8_t* ShadowFor(const void* inventory, bool create); } // namespace mods::skillslots