Advertisement
expired6978

FO4 Equip

Jun 14th, 2017
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.37 KB | None | 0 0
  1.         Actor * actor = DYNAMIC_CAST(thisObj, TESForm, Actor);
  2.         if(actor) {
  3.  
  4.             static std::unordered_map<TESForm*, std::pair<SInt32, UInt16>> stackList;
  5.  
  6.             if(stackList.empty()) {
  7.                 auto inventory = actor->inventoryList;
  8.                 if(inventory)
  9.                 {
  10.                     for(UInt32 i = 0; i < inventory->items.count; i++)
  11.                     {
  12.                         SInt32 s = 0;
  13.                         inventory->items[i].stack->Visit([&](BGSInventoryItem::Stack * stack)
  14.                         {
  15.                             if(stack->flags & BGSInventoryItem::Stack::kFlagEquipped) {
  16.                                 stackList.emplace(inventory->items[i].form, std::make_pair(s, stack->flags));
  17.                                 stack->flags &= ~0xF;
  18.                             }
  19.                             s++;
  20.                             return true;
  21.                         });
  22.                     }
  23.                 }
  24.  
  25.                 CALL_MEMBER_FN(actor->unk300, UpdateEquipment)(actor, 0x11);
  26.             }
  27.             else
  28.             {
  29.                 auto inventory = actor->inventoryList;
  30.                 if(inventory)
  31.                 {
  32.                     for(UInt32 i = 0; i < inventory->items.count; i++)
  33.                     {
  34.                         SInt32 s = 0;
  35.                         auto it = stackList.find(inventory->items[i].form);
  36.                         if(it != stackList.end()) {
  37.                             inventory->items[i].stack->Visit([&](BGSInventoryItem::Stack * stack)
  38.                             {
  39.                                 if(it->second.first == s) {
  40.                                     stack->flags |= it->second.second & 0xF;
  41.                                     return false;
  42.                                 }
  43.  
  44.                                 s++;
  45.                                 return true;
  46.                             });
  47.                         }
  48.                     }
  49.                 }
  50.  
  51.                 CALL_MEMBER_FN(actor->unk300, UpdateEquipment)(actor, 0x11);
  52.                 stackList.clear();
  53.             }
  54.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement