- Introduce the ResearchManager to manage tech trees, node unlocking, and passive effects, enhancing gameplay depth. - Update GameStateManager to integrate the ResearchManager, ensuring seamless data handling for research states. - Implement lazy loading for mission definitions and class data to improve performance and resource management. - Enhance UI components, including the ResearchScreen and MissionBoard, to support new research features and mission prerequisites. - Add comprehensive tests for the ResearchManager and related UI components to validate functionality and integration within the game architecture.
105 lines
3.8 KiB
Markdown
105 lines
3.8 KiB
Markdown
# **Research Specification: The Ancient Archive**
|
|
|
|
This document defines the UI and Logic for the Research Facility. This is the primary sink for **Ancient Cores** (Rare Currency) and provides global, permanent buffs to the campaign.
|
|
|
|
## **1. Context & Unlock**
|
|
|
|
What is it?
|
|
A facility where the player studies recovered technology and magical theory to improve the efficiency of their operation. Unlike Class Mastery (which buffs specific units), Research buffs the player's infrastructure.
|
|
**How is it unlocked?**
|
|
|
|
- **Requirement:** Complete Story Mission 3 ("The Buried Library").
|
|
- **Narrative Event:** The player recovers a damaged "Archive Core" AI. Installing it in the Hub opens the Research tab.
|
|
|
|
## **2. Visual Design & Layout**
|
|
|
|
**Setting:** A cluttered corner of the camp filled with glowing blue hologram projectors and piles of scrolls.
|
|
|
|
- **Vibe:** Intellectual, mystical, high-tech.
|
|
|
|
**Layout:**
|
|
|
|
- **Header:** "Ancient Archive". Displays **Ancient Cores** count (Large).
|
|
- **Main View (The Tree):** A horizontal scrolling view of 3 distinct "Tech Trees".
|
|
1. **Logistics (Green):** Economic and Roster upgrades.
|
|
2. **Intelligence (Blue):** Map and Enemy info upgrades.
|
|
3. **Field Ops (Red):** Combat preparation and starting bonuses.
|
|
- **Inspector Panel (Right):**
|
|
- Selected Node Name & Icon.
|
|
- Description ("Increases Roster Size by 2").
|
|
- Cost ("2 Ancient Cores").
|
|
- Status ("Locked", "Available", "Researched").
|
|
- Button: "RESEARCH".
|
|
|
|
## **3. The Tech Trees**
|
|
|
|
### **A. Logistics (Economy & Management)**
|
|
|
|
1. **Expanded Barracks I:** Roster Limit +2.
|
|
2. **Bulk Contracts:** Recruiting cost -10%.
|
|
3. **Expanded Barracks II:** Roster Limit +4.
|
|
4. **Deep Pockets:** Market Buyback slots +2.
|
|
5. **Salvage Protocol:** Sell prices at Market +10%.
|
|
|
|
### **B. Intelligence (Information Warfare)**
|
|
|
|
1. **Scout Drone:** Reveals the biome type of Side Missions before accepting them.
|
|
2. **Vital Sensors:** Enemy Health Bars show exact numbers instead of just bars.
|
|
3. **Threat Analysis:** Reveals Enemy Types (e.g. "Mechanical") on the Mission Board dossier.
|
|
4. **Map Data:** Reveals the location of the Boss Room on the minimap at start of run.
|
|
|
|
### **C. Field Ops (Combat Prep)**
|
|
|
|
1. **Supply Drop:** Start every run with 1 Free Potion in the shared stash.
|
|
2. **Fast Deploy:** First turn of combat grants +1 AP to all units.
|
|
3. **Emergency Beacon:** "Retreat" option becomes available (Escape with 50% loot retention instead of 0%).
|
|
4. **Hardened Steel:** All crafted/bought weapons start with +1 Damage.
|
|
|
|
## **4. TypeScript Interfaces**
|
|
|
|
```ts
|
|
// src/types/Research.ts
|
|
|
|
export type ResearchTreeType = "LOGISTICS" | "INTEL" | "FIELD_OPS";
|
|
|
|
export interface ResearchNode {
|
|
id: string; // e.g. "RES_LOGISTICS_01"
|
|
name: string;
|
|
description: string;
|
|
tree: ResearchTreeType;
|
|
tier: number; // Depth in the tree (1-5)
|
|
|
|
cost: number; // Ancient Cores
|
|
|
|
/** IDs of parent nodes that must be unlocked first */
|
|
prerequisites: string[];
|
|
|
|
/** The actual effect applied to the game state */
|
|
effect: {
|
|
type: "ROSTER_LIMIT" | "MARKET_DISCOUNT" | "STARTING_ITEM" | "UI_UNLOCK";
|
|
value: number | string;
|
|
};
|
|
}
|
|
|
|
export interface ResearchState {
|
|
unlockedNodeIds: string[]; // List of IDs player has bought
|
|
availableCores: number;
|
|
}
|
|
```
|
|
|
|
## **5. Conditions of Acceptance (CoA)**
|
|
|
|
**CoA 1: Dependency Logic**
|
|
|
|
- A node cannot be researched unless _all_ its prerequisites are in the unlockedNodeIds list.
|
|
- The UI must visually distinguish between Locked (Grey), Available (Lit), and Completed (Gold).
|
|
|
|
**CoA 2: Currency Consumption**
|
|
|
|
- Researching a node must deduct the exact Ancient Core cost from the global persistence.
|
|
- The action must fail if availableCores < cost.
|
|
|
|
**CoA** 3: Effect **Application**
|
|
|
|
- **Passive:** "Expanded Barracks" must immediately update the RosterManager.rosterLimit.
|
|
- **Runtime:** "Supply Drop" must trigger a check in GameLoop.startLevel to insert the item.
|