- Introduce the MissionDebrief component to display after-action reports, including XP, rewards, and squad status. - Implement the MissionGenerator class to create procedural side missions, enhancing replayability and resource management. - Update mission schema to include mission objects for INTERACT objectives, improving mission complexity. - Enhance GameLoop and MissionManager to support new mission features and interactions. - Add tests for MissionDebrief and MissionGenerator to ensure functionality and integration within the game architecture.
139 lines
4.6 KiB
Markdown
139 lines
4.6 KiB
Markdown
# **Procedural Mission Specification: Side Ops**
|
|
|
|
This document defines the logic for generating "Filler" missions (Side Ops). These missions provide infinite replayability, resource grinding, and recovery options for the player.
|
|
|
|
## **1. System Architecture**
|
|
|
|
Class: MissionGenerator
|
|
Responsibility: Factory that produces temporary Mission objects adhering to the Mission.ts interface.
|
|
Triggers:
|
|
|
|
- **Daily Reset:** When the campaign day advances.
|
|
- **Mission Complete:** Replenish the board after a run.
|
|
|
|
## **2. Generation Logic**
|
|
|
|
To generate a Side Op, the system inputs the **Campaign Tier** (1-5) and **Unlocked Regions**.
|
|
|
|
### **A. Naming Convention**
|
|
|
|
Missions use a context-aware "Operation: [Adjective] [Noun] [Numeral]" format.
|
|
|
|
Noun Selection (Context-Aware):
|
|
The noun is selected based on the Mission Archetype to imply the goal.
|
|
|
|
- **Skirmish (Combat):** _Thunder, Storm, Iron, Fury, Shield, Hammer, Wrath, Wall, Strike, Anvil._
|
|
- **Salvage (Loot):** _Cache, Vault, Echo, Spark, Core, Grip, Harvest, Trove, Fragment, Salvage._
|
|
- **Assassination (Kill):** _Viper, Dagger, Fang, Night, Shadow, End, Hunt, Razor, Ghost, Sting._
|
|
- **Recon (Explore):** _Eye, Watch, Path, Horizon, Whisper, Dawn, Light, Step, Vision, Scope._
|
|
|
|
**Adjective Selection (General Flavor):**
|
|
|
|
- _Silent, Broken, Red, Crimson, Shattered, Frozen, Burning, Dark, Blind, Hidden, Lost, Ancient, Hollow, Swift._
|
|
|
|
Legacy Logic (Series Generation):
|
|
The generator checks the player's MissionHistory.
|
|
|
|
- If "Operation: Silent Viper" was completed previously, the new mission is named "Operation: Silent Viper **II**".
|
|
- This creates the illusion of persistent, ongoing military campaigns.
|
|
|
|
### **B. Biome Selection**
|
|
|
|
- Randomly select from **Unlocked Regions**.
|
|
- _Weighting:_ 40% chance for the most recently unlocked region (to keep content relevant).
|
|
|
|
### **C. Mission Archetypes (Objectives)**
|
|
|
|
The generator picks one of four templates and hydrates it with specific data.
|
|
|
|
#### **1. Skirmish (Standard Combat)**
|
|
|
|
- **Objective:** ELIMINATE_ALL.
|
|
- **Description:** "Clear the sector of hostile forces."
|
|
- **Config:** Standard room count, Medium density.
|
|
- **Turn Limit:** None.
|
|
|
|
#### **2. Salvage (Loot Run)**
|
|
|
|
- **Objective:** INTERACT with 3-5 "Supply Crates".
|
|
- **Description:** "Recover lost supplies before the enemy secures them."
|
|
- **Config:** High density of obstacles/cover.
|
|
- **Reward Bonus:** Higher chance for ITEMS or MATERIALS.
|
|
|
|
#### **3. Assassination (Elite Hunt)**
|
|
|
|
- **Objective:** ELIMINATE_UNIT (Specific Target ID).
|
|
- **Description:** "A High-Value Target has been spotted. Eliminate them."
|
|
- **Config:** Spawns a named Elite Unit (e.g., "Krag the Breaker") with +50% Stats.
|
|
- **Reward Bonus:** High CURRENCY payout.
|
|
|
|
#### **4. Recon (Scouting)**
|
|
|
|
- **Objective:** REACH_ZONE (3 separate zones on the map).
|
|
- **Description:** "Survey the designated coordinates."
|
|
- **Config:** Large map size, Low enemy density (Mobility focus).
|
|
- **Turn Limit:** Tight (Speed is key).
|
|
|
|
## **3. Scaling & Rewards**
|
|
|
|
### **Difficulty Tiers**
|
|
|
|
The generator adjusts difficulty_tier in the config, which the GameLoop uses to scale enemy stats.
|
|
|
|
| Tier | Name | Enemy Lvl | Reward Multiplier |
|
|
| :--- | :------- | :-------- | :---------------- |
|
|
| 1 | Recon | 1-2 | 1.0x |
|
|
| 2 | Patrol | 3-4 | 1.5x |
|
|
| 3 | Conflict | 5-6 | 2.5x |
|
|
| 4 | War | 7-8 | 4.0x |
|
|
| 5 | Suicide | 9-10 | 6.0x |
|
|
|
|
### **Reward Generation**
|
|
|
|
Rewards are calculated dynamically:
|
|
|
|
- **Currency:** Base (50) _ TierMultiplier _ Random(0.8, 1.2).
|
|
- **Items:** 20% chance per Tier to drop a Chest Key or Item.
|
|
- **Reputation:** +10 Reputation with the Region's owner (e.g., Missions in Rusting Wastes give +Cogwork Rep).
|
|
|
|
## **4. Example Generated JSON**
|
|
|
|
```json
|
|
{
|
|
"id": "SIDE_OP_170932",
|
|
"type": "SIDE_QUEST",
|
|
"config": {
|
|
"title": "Operation: Crimson Viper II",
|
|
"description": "The target escaped last time. Finish the job in the Crystal Spires.",
|
|
"difficulty_tier": 2,
|
|
"recommended_level": 3
|
|
},
|
|
"biome": {
|
|
"type": "BIOME_CRYSTAL_SPIRES",
|
|
"generator_config": {
|
|
"seed_type": "RANDOM",
|
|
"size": { "x": 20, "y": 12, "z": 20 },
|
|
"room_count": 6
|
|
}
|
|
},
|
|
"deployment": { "squad_size_limit": 4 },
|
|
"objectives": {
|
|
"primary": [
|
|
{
|
|
"id": "OBJ_HUNT",
|
|
"type": "ELIMINATE_UNIT",
|
|
"target_def_id": "ENEMY_ELITE_ECHO",
|
|
"description": "Eliminate the Aether Echo Prime."
|
|
}
|
|
]
|
|
},
|
|
"rewards": {
|
|
"guaranteed": {
|
|
"xp": 300,
|
|
"currency": { "aether_shards": 120 }
|
|
},
|
|
"faction_reputation": { "ARCANE_DOMINION": 15 }
|
|
},
|
|
"expiresIn": 3
|
|
}
|
|
```
|