# BPC_KeyItemSystem — Key Item System **Parent Class:** `ActorComponent` **Category:** Inventory **Target UE Version:** 5.5–5.7 **Build Phase:** 3 — Inventory ## 1. Overview `BPC_KeyItemSystem` manages key items — story-critical objects that unlock doors, trigger narrative events, or are required for puzzle completion. Tracks acquired keys, provides query for door/puzzle unlock checks, and supports key usage notifications. ## 2. Variables | Variable | Type | Description | |----------|------|-------------| | `AcquiredKeys` | `TArray` | Tags of all acquired key items | | `bShowKeyNotifications` | `bool` | Toast on key pickup | | `KeyItemCategory` | `E_ItemCategory` | KeyItem category filter | ## 3. Functions | Function | Description | |----------|-------------| | `HasKey` | Checks if player has a specific key by tag | | `AddKey` | Registers a key item acquisition | | `RemoveKey` | Removes a key (if consumed) | | `GetAllKeys` | Returns all acquired key tags | | `CanUnlock` | Checks if player meets unlock requirements for a target | ## 4. Event Dispatchers | Dispatcher | Payload | Description | |------------|---------|-------------| | `OnKeyAcquired` | `FGameplayTag KeyTag` | New key picked up | | `OnKeyUsed` | `FGameplayTag KeyTag`, `AActor* Target` | Key used on target | | `OnKeyRemoved` | `FGameplayTag KeyTag` | Key consumed/removed | ## 5. Dependencies | System | Relationship | |--------|--------------| | `BPC_InventorySystem` | Keys as inventory items | | `BP_DoorActor` | Door unlock queries | | `BP_PuzzleDeviceActor` | Puzzle unlock gates | | `BPC_NarrativeStateSystem` | Key-based narrative flags | ## 6. Reuse Notes - Keys use gameplay tags for generic matching (any key with same tag works) - Supports consumable keys (removed after single use) and persistent keys