# BPC_ItemCombineSystem — Item Combine System

**Parent Class:** `ActorComponent`
**Category:** Inventory
**Target UE Version:** 5.5–5.7
**Build Phase:** 3 — Inventory

## 1. Overview

`BPC_ItemCombineSystem` handles item combination and crafting — combining two or more inventory items to create new items. Supports recipe-based combinations, ingredient validation, and result generation.

## 2. Enums

### `E_CombineResult`
| Value | Description |
|-------|-------------|
| `Success` | Items combined successfully |
| `MissingIngredients` | Not all required items present |
| `IncompatibleItems` | Items cannot be combined |
| `InventoryFull` | No space for result item |
| `RecipeNotFound` | No recipe matches combination |

## 3. Variables

| Variable | Type | Description |
|----------|------|-------------|
| `Recipes` | `TArray<DA_RecipeData*>` | Loaded recipe data assets |
| `CombineCooldown` | `float` | Time between combine operations |
| `bConsumeIngredients` | `bool` | Remove ingredients on combine |

## 4. Functions

| Function | Description |
|----------|-------------|
| `CombineItems` | Attempts to combine two items by slot index |
| `GetValidRecipes` | Returns all recipes matching current inventory items |
| `PreviewResult` | Shows result item without consuming ingredients |
| `CanCombine` | Checks if two items have a valid recipe |

## 5. Event Dispatchers

| Dispatcher | Payload | Description |
|------------|---------|-------------|
| `OnCombineSuccess` | `S_InventoryEntry Result` | Items combined |
| `OnCombineFailed` | `E_CombineResult Reason` | Combination failed |
| `OnRecipeDiscovered` | `DA_RecipeData Recipe` | New recipe found |

## 6. Dependencies

| System | Relationship |
|--------|--------------|
| `BPC_InventorySystem` | Reads and modifies inventory items |
| `DA_RecipeData` | Recipe definitions |

## 7. Reuse Notes
- Data-driven recipe system; designers add recipes via data assets