# Inventory Systems — Asset Creation Sheet (10 assets)

> **UE5 Path:** `Content/Framework/Inventory/`

---

## C++ Already Done
- `BPC_InventorySystem` (31) — attach directly to pawn
- `DA_ItemData` (07) — create Data Asset instances per item

---

## BP Assets to Create

### BP_ItemPickup (Actor)
**Parent:** `Actor` → Add StaticMesh, SphereCollision, RotatingMovement

| Variable | Type | Default |
|----------|------|---------|
| `ItemData` | `DA_ItemData` | Assign |
| `Quantity` | Integer | `1` |
| `BobAmplitude` | Float | `0.5` |
| `BobSpeed` | Float | `2.0` |

**Implements:** `I_Interactable`

**OnInteract:**
```
  ├─ Get Player → BPC_InventorySystem → CanAddItem(ItemData)?
  │   True → AddItem(ItemData, Quantity) → Destroy self
  │   False → Show "Inventory Full" prompt
```

### BPC_ContainerInventory (Component)
**Attach to:** Chests, drawers, cabinets, safes

| Variable | Type | Default |
|----------|------|---------|
| `ContainerSlots` | `Array<FInventorySlot>` | Empty |
| `ContainerSize` | Integer | `12` |
| `bIsOpen` | Boolean | `false` |

### BPC_ActiveItemSystem (Component)
**Attach to:** Player pawn — manages quick-slot item

| Variable | Type | Default |
|----------|------|---------|
| `QuickSlotCount` | Integer | `4` |
| `ActiveItemIndex` | Integer | `0` |
| `QuickSlots` | `Array<DA_ItemData>` | Empty |

### BPC_CollectibleTracker (Component)
**Attach to:** Player pawn

| Variable | Type | Default |
|----------|------|---------|
| `FoundCollectibles` | `Array<GameplayTag>` | Empty |
| `TotalCollectibles` | Integer | `0` |
| `SetBonuses` | `Array<GameplayTag>` | Empty |

### BPC_ConsumableSystem (Component)
**Attach to:** Player pawn

| Variable | Type | Default |
|----------|------|---------|
| `LastConsumedItem` | `DA_ItemData` | None |
| `UseCooldown` | Float | `0.5` |

**UseItem(ItemData):**
```
  ├─ BPC_HealthSystem → Heal(Item.ConsumableData.HealthRestore)
  ├─ BPC_StressSystem → AddStress(-Item.ConsumableData.StressReduce)
  └─ BPC_InventorySystem → RemoveItem(Item, 1)
```

### BPC_DocumentArchiveSystem (Component)
| Variable | Type |
|----------|------|
| `ArchivedDocuments` | `Array<GameplayTag>` |
| `bHasUnread` | Boolean |

### BPC_EquipmentSlotSystem (Component)
| Variable | Type | Default |
|----------|------|---------|
| `EquipmentSlots` | `Array<FInventorySlot>` | 6 slots |
| `EquippedWeapon` | `DA_ItemData` | None |

### BPC_ItemCombineSystem (Component)
| Variable | Type |
|----------|------|
| `CraftingRecipes` | `Array<S_CraftingRecipe>` |

### BPC_JournalSystem (Component)
| Variable | Type |
|----------|------|
| `ActiveQuests` | `Array<GameplayTag>` |
| `CompletedQuests` | `Array<GameplayTag>` |

### BPC_KeyItemSystem (Component)
| Variable | Type |
|----------|------|
| `KeyItems` | `Array<GameplayTag>` |
| `bAutoUseOnTarget` | Boolean |

---

## Test These
- [ ] Drop item pickup in level → walk over → item added to inventory
- [ ] Use health pack → health increases, item removed from inventory
- [ ] Combine items → new item appears in inventory
- [ ] Equip weapon → appears on character mesh
