# DA_ObjectiveData — Data Asset

**Parent Class:** `Primary Data Asset` (Blueprint: `PrimaryDataAsset`)
**Dependencies:** [`BPC_ObjectiveSystem`](../07-narrative/59_BPC_ObjectiveSystem.md), [`WBP_ObjectiveDisplay`](../06-ui/54_WBP_ObjectiveDisplay.md)
**Purpose:** Defines objective content — objective text, requirements, completion conditions, linked narrative flags, and reward data.

---

## Variables / Structure

| Field | Type | Description |
|-------|------|-------------|
| `ObjectiveTag` | `Gameplay Tag` | Unique tag for this objective |
| `ObjectiveText` | `Text` | Display text for HUD/journal |
| `ObjectiveCategory` | `EObjectiveCategory` | Main, Side, Hidden, Tutorial |
| `PrerequisiteFlags` | `Array<Gameplay Tag>` | Narrative flags required before objective activates |
| `CompletionFlags` | `Array<Gameplay Tag>` | Flags set when objective completes |
| `bIsOptional` | `Boolean` | Objective can be skipped |
| `ObjectiveLocation` | `Vector` | World location for marker |
| `RewardItems` | `Array<Primary Asset Id>` | Items granted on completion |
| `RewardExperience` | `Integer` | XP awarded |
| `LinkedEndingWeight` | `Float` | Score contribution to ending evaluation |

---

## Gameplay Tags
- Namespace: `Objective.<Category>.<Name>` (e.g., `Objective.Main.FindKey`, `Objective.Side.RescueNPC`)

---

## Validation Rules
- `ObjectiveTag` must be unique
- `ObjectiveText` must not be empty
- At least one `CompletionFlag` required (unless narrative-driven)

---

## Example Data

| Field | Value |
|-------|-------|
| ObjectiveTag | `Objective.Main.EscapeHospital` |
| ObjectiveText | "Escape the abandoned hospital" |
| ObjectiveCategory | Main |
| CompletionFlags | `Narrative.EscapedHospital` |
| RewardExperience | 500 |

---

## Consumed By
- [`BPC_ObjectiveSystem`](../07-narrative/39_BPC_ObjectiveSystem.md)
- [`WBP_ObjectiveDisplay`](../06-ui/WBP_ObjectiveDisplay.md)
- [`BPC_EndingAccumulator`](../07-narrative/BPC_EndingAccumulator.md)

## Reuse Notes
- Objectives are data-driven; no blueprint logic changes needed for new objectives
- `PrerequisiteFlags` gate objective activation behind narrative flags
- `LinkedEndingWeight` feeds into ending evaluation system