# Epic 7 - Questing, Narrative, and Faction Reputation ## Source Anchors - Master epic reference: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Core Epic Map, System Modules Epic 7 - Related modules: E7.M1, E7.M2, E7.M3, E7.M4 ## Ownership and success (Level 1) - **Ownership focus:** Narrative Design + Quest Design + Tools - **Success criteria:** Quest content provides clear progression direction, worldbuilding depth, and durable midgame engagement. ## Objective Provide a quest state machine and reward routing that ties gathering, crafting, and combat into guided and repeatable content, plus faction reputation and contract generation for midgame durability. ## Module Breakdown ### E7.M1 - QuestStateMachine - Responsibility: Quest start/step/complete state transitions and persistence. - Key contracts: `QuestDef`, `QuestStepState`, `QuestStateTransition` - Dependencies: E3.M2, E5.M1 - Stage target: Prototype ### E7.M2 - RewardAndUnlockRouter - Responsibility: Route quest outputs to XP, items, unlocks, and reputation. - Key contracts: `QuestRewardBundle`, `UnlockGrant`, `RewardDeliveryEvent` - Dependencies: E2.M2, E3.M3, E7.M1 - Stage target: Prototype ### E7.M3 - FactionReputationLedger - Responsibility: Track faction standing and gate faction-specific contracts/content. - Key contracts: `FactionStanding`, `ReputationDelta`, `FactionGateRule` - Dependencies: E7.M1, E7.M2 - Stage target: Pre-production ### E7.M4 - ContractMissionGenerator - Responsibility: Semi-procedural repeatable contract generation with difficulty/reward bands. - Key contracts: `ContractTemplate`, `ContractSeed`, `ContractOutcome` - Dependencies: E4.M1, E5.M3, E7.M3 - Stage target: Pre-production ## Implementation Slices (Backlog-Ready) ### Slice 1 - Quest core and persistence - Scope: E7.M1 supporting branching steps and failure/reset rules for prototype chain. - Dependencies: E3.M2, E5.M1 (gather/craft/encounter hooks on main) - Acceptance criteria: - 3-5 onboarding quests + one chain requiring gather/craft/combat complete without duped rewards. - Telemetry hooks: `quest_start`, `quest_step_complete`, `quest_complete`, funnel times. **Linear backlog:** [E7M1-prototype-backlog.md](../../plans/E7M1-prototype-backlog.md) — [NEO-112](https://linear.app/neon-sprawl/issue/NEO-112) → [NEO-123](https://linear.app/neon-sprawl/issue/NEO-123); client capstone **E7M1-12** [NEO-123](https://linear.app/neon-sprawl/issue/NEO-123). Verify in **Godot**, not Bruno-only. ### Slice 2 - Reward and unlock routing - Scope: E7.M2 delivering XP, items, blueprint unlocks, and flags for world gates. - Dependencies: E7.M1, E2.M2, E3.M3 - Acceptance criteria: - Idempotent reward delivery; replays cannot double-claim. - Telemetry hooks: `reward_delivery`, `unlock_granted`. **Linear backlog:** [E7M2-prototype-backlog.md](../../plans/E7M2-prototype-backlog.md) — [NEO-124](https://linear.app/neon-sprawl/issue/NEO-124) → [NEO-132](https://linear.app/neon-sprawl/issue/NEO-132); client capstone **E7M2-09** [NEO-132](https://linear.app/neon-sprawl/issue/NEO-132). Verify quest completion rewards in **Godot**, not Bruno-only. Encounter loot ([E5.M3](../modules/E5_M3_EncounterAndRewardTables.md)) unchanged in Slice 2. ### Slice 3 - Faction ledger (pre-production) - Scope: E7.M3 gating at least one faction line and mission set. - Dependencies: E7.M1, E7.M2 - Acceptance criteria: - Reputation deltas auditable; gates fail closed on tamper. - Player earns Grid Operators rep from operator chain; faction-gated quest accept denied below threshold. - Telemetry hooks: `reputation_delta`, `faction_gate_blocked`. **Linear backlog:** [E7M3-pre-production-backlog.md](../../plans/E7M3-pre-production-backlog.md) — [NEO-133](https://linear.app/neon-sprawl/issue/NEO-133) → [NEO-143](https://linear.app/neon-sprawl/issue/NEO-143); client capstone **E7M3-11** [NEO-143](https://linear.app/neon-sprawl/issue/NEO-143). Verify faction standing + gate deny in **Godot**, not Bruno-only. ### Slice 4 - Contract generator (pre-production) - Scope: E7.M4 emitting repeatable contracts from templates by zone difficulty. - Dependencies: E4.M1, E5.M3, E7.M3 - Acceptance criteria: - Generated contracts validate against economy and parity rules. - Telemetry hooks: `contract_issued`, `contract_complete`, reward anomalies. **Linear backlog:** [E7M4-pre-production-backlog.md](../../plans/E7M4-pre-production-backlog.md) — [NEO-144](https://linear.app/neon-sprawl/issue/NEO-144) → [NEO-154](https://linear.app/neon-sprawl/issue/NEO-154); client capstone **E7M4-11** [NEO-154](https://linear.app/neon-sprawl/issue/NEO-154). Verify repeatable contract issue + payout in **Godot**, not Bruno-only. ## Risks and Mitigations - Risk: Quest scripting becomes engineering-heavy for solo dev. - Mitigation: Data-first `QuestDef` schema; templates in decomposition tools path. - Risk: Rewards break parity or economy. - Mitigation: Lint bundles against E6.M4 and E3.M5 policies. ## Definition of Done - Prototype quest counts and integrated chain meet master plan minimums **in the Godot client** (Slice 1 capstone [NEO-123](../../manual-qa/NEO-123.md)), not Bruno-only. - Slice 2 quest **completion** rewards (items + skill XP) visible in Godot with idempotent delivery (capstone [NEO-132](../../manual-qa/NEO-132.md)), not Bruno-only. - Slice 3 faction rep + gated quest line visible in Godot (capstone [NEO-143](../../manual-qa/NEO-143.md)), not Bruno-only. - Slice 4 repeatable contract issue + encounter-clear payout visible in Godot (capstone [NEO-154](../../manual-qa/NEO-154.md)), not Bruno-only. - Pre-production adds contracts (E7.M4) with validation beyond Slice 3.