Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Actor * actor = DYNAMIC_CAST(thisObj, TESForm, Actor);
- if(actor) {
- static std::unordered_map<TESForm*, std::pair<SInt32, UInt16>> stackList;
- if(stackList.empty()) {
- auto inventory = actor->inventoryList;
- if(inventory)
- {
- for(UInt32 i = 0; i < inventory->items.count; i++)
- {
- SInt32 s = 0;
- inventory->items[i].stack->Visit([&](BGSInventoryItem::Stack * stack)
- {
- if(stack->flags & BGSInventoryItem::Stack::kFlagEquipped) {
- stackList.emplace(inventory->items[i].form, std::make_pair(s, stack->flags));
- stack->flags &= ~0xF;
- }
- s++;
- return true;
- });
- }
- }
- CALL_MEMBER_FN(actor->unk300, UpdateEquipment)(actor, 0x11);
- }
- else
- {
- auto inventory = actor->inventoryList;
- if(inventory)
- {
- for(UInt32 i = 0; i < inventory->items.count; i++)
- {
- SInt32 s = 0;
- auto it = stackList.find(inventory->items[i].form);
- if(it != stackList.end()) {
- inventory->items[i].stack->Visit([&](BGSInventoryItem::Stack * stack)
- {
- if(it->second.first == s) {
- stack->flags |= it->second.second & 0xF;
- return false;
- }
- s++;
- return true;
- });
- }
- }
- }
- CALL_MEMBER_FN(actor->unk300, UpdateEquipment)(actor, 0x11);
- stackList.clear();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement