# BPC_PlayerRespawnSystem — Actor Component (Respawn)

**File:** [`Content/Framework/Save/BPC_PlayerRespawnSystem`](Content/Framework/Save/BPC_PlayerRespawnSystem.uasset)

**Purpose:** Handles the actual respawn mechanics after death outcome is determined. Reads respawn transform from `BP_Checkpoint`, applies state restoration from `SS_SaveManager`, and runs the respawn transition.

**Depends On:** [`BPC_DeathHandlingSystem`](BPC_DeathHandlingSystem.md), [`BP_Checkpoint`](BP_Checkpoint.md), [`SS_SaveManager`](35_SS_SaveManager.md), [`BPC_HealthSystem`](../02-player/08_BPC_HealthSystem.md), [`BPC_StaminaSystem`](../02-player/09_BPC_StaminaSystem.md), [`BPC_StressSystem`](../02-player/10_BPC_StressSystem.md)
**Used By:** [`BPC_DeathHandlingSystem`](BPC_DeathHandlingSystem.md) (orchestrator)

---

## Variables

| Name | Type | Description |
|------|------|-------------|
| `RespawnDelay` | Float | Seconds before respawn after death (default 2.0) |
| `RespawnFadeDuration` | Float | Seconds for camera fade (default 1.0) |
| `bRestoreHealthOnRespawn` | Bool | Should health be fully restored? (default true) |
| `HealthRestorePercent` | Float | If bRestoreHealthOnRespawn is false, what % HP to restore (0.0-1.0) |
| `bClearStressOnRespawn` | Bool | Reset stress to minimum on respawn? (default true) |
| `bRestoreStaminaOnRespawn` | Bool | Reset stamina to maximum on respawn? (default true) |

---

## Functions

| Name | Inputs | Outputs | Description |
|------|--------|---------|-------------|
| `RespawnPlayer` | Outcome: E_DeathOutcome, Context: S_DeathContext | — | Orchestrates the full respawn sequence |
| `GetRespawnTransform` | — | Transform | Delegates to BP_Checkpoint |
| `ApplyRespawnState` | — | — | Restores health, stamina, stress via their respective components |
| `ResetPlayerAtTransform` | Transform: Transform | — | Moves the character to the respawn location |
| `PlayRespawnTransition` | — | — | Camera fade-in, post-process effects |

---

## Event Dispatchers

| Name | Parameters | Fired When |
|------|-----------|------------|
| `OnRespawnStarted` | Outcome: E_DeathOutcome | Respawn sequence begins |
| `OnRespawnCompleted` | — | Player is fully respawned and controllable |
| `OnRespawnFailed` | Reason: FText | Respawn could not be completed |

---

## Blueprint Flow

```
[RespawnPlayer: Outcome, Context]
  └─► Broadcast OnRespawnStarted(Outcome)
  └─► Delay RespawnDelay seconds
  └─► GetRespawnTransform() → RespawnLocation
  └─► If RespawnLocation is invalid:
         Broadcast OnRespawnFailed("No valid respawn point")
         return
  └─► ResetPlayerAtTransform(RespawnLocation)
  └─► ApplyRespawnState()
  └─► PlayRespawnTransition()
  └─► Re-enable player input
  └─► Broadcast OnRespawnCompleted

[ApplyRespawnState]
  └─► If bRestoreHealthOnRespawn:
         BPC_HealthSystem.SetHealth(MaxHealth)
  └─► Else:
         BPC_HealthSystem.SetHealth(MaxHealth * HealthRestorePercent)
  └─► If bClearStressOnRespawn:
         BPC_StressSystem.ResetStress()
  └─► If bRestoreStaminaOnRespawn:
         BPC_StaminaSystem.SetStamina(MaxStamina)

[GetRespawnTransform]
  └─► Get BP_Checkpoint from Owner
  └─► Return BP_Checkpoint.GetRespawnTransform()
```

---

## Communications With

| Target System | Method | Why |
|---------------|--------|-----|
| [`BPC_DeathHandlingSystem`](BPC_DeathHandlingSystem.md) | Direct call | Orchestrator triggers respawn |
| [`BP_Checkpoint`](BP_Checkpoint.md) | Direct call | Get respawn transform |
| [`BPC_HealthSystem`](../02-player/08_BPC_HealthSystem.md) | Direct call | Restore health on respawn |
| [`BPC_StaminaSystem`](../02-player/09_BPC_StaminaSystem.md) | Direct call | Restore stamina on respawn |
| [`BPC_StressSystem`](../02-player/10_BPC_StressSystem.md) | Direct call | Reset stress on respawn |
| [`SS_SaveManager`](35_SS_SaveManager.md) | Direct call | Load respawn state |
| [`WBP_HUDController`](../06-ui/WBP_HUDController.md) | Dispatcher | Fade transitions |

---

## Reuse Notes
- RespawnDelay and RespawnFadeDuration are configurable per difficulty level
- State restoration values (health %, stress reset, stamina) can be tuned via data assets
- Split from original bundled `31_BPC_DeathHandlingSystem.md` per Clean Slate refactoring plan