Compare commits
3 commits
8ac9fa441d
...
aeace34d05
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aeace34d05 | ||
|
|
10313e3fb9 | ||
|
|
4d531c23de |
98 changed files with 2441 additions and 27 deletions
79
README.md
79
README.md
|
|
@ -43,41 +43,55 @@ A tactical turn-based roguelike strategy game built with Three.js, featuring pro
|
|||
## Project Structure
|
||||
|
||||
```
|
||||
specs/ # Detailed feature specifications and design docs
|
||||
src/
|
||||
├── assets/
|
||||
│ ├── data/
|
||||
│ │ ├── classes/ # Character class definitions (JSON)
|
||||
│ │ ├── missions/ # Mission configurations
|
||||
│ │ └── narrative/ # Dialogue sequences
|
||||
│ └── images/ # Character portraits and assets
|
||||
│ │ ├── effects/ # Status effects and abilities
|
||||
│ │ ├── missions/ # Mission configurations
|
||||
│ │ ├── narrative/ # Dialogue sequences
|
||||
│ │ ├── skill_trees/ # Class skill tree templates
|
||||
│ │ └── skills/ # Individual skill definitions
|
||||
│ └── images/ # Character portraits and assets
|
||||
├── core/
|
||||
│ ├── GameLoop.js # Main game loop and Three.js setup
|
||||
│ ├── GameStateManager.js # Application state management
|
||||
│ ├── InputManager.js # Input handling (keyboard/gamepad)
|
||||
│ └── Persistence.js # Save/load system
|
||||
├── factories/
|
||||
│ └── SkillTreeFactory.js # Skill tree generation logic
|
||||
├── generation/
|
||||
│ ├── BaseGenerator.js # Base class for world generators
|
||||
│ ├── CaveGenerator.js # Cave biome generator
|
||||
│ ├── RuinGenerator.js # Ruin biome generator
|
||||
│ └── textures/ # Procedural texture generators
|
||||
│ ├── BaseGenerator.js # Base class for world generators
|
||||
│ ├── CaveGenerator.js # Cave biome generator
|
||||
│ ├── RuinGenerator.js # Ruin biome generator
|
||||
│ └── textures/ # Procedural texture generators
|
||||
├── grid/
|
||||
│ ├── VoxelGrid.js # 3D voxel grid data structure
|
||||
│ └── VoxelManager.js # Voxel rendering and mesh management
|
||||
│ ├── VoxelGrid.js # 3D voxel grid data structure
|
||||
│ └── VoxelManager.js # Voxel rendering and mesh management
|
||||
├── managers/
|
||||
│ ├── MissionManager.js # Mission progression and objectives
|
||||
│ ├── NarrativeManager.js # Dialogue and story sequences
|
||||
│ ├── RosterManager.js # Character roster management
|
||||
│ └── UnitManager.js # Unit lifecycle and combat state
|
||||
│ ├── InventoryManager.js # Equipment and inventory
|
||||
│ ├── ItemRegistry.js # Item definitions
|
||||
│ ├── MarketManager.js # Shop and trading logic
|
||||
│ ├── MissionManager.js # Mission progression and objectives
|
||||
│ ├── NarrativeManager.js # Dialogue and story sequences
|
||||
│ ├── ResearchManager.js # Tech tree and upgrades
|
||||
│ ├── RosterManager.js # Character roster management
|
||||
│ ├── SkillRegistry.js # Skill definitions map
|
||||
│ └── UnitManager.js # Unit lifecycle and combat state
|
||||
├── ui/
|
||||
│ ├── deployment-hud.js # Pre-battle deployment interface
|
||||
│ ├── team-builder.js # Squad composition screen
|
||||
│ ├── game-viewport.js # 3D game viewport component
|
||||
│ └── dialogue-overlay.js # Narrative dialogue display
|
||||
│ ├── deployment-hud.js # Pre-battle deployment interface
|
||||
│ ├── team-builder.js # Squad composition screen
|
||||
│ ├── game-viewport.js # 3D game viewport component
|
||||
│ └── dialogue-overlay.js # Narrative dialogue display
|
||||
├── units/
|
||||
│ ├── Unit.js # Base unit class
|
||||
│ ├── Explorer.js # Player-controlled units
|
||||
│ └── Enemy.js # Enemy AI units
|
||||
└── index.js # Application entry point
|
||||
│ ├── Unit.js # Base unit class
|
||||
│ ├── Explorer.js # Player-controlled units
|
||||
│ └── Enemy.js # Enemy AI units
|
||||
├── utils/
|
||||
│ ├── SeededRandom.js # Deterministic RNG
|
||||
│ └── SimplexNoise.js # Noise generation
|
||||
└── index.js # Application entry point
|
||||
```
|
||||
|
||||
## Getting Started
|
||||
|
|
@ -157,6 +171,15 @@ npm run test:watch
|
|||
- **Narrative**: Intro and outro sequences that advance the story
|
||||
- **Campaign Progression**: Unlock new missions as you complete objectives
|
||||
|
||||
## Documentation
|
||||
|
||||
For detailed specifications of game systems, please see the `specs/` directory:
|
||||
- [Character Sheet](specs/Character_Sheet.spec.md)
|
||||
- [Combat System](specs/CombatState.spec.md)
|
||||
- [Skill Trees](specs/Skill_Tree.spec.md)
|
||||
- [Inventory](specs/Inventory.spec.md)
|
||||
- [Procedural Missions](specs/Procedural_Missions.spec.md)
|
||||
|
||||
## Development Status
|
||||
|
||||
This is an active development project. Current features include:
|
||||
|
|
@ -168,14 +191,16 @@ This is an active development project. Current features include:
|
|||
- ✅ Mission system foundation
|
||||
- ✅ Basic world generation
|
||||
- ✅ Save/load system
|
||||
- ✅ Turn-based combat system
|
||||
- ✅ AI behavior
|
||||
- ✅ Skill tree implementation
|
||||
- ✅ Equipment system
|
||||
|
||||
Planned features:
|
||||
Planned features / In Progress:
|
||||
|
||||
- 🔄 Turn-based combat system
|
||||
- 🔄 AI behavior
|
||||
- 🔄 Skill tree implementation
|
||||
- 🔄 Equipment system
|
||||
- 🔄 Additional biomes and missions
|
||||
- 🔄 Additional biomes (Crystal Spires)
|
||||
- 🔄 Advanced AI behavior (Pack tactics, Retreat)
|
||||
- 🔄 Endgame campaign content
|
||||
|
||||
## License
|
||||
|
||||
|
|
|
|||
|
|
@ -126,3 +126,53 @@ Voice: Soft, cryptic, sorrowful, hopeful.
|
|||
- **DO:** Have her pity the enemies rather than hate them.
|
||||
- **DON'T:** Have her use tech jargon or talk about money.
|
||||
- **Catchphrase:** "The roots remember." / "Restore the balance."
|
||||
|
||||
## **6. Ambassador sol'Ria (The Neutral Coalition)**
|
||||
|
||||
Role: Diplomat / Elite.
|
||||
Archetype: The Entitled Noble.
|
||||
Voice: Panicked, demanding, transactional.
|
||||
|
||||
### **Core Traits**
|
||||
|
||||
- **Haughty:** Accustomed to luxury and command, utterly unprepared for the battlefield.
|
||||
- **Transactional:** Believes safety, loyalty, and silence can all be bought.
|
||||
- **Cowardly:** terrified of physical danger and disgusted by "common" combat.
|
||||
|
||||
### **Speech Patterns**
|
||||
|
||||
- **Demands:** "I demand an escort!" "Do you know who I am?"
|
||||
- **Bribes:** "Double the fee!" "Hazard pay!"
|
||||
- **High Fantasy/Formal:** Uses "Thee" or "Thou" occasionally when trying to sound authoritative, but breaks into panic easily.
|
||||
|
||||
### **Writing Guidelines**
|
||||
|
||||
- **DO:** Have them complain about the dirt/noise/danger.
|
||||
- **DO:** Make them treat the squad as servants.
|
||||
- **DON'T:** Use sci-fi terms like "Interstellar" or "light-speed". Keep it to "Realms," "Borders," "Treaties."
|
||||
- **Catchphrase:** "Do you have any idea how much my silence costs?" / "Get me out of here!"
|
||||
|
||||
## **7. The Arch-Corruptor (The Void)**
|
||||
|
||||
Role: Primordial Entity.
|
||||
Archetype: The Nihilistic God.
|
||||
Voice: Booming, abstract, inevitable.
|
||||
|
||||
### **Core Traits**
|
||||
|
||||
- **Inevitable:** Views resistance as a temporary annoyance.
|
||||
- **Abstract:** Speaks of "The Stillness," "The Silence," "The End of Pain."
|
||||
- **Pitying:** Truly believes that erasing existence is an act of mercy.
|
||||
|
||||
### **Speech Patterns**
|
||||
|
||||
- **ALL CAPS (Optional):** Or bold text to imply weight.
|
||||
- **Absolute Statements:** "It is finished." "All things end."
|
||||
- **Concepts as Nouns:** "I brings the Peace," "You fight the Tide."
|
||||
|
||||
### **Writing Guidelines**
|
||||
|
||||
- **DO:** Focus on the "Peace of Non-existence."
|
||||
- **DO:** Make promises of an end to suffering.
|
||||
- **DON'T:** Have them sound angry or petty. They are a force of nature.
|
||||
- **Catchphrase:** "Peace... in Silence." / "The Stillness comes."
|
||||
|
|
|
|||
47
src/assets/data/missions/mission_act1_01.json
Normal file
47
src/assets/data/missions/mission_act1_01.json
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
{
|
||||
"id": "MISSION_ACT1_01",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "Protocol: First Descent",
|
||||
"description": "Establish a foothold in the Rusting Wastes. Director Vorn is monitoring your progress.",
|
||||
"difficulty_tier": 1,
|
||||
"recommended_level": 1,
|
||||
"icon": "assets/icons/mission_sword.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_RUSTING_WASTES",
|
||||
"generator_config": {
|
||||
"seed_type": "FIXED",
|
||||
"seed": 12345,
|
||||
"size": {
|
||||
"x": 20,
|
||||
"y": 6,
|
||||
"z": 20
|
||||
}
|
||||
}
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_01_INTRO",
|
||||
"outro_success": "NARRATIVE_01_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_KILL_2",
|
||||
"type": "ELIMINATE_ENEMIES",
|
||||
"target_count": 2,
|
||||
"description": "Eliminate 2 Shardborn Sentinels."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"unlocks": [
|
||||
"CLASS_TINKER"
|
||||
],
|
||||
"currency": {
|
||||
"aether_shards": 100
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
49
src/assets/data/missions/mission_act1_02.json
Normal file
49
src/assets/data/missions/mission_act1_02.json
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
{
|
||||
"id": "MISSION_ACT1_02",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "The Signal",
|
||||
"description": "A subspace relay in the Fungal Caves is jamming trade routes. Clear the interference.",
|
||||
"difficulty_tier": 1,
|
||||
"recommended_level": 2,
|
||||
"icon": "assets/icons/mission_signal.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_FUNGAL_CAVES",
|
||||
"generator_config": {
|
||||
"seed_type": "RANDOM",
|
||||
"room_count": 5,
|
||||
"density": "MEDIUM"
|
||||
},
|
||||
"hazards": [
|
||||
"HAZARD_POISON_SPORES"
|
||||
]
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_02_INTRO",
|
||||
"outro_success": "NARRATIVE_02_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_FIX_RELAY",
|
||||
"type": "INTERACT",
|
||||
"target_object_id": "OBJ_SIGNAL_RELAY",
|
||||
"description": "Reboot the Ancient Signal Relay."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"unlocks": [
|
||||
"CLASS_SCAVENGER"
|
||||
],
|
||||
"currency": {
|
||||
"aether_shards": 150
|
||||
}
|
||||
},
|
||||
"faction_reputation": {
|
||||
"GOLDEN_EXCHANGE": 25
|
||||
}
|
||||
}
|
||||
}
|
||||
45
src/assets/data/missions/mission_act1_03.json
Normal file
45
src/assets/data/missions/mission_act1_03.json
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
{
|
||||
"id": "MISSION_ACT1_03",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "The Foundation",
|
||||
"description": "Shardborn sappers are undermining the Hub's cliffside foundation. Defend the perimeter.",
|
||||
"difficulty_tier": 2,
|
||||
"recommended_level": 3,
|
||||
"icon": "assets/icons/mission_shield.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_CONTESTED_FRONTIER",
|
||||
"generator_config": {
|
||||
"seed_type": "RANDOM",
|
||||
"density": "CHOKE_POINT"
|
||||
}
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_03_INTRO",
|
||||
"outro_success": "NARRATIVE_03_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_HOLD",
|
||||
"type": "SURVIVE",
|
||||
"turn_limit": 5,
|
||||
"description": "Prevent the Shardborn from reaching the cliff edge for 5 turns."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"unlocks": [
|
||||
"CLASS_VANGUARD"
|
||||
],
|
||||
"currency": {
|
||||
"aether_shards": 200
|
||||
}
|
||||
},
|
||||
"faction_reputation": {
|
||||
"IRON_LEGION": 25
|
||||
}
|
||||
}
|
||||
}
|
||||
61
src/assets/data/missions/mission_story_04.json
Normal file
61
src/assets/data/missions/mission_story_04.json
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
{
|
||||
"id": "MISSION_STORY_04",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "The First Truth",
|
||||
"description": "Deep scans indicate a survivor in the Void-Seep. Retrieval is mandatory. Extreme Caution advised.",
|
||||
"difficulty_tier": 3,
|
||||
"recommended_level": 4,
|
||||
"icon": "assets/icons/mission_void.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_VOID_SEEP",
|
||||
"generator_config": {
|
||||
"seed_type": "RANDOM",
|
||||
"size": {
|
||||
"x": 20,
|
||||
"y": 8,
|
||||
"z": 20
|
||||
},
|
||||
"room_count": 1,
|
||||
"density": "ARENA"
|
||||
},
|
||||
"hazards": [
|
||||
"HAZARD_VOID_RIFTS"
|
||||
]
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_04_INTRO",
|
||||
"outro_success": "NARRATIVE_04_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_SURVIVE",
|
||||
"type": "SURVIVE",
|
||||
"turn_limit": 8,
|
||||
"description": "Survive the Shardborn assault."
|
||||
},
|
||||
{
|
||||
"id": "OBJ_EXTRACT",
|
||||
"type": "REACH_ZONE",
|
||||
"zone_coords": {
|
||||
"x": 10,
|
||||
"y": 1,
|
||||
"z": 10
|
||||
},
|
||||
"description": "Reach the Extraction Elevator."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"unlocks": [
|
||||
"CLASS_BATTLE_MAGE"
|
||||
],
|
||||
"currency": {
|
||||
"ancient_cores": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
39
src/assets/data/missions/mission_story_05.json
Normal file
39
src/assets/data/missions/mission_story_05.json
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
"id": "MISSION_STORY_05",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "Line in the Sand",
|
||||
"description": "Tensions between the Iron Legion and Golden Exchange have boiled over. Pick a side and intervene.",
|
||||
"difficulty_tier": 3,
|
||||
"recommended_level": 5,
|
||||
"icon": "assets/icons/mission_conflict.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_CONTESTED_FRONTIER",
|
||||
"generator_config": {
|
||||
"seed_type": "RANDOM",
|
||||
"density": "SKIRMISH"
|
||||
}
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_05_INTRO",
|
||||
"outro_success": "NARRATIVE_05_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_DEFEAT_COMMANDER",
|
||||
"type": "ELIMINATE_UNIT",
|
||||
"target_def_id": "DYNAMIC_COMMANDER",
|
||||
"description": "Defeat the opposing Commander."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"currency": {
|
||||
"aether_shards": 500
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
55
src/assets/data/missions/mission_story_06.json
Normal file
55
src/assets/data/missions/mission_story_06.json
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
{
|
||||
"id": "MISSION_STORY_06",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "Unstable Aether",
|
||||
"description": "Arch-Librarian Elara needs raw samples from the Crystal Spires. Warning: The crystals are harmonizing and will detonate soon.",
|
||||
"difficulty_tier": 3,
|
||||
"recommended_level": 6,
|
||||
"icon": "assets/icons/mission_crystal.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_CRYSTAL_SPIRES",
|
||||
"hazards": [
|
||||
"HAZARD_EXPLOSION_WARNING"
|
||||
],
|
||||
"generator_config": {
|
||||
"seed_type": "RANDOM",
|
||||
"size": {
|
||||
"x": 18,
|
||||
"y": 15,
|
||||
"z": 18
|
||||
},
|
||||
"density": "LOW"
|
||||
}
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_06_INTRO",
|
||||
"outro_success": "NARRATIVE_06_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_COLLECT",
|
||||
"type": "INTERACT",
|
||||
"target_object_id": "OBJ_VOLATILE_CRYSTAL",
|
||||
"target_count": 3,
|
||||
"description": "Stabilize 3 Volatile Crystals before Turn 6."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"unlocks": [
|
||||
"MASTERY_AETHER_WEAVER"
|
||||
],
|
||||
"currency": {
|
||||
"aether_shards": 400,
|
||||
"ancient_cores": 1
|
||||
}
|
||||
},
|
||||
"faction_reputation": {
|
||||
"ARCANE_DOMINION": 50
|
||||
}
|
||||
}
|
||||
}
|
||||
48
src/assets/data/missions/mission_story_07.json
Normal file
48
src/assets/data/missions/mission_story_07.json
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
{
|
||||
"id": "MISSION_STORY_07",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "Factory Reset",
|
||||
"description": "Director Vorn has located a dormant munitions factory. Reboot the main generator while holding off the scavengers.",
|
||||
"difficulty_tier": 3,
|
||||
"recommended_level": 6,
|
||||
"icon": "assets/icons/mission_gear.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_RUSTING_WASTES",
|
||||
"generator_config": {
|
||||
"seed_type": "RANDOM",
|
||||
"room_count": 6,
|
||||
"density": "HIGH"
|
||||
}
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_07_INTRO",
|
||||
"outro_success": "NARRATIVE_07_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_CONSOLE",
|
||||
"type": "INTERACT",
|
||||
"target_object_id": "OBJ_GENERATOR_CONSOLE",
|
||||
"target_count": 3,
|
||||
"description": "Activate the 3 Power Consoles."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"unlocks": [
|
||||
"MASTERY_TINKER"
|
||||
],
|
||||
"currency": {
|
||||
"aether_shards": 500,
|
||||
"ancient_cores": 2
|
||||
}
|
||||
},
|
||||
"faction_reputation": {
|
||||
"COGWORK_CONCORD": 50
|
||||
}
|
||||
}
|
||||
}
|
||||
47
src/assets/data/missions/mission_story_08.json
Normal file
47
src/assets/data/missions/mission_story_08.json
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
{
|
||||
"id": "MISSION_STORY_08",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "The Construct",
|
||||
"description": "Vorn's factory reset woke up something big. A prototype siege engine is rampaging through Sector 9.",
|
||||
"difficulty_tier": 4,
|
||||
"recommended_level": 7,
|
||||
"icon": "assets/icons/mission_boss_tank.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_RUSTING_WASTES",
|
||||
"generator_config": {
|
||||
"density": "ARENA"
|
||||
},
|
||||
"hazards": [
|
||||
"HAZARD_OIL_SLICKS"
|
||||
]
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_08_INTRO",
|
||||
"outro_success": "NARRATIVE_08_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_KILL_BOSS",
|
||||
"type": "ELIMINATE_UNIT",
|
||||
"target_def_id": "ENEMY_BOSS_CONSTRUCT",
|
||||
"description": "Destroy the Siege Construct."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"items": [
|
||||
"ITEM_TITAN_PLATING"
|
||||
],
|
||||
"currency": {
|
||||
"ancient_cores": 3
|
||||
}
|
||||
},
|
||||
"faction_reputation": {
|
||||
"COGWORK_CONCORD": 75
|
||||
}
|
||||
}
|
||||
}
|
||||
43
src/assets/data/missions/mission_story_09.json
Normal file
43
src/assets/data/missions/mission_story_09.json
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
"id": "MISSION_STORY_09",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "Data Recovery",
|
||||
"description": "A Cogwork airship carrying factory logs crashed in the Frontier. Secure the drive before bandits do.",
|
||||
"difficulty_tier": 3,
|
||||
"recommended_level": 7,
|
||||
"icon": "assets/icons/mission_intel.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_CONTESTED_FRONTIER",
|
||||
"generator_config": {
|
||||
"seed_type": "RANDOM",
|
||||
"size": {
|
||||
"x": 30,
|
||||
"y": 4,
|
||||
"z": 30
|
||||
}
|
||||
}
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_09_INTRO",
|
||||
"outro_success": "NARRATIVE_09_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_KILL_THIEF",
|
||||
"type": "ELIMINATE_UNIT",
|
||||
"target_def_id": "ENEMY_BANDIT_LEADER",
|
||||
"description": "Retrieve the drive from the Bandit Leader."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"items": [
|
||||
"ITEM_DATA_DRIVE_RELIC"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
41
src/assets/data/missions/mission_story_10.json
Normal file
41
src/assets/data/missions/mission_story_10.json
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"id": "MISSION_STORY_10",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "Hold the Line",
|
||||
"description": "General Kael has ordered a defense of Bridge 4. The Shardborn are pushing hard. Do not let them cross.",
|
||||
"difficulty_tier": 3,
|
||||
"recommended_level": 7,
|
||||
"icon": "assets/icons/mission_shield.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_CONTESTED_FRONTIER",
|
||||
"generator_config": {
|
||||
"density": "CHOKE_POINT"
|
||||
}
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_10_INTRO",
|
||||
"outro_success": "NARRATIVE_10_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_SURVIVE",
|
||||
"type": "SURVIVE",
|
||||
"turn_limit": 8,
|
||||
"description": "Hold the bridge for 8 Turns."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"items": [
|
||||
"ITEM_IRON_TOWER_SHIELD"
|
||||
]
|
||||
},
|
||||
"faction_reputation": {
|
||||
"IRON_LEGION": 40
|
||||
}
|
||||
}
|
||||
}
|
||||
46
src/assets/data/missions/mission_story_11.json
Normal file
46
src/assets/data/missions/mission_story_11.json
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
{
|
||||
"id": "MISSION_STORY_11",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "Breach and Clear",
|
||||
"description": "We've tracked the assault force back to a nest in the Rusting Wastes. Burn it out.",
|
||||
"difficulty_tier": 3,
|
||||
"recommended_level": 8,
|
||||
"icon": "assets/icons/mission_sword.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_RUSTING_WASTES",
|
||||
"hazards": [
|
||||
"HAZARD_NEST_SPORES"
|
||||
]
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_11_INTRO",
|
||||
"outro_success": "NARRATIVE_11_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_CLEAR",
|
||||
"type": "ELIMINATE_ALL",
|
||||
"description": "Eliminate all hostiles."
|
||||
},
|
||||
{
|
||||
"id": "OBJ_SPAWNERS",
|
||||
"type": "DESTROY_OBJECTS",
|
||||
"tag": "NEST_SPAWNER",
|
||||
"description": "Destroy 3 Nest Spawners."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"unlocks": [
|
||||
"BLUEPRINT_HEAVY_PLATE_MK2"
|
||||
]
|
||||
},
|
||||
"faction_reputation": {
|
||||
"IRON_LEGION": 50
|
||||
}
|
||||
}
|
||||
}
|
||||
41
src/assets/data/missions/mission_story_12.json
Normal file
41
src/assets/data/missions/mission_story_12.json
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"id": "MISSION_STORY_12",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "The Warlord",
|
||||
"description": "General Kael has identified the Shardborn command unit. We are cutting off the head of the snake.",
|
||||
"difficulty_tier": 4,
|
||||
"recommended_level": 8,
|
||||
"icon": "assets/icons/mission_boss_skull.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_VOID_SEEP",
|
||||
"generator_config": {
|
||||
"density": "ARENA"
|
||||
}
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_12_INTRO",
|
||||
"outro_success": "NARRATIVE_12_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_BOSS",
|
||||
"type": "ELIMINATE_UNIT",
|
||||
"target_def_id": "ENEMY_BOSS_WARLORD",
|
||||
"description": "Eliminate the Shardborn Warlord."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"unlocks": [
|
||||
"MASTERY_VANGUARD"
|
||||
]
|
||||
},
|
||||
"faction_reputation": {
|
||||
"IRON_LEGION": 75
|
||||
}
|
||||
}
|
||||
}
|
||||
54
src/assets/data/missions/mission_story_13.json
Normal file
54
src/assets/data/missions/mission_story_13.json
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
{
|
||||
"id": "MISSION_STORY_13",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "Supply Run",
|
||||
"description": "Baroness Seraphina has a 'priority shipment' moving through the Spires. Ensure the Mule Bot reaches the extraction point.",
|
||||
"difficulty_tier": 2,
|
||||
"recommended_level": 6,
|
||||
"icon": "assets/icons/mission_escort.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_CRYSTAL_SPIRES",
|
||||
"generator_config": {
|
||||
"density": "LINEAR_PATH"
|
||||
},
|
||||
"hazards": [
|
||||
"HAZARD_UNSTABLE_PLATFORMS"
|
||||
]
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_13_INTRO",
|
||||
"outro_success": "NARRATIVE_13_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_ESCORT",
|
||||
"type": "ESCORT",
|
||||
"target_def_id": "UNIT_MULE_BOT",
|
||||
"description": "Protect the Mule Bot."
|
||||
},
|
||||
{
|
||||
"id": "OBJ_EXIT",
|
||||
"type": "REACH_ZONE",
|
||||
"zone_coords": {
|
||||
"x": 22,
|
||||
"y": 5,
|
||||
"z": 5
|
||||
},
|
||||
"description": "Guide the Mule Bot to the Sky-Dock."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"items": [
|
||||
"ITEM_MERCENARY_CONTRACT"
|
||||
]
|
||||
},
|
||||
"faction_reputation": {
|
||||
"GOLDEN_EXCHANGE": 40
|
||||
}
|
||||
}
|
||||
}
|
||||
48
src/assets/data/missions/mission_story_14.json
Normal file
48
src/assets/data/missions/mission_story_14.json
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
{
|
||||
"id": "MISSION_STORY_14",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "Hostile Takeover",
|
||||
"description": "Red Vulture bandits have seized a lucrative mine. The Baroness wants it back intact.",
|
||||
"difficulty_tier": 3,
|
||||
"recommended_level": 7,
|
||||
"icon": "assets/icons/mission_coin.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_FUNGAL_CAVES",
|
||||
"generator_config": {
|
||||
"density": "MEDIUM"
|
||||
}
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_14_INTRO",
|
||||
"outro_success": "NARRATIVE_14_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_CLEAR",
|
||||
"type": "ELIMINATE_ALL",
|
||||
"description": "Remove the Red Vulture presence."
|
||||
}
|
||||
],
|
||||
"secondary": [
|
||||
{
|
||||
"id": "OBJ_PRESERVE",
|
||||
"type": "SQUAD_SURVIVAL",
|
||||
"min_alive": 3,
|
||||
"description": "Preserve Mining Equipment (Do not destroy)."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"currency": {
|
||||
"aether_shards": 700
|
||||
}
|
||||
},
|
||||
"faction_reputation": {
|
||||
"GOLDEN_EXCHANGE": 45
|
||||
}
|
||||
}
|
||||
}
|
||||
41
src/assets/data/missions/mission_story_15.json
Normal file
41
src/assets/data/missions/mission_story_15.json
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"id": "MISSION_STORY_15",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "The Auction",
|
||||
"description": "An assassination attempt is planned during Seraphina's auction. Protect the VIP.",
|
||||
"difficulty_tier": 4,
|
||||
"recommended_level": 8,
|
||||
"icon": "assets/icons/mission_vip.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_CONTESTED_FRONTIER",
|
||||
"generator_config": {
|
||||
"density": "OPEN_FIELD"
|
||||
}
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_15_INTRO",
|
||||
"outro_success": "NARRATIVE_15_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_PROTECT",
|
||||
"type": "ESCORT",
|
||||
"target_def_id": "UNIT_NPC_SERAPHINA",
|
||||
"description": "Protect Baroness Seraphina."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"items": [
|
||||
"ITEM_MARKET_PASS_PLATINUM"
|
||||
]
|
||||
},
|
||||
"faction_reputation": {
|
||||
"GOLDEN_EXCHANGE": 75
|
||||
}
|
||||
}
|
||||
}
|
||||
42
src/assets/data/missions/mission_story_16.json
Normal file
42
src/assets/data/missions/mission_story_16.json
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
{
|
||||
"id": "MISSION_STORY_16",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "Cleansing the Grove",
|
||||
"description": "Elder Fira senses corruption in the Mycelial Heart. Purge the rot before it spreads.",
|
||||
"difficulty_tier": 3,
|
||||
"recommended_level": 7,
|
||||
"icon": "assets/icons/mission_leaf.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_FUNGAL_CAVES",
|
||||
"hazards": [
|
||||
"HAZARD_REGROWING_VINES"
|
||||
]
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_16_INTRO",
|
||||
"outro_success": "NARRATIVE_16_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_PURIFY",
|
||||
"type": "INTERACT",
|
||||
"target_object_id": "OBJ_CORRUPTED_ROOT",
|
||||
"target_count": 5,
|
||||
"description": "Purify 5 Corrupted Roots."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"unlocks": [
|
||||
"BLUEPRINT_REGEN_RING"
|
||||
]
|
||||
},
|
||||
"faction_reputation": {
|
||||
"SILENT_SANCTUARY": 40
|
||||
}
|
||||
}
|
||||
}
|
||||
42
src/assets/data/missions/mission_story_17.json
Normal file
42
src/assets/data/missions/mission_story_17.json
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
{
|
||||
"id": "MISSION_STORY_17",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "Lost Spirits",
|
||||
"description": "Sanctuary pilgrims are lost in the mist. Find them before the Echoes do.",
|
||||
"difficulty_tier": 3,
|
||||
"recommended_level": 7,
|
||||
"icon": "assets/icons/mission_search.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_CRYSTAL_SPIRES",
|
||||
"hazards": [
|
||||
"HAZARD_FOG"
|
||||
]
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_17_INTRO",
|
||||
"outro_success": "NARRATIVE_17_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_FIND",
|
||||
"type": "INTERACT",
|
||||
"target_object_id": "OBJ_LOST_PILGRIM",
|
||||
"target_count": 3,
|
||||
"description": "Locate 3 Pilgrims."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"items": [
|
||||
"ITEM_SPIRIT_LANTERN"
|
||||
]
|
||||
},
|
||||
"faction_reputation": {
|
||||
"SILENT_SANCTUARY": 50
|
||||
}
|
||||
}
|
||||
}
|
||||
41
src/assets/data/missions/mission_story_18.json
Normal file
41
src/assets/data/missions/mission_story_18.json
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"id": "MISSION_STORY_18",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "The Source of Rot",
|
||||
"description": "Destroy the massive Corruption Tumor feeding on the Void to save the forest.",
|
||||
"difficulty_tier": 4,
|
||||
"recommended_level": 8,
|
||||
"icon": "assets/icons/mission_boss_plant.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_VOID_SEEP",
|
||||
"hazards": [
|
||||
"HAZARD_SPORE_VENTS"
|
||||
]
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_18_INTRO",
|
||||
"outro_success": "NARRATIVE_18_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_KILL_BOSS",
|
||||
"type": "ELIMINATE_UNIT",
|
||||
"target_def_id": "ENEMY_BOSS_TUMOR",
|
||||
"description": "Destroy the Corruption Heart."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"unlocks": [
|
||||
"MASTERY_CUSTODIAN"
|
||||
]
|
||||
},
|
||||
"faction_reputation": {
|
||||
"SILENT_SANCTUARY": 75
|
||||
}
|
||||
}
|
||||
}
|
||||
51
src/assets/data/missions/mission_story_19.json
Normal file
51
src/assets/data/missions/mission_story_19.json
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
{
|
||||
"id": "MISSION_STORY_19",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "Diplomatic Immunity",
|
||||
"description": "Peace talks have collapsed. Escort Ambassador sol'Ria through the crossfire.",
|
||||
"difficulty_tier": 4,
|
||||
"recommended_level": 9,
|
||||
"icon": "assets/icons/mission_diplomat.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_CONTESTED_FRONTIER",
|
||||
"generator_config": {
|
||||
"density": "WARZONE"
|
||||
},
|
||||
"hazards": [
|
||||
"HAZARD_ARTILLERY_STRIKES"
|
||||
]
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_19_INTRO",
|
||||
"outro_success": "NARRATIVE_19_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_ESCORT",
|
||||
"type": "ESCORT",
|
||||
"target_def_id": "UNIT_NPC_DIPLOMAT",
|
||||
"description": "Protect Ambassador sol'Ria."
|
||||
},
|
||||
{
|
||||
"id": "OBJ_EXIT",
|
||||
"type": "REACH_ZONE",
|
||||
"zone_coords": {
|
||||
"x": 15,
|
||||
"y": 1,
|
||||
"z": 28
|
||||
},
|
||||
"description": "Reach the Neutral Dropship."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"items": [
|
||||
"ITEM_PEACEKEEPER_BADGE"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
37
src/assets/data/missions/mission_story_20.json
Normal file
37
src/assets/data/missions/mission_story_20.json
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
"id": "MISSION_STORY_20",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "Sabotage",
|
||||
"description": "General Kael plans to bomb the Concord factory. Vorn wants you to disarm it. Choose a side.",
|
||||
"difficulty_tier": 4,
|
||||
"recommended_level": 9,
|
||||
"icon": "assets/icons/mission_bomb.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_RUSTING_WASTES",
|
||||
"hazards": [
|
||||
"HAZARD_LIVE_WIRES"
|
||||
]
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_20_INTRO",
|
||||
"outro_success": "NARRATIVE_20_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_CHOICE",
|
||||
"type": "CUSTOM_CHECK",
|
||||
"description": "Arm (Legion) OR Disarm (Concord) 3 Bomb Sites."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"currency": {
|
||||
"aether_shards": 800
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
38
src/assets/data/missions/mission_story_21.json
Normal file
38
src/assets/data/missions/mission_story_21.json
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"id": "MISSION_STORY_21",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "Resource War",
|
||||
"description": "Dominion and Exchange forces are fighting over a pure Aether Geode. Capture and hold it.",
|
||||
"difficulty_tier": 4,
|
||||
"recommended_level": 9,
|
||||
"icon": "assets/icons/mission_flag.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_CRYSTAL_SPIRES",
|
||||
"hazards": [
|
||||
"HAZARD_GRAVITY_FLUX"
|
||||
]
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_21_INTRO",
|
||||
"outro_success": "NARRATIVE_21_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_KOTH",
|
||||
"type": "KING_OF_THE_HILL",
|
||||
"target_score": 100,
|
||||
"description": "Control the Geode Platform."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"items": [
|
||||
"ITEM_AETHER_LENS"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
35
src/assets/data/missions/mission_story_22.json
Normal file
35
src/assets/data/missions/mission_story_22.json
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"id": "MISSION_STORY_22",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "The False Prophet",
|
||||
"description": "A charlatan is corrupting the Sanctuary monks. Silence him before he poisons their minds.",
|
||||
"difficulty_tier": 4,
|
||||
"recommended_level": 9,
|
||||
"icon": "assets/icons/mission_skull.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_FUNGAL_CAVES"
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_22_INTRO",
|
||||
"outro_success": "NARRATIVE_22_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_KILL_LEADER",
|
||||
"type": "ELIMINATE_UNIT",
|
||||
"target_def_id": "ENEMY_CULTIST_LEADER",
|
||||
"description": "Eliminate the False Prophet."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"items": [
|
||||
"ITEM_CORRUPTED_IDOL"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
47
src/assets/data/missions/mission_story_23.json
Normal file
47
src/assets/data/missions/mission_story_23.json
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
{
|
||||
"id": "MISSION_STORY_23",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "Spirequake",
|
||||
"description": "The Spire is pulsing, causing massive earthquakes. Evacuate civilians from the falling debris.",
|
||||
"difficulty_tier": 4,
|
||||
"recommended_level": 10,
|
||||
"icon": "assets/icons/mission_run.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_CONTESTED_FRONTIER",
|
||||
"hazards": [
|
||||
"HAZARD_FALLING_DEBRIS"
|
||||
]
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_23_INTRO",
|
||||
"outro_success": "NARRATIVE_23_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_EVAC",
|
||||
"type": "REACH_ZONE",
|
||||
"zone_coords": {
|
||||
"x": 25,
|
||||
"y": 1,
|
||||
"z": 5
|
||||
},
|
||||
"description": "Reach the Evac Zone."
|
||||
},
|
||||
{
|
||||
"id": "OBJ_SURVIVE",
|
||||
"type": "SURVIVE",
|
||||
"turn_limit": 6
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"currency": {
|
||||
"aether_shards": 900
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
37
src/assets/data/missions/mission_story_24.json
Normal file
37
src/assets/data/missions/mission_story_24.json
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
"id": "MISSION_STORY_24",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "The Ultimatum",
|
||||
"description": "The Shardborn are launching a massive surface invasion. Hold the line at all costs.",
|
||||
"difficulty_tier": 5,
|
||||
"recommended_level": 10,
|
||||
"icon": "assets/icons/mission_shield.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_CONTESTED_FRONTIER",
|
||||
"generator_config": {
|
||||
"density": "EXTREME"
|
||||
}
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_24_INTRO",
|
||||
"outro_success": "NARRATIVE_24_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_KILL_ALL",
|
||||
"type": "ELIMINATE_ALL",
|
||||
"description": "Defeat the invasion force."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"currency": {
|
||||
"ancient_cores": 3
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
39
src/assets/data/missions/mission_story_25.json
Normal file
39
src/assets/data/missions/mission_story_25.json
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
"id": "MISSION_STORY_25",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "Into the Dark",
|
||||
"description": "The Alliance is reforged. The way to the core is open. Secure the elevator shaft.",
|
||||
"difficulty_tier": 5,
|
||||
"recommended_level": 11,
|
||||
"icon": "assets/icons/mission_elevator.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_VOID_SEEP"
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_25_INTRO",
|
||||
"outro_success": "NARRATIVE_25_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_SECURE_ELEVATOR",
|
||||
"type": "REACH_ZONE",
|
||||
"zone_coords": {
|
||||
"x": 10,
|
||||
"y": 1,
|
||||
"z": 18
|
||||
},
|
||||
"description": "Reach the Ancient Elevator."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"unlocks": [
|
||||
"ACCESS_ACT_4"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
39
src/assets/data/missions/mission_story_26.json
Normal file
39
src/assets/data/missions/mission_story_26.json
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
"id": "MISSION_STORY_26",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "Layer 1: The Iron Shell",
|
||||
"description": "Breach the Spire's outer defenses. Destroy the Shield Generators.",
|
||||
"difficulty_tier": 5,
|
||||
"recommended_level": 11,
|
||||
"icon": "assets/icons/mission_target.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_RUSTING_WASTES",
|
||||
"generator_config": {
|
||||
"density": "BOSS_RUSH"
|
||||
}
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_26_INTRO",
|
||||
"outro_success": "NARRATIVE_26_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_DESTROY_GENS",
|
||||
"type": "DESTROY_OBJECTS",
|
||||
"tag": "SHIELD_GENERATOR",
|
||||
"target_count": 4,
|
||||
"description": "Destroy 4 Shield Generators."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"currency": {
|
||||
"ancient_cores": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
42
src/assets/data/missions/mission_story_27.json
Normal file
42
src/assets/data/missions/mission_story_27.json
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
{
|
||||
"id": "MISSION_STORY_27",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "Layer 2: The Crystal Heart",
|
||||
"description": "Navigate a vertical maze of shifting platforms to reach the inner sanctum.",
|
||||
"difficulty_tier": 5,
|
||||
"recommended_level": 12,
|
||||
"icon": "assets/icons/mission_climb.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_CRYSTAL_SPIRES",
|
||||
"hazards": [
|
||||
"HAZARD_GRAVITY_FLUX_HARD"
|
||||
]
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_27_INTRO",
|
||||
"outro_success": "NARRATIVE_27_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_ASCEND",
|
||||
"type": "REACH_ZONE",
|
||||
"zone_coords": {
|
||||
"x": 15,
|
||||
"y": 8,
|
||||
"z": 15
|
||||
},
|
||||
"description": "Reach the Upper Platform."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"currency": {
|
||||
"ancient_cores": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
38
src/assets/data/missions/mission_story_28.json
Normal file
38
src/assets/data/missions/mission_story_28.json
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"id": "MISSION_STORY_28",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "Layer 3: The Rotting Soul",
|
||||
"description": "Survive the toxic atmosphere and hunt down the Elite Spire Titan.",
|
||||
"difficulty_tier": 5,
|
||||
"recommended_level": 12,
|
||||
"icon": "assets/icons/mission_skull_poison.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_FUNGAL_CAVES",
|
||||
"hazards": [
|
||||
"HAZARD_TOXIC_ATMOSPHERE"
|
||||
]
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_28_INTRO",
|
||||
"outro_success": "NARRATIVE_28_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_KILL_TITAN",
|
||||
"type": "ELIMINATE_UNIT",
|
||||
"target_def_id": "ENEMY_ELITE_SPORE_TITAN",
|
||||
"description": "Eliminate the Spore Titan."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"currency": {
|
||||
"ancient_cores": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
34
src/assets/data/missions/mission_story_29.json
Normal file
34
src/assets/data/missions/mission_story_29.json
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"id": "MISSION_STORY_29",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "Layer 4: The Void",
|
||||
"description": "Face your shadows. Defeat the dopplegangers of your own squad.",
|
||||
"difficulty_tier": 5,
|
||||
"recommended_level": 13,
|
||||
"icon": "assets/icons/mission_shadow.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_VOID_SEEP"
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_29_INTRO",
|
||||
"outro_success": "NARRATIVE_29_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_KILL_SHADOWS",
|
||||
"type": "ELIMINATE_ALL",
|
||||
"description": "Defeat the Shadow Squad."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"items": [
|
||||
"ITEM_VOID_ESSENCE"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
38
src/assets/data/missions/mission_story_30.json
Normal file
38
src/assets/data/missions/mission_story_30.json
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"id": "MISSION_STORY_30",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "The Gatekeeper",
|
||||
"description": "The Void Brute Omega stands between you and the Core. It ends here.",
|
||||
"difficulty_tier": 5,
|
||||
"recommended_level": 14,
|
||||
"icon": "assets/icons/mission_boss_gate.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_VOID_SEEP",
|
||||
"generator_config": {
|
||||
"density": "ARENA"
|
||||
}
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_30_INTRO",
|
||||
"outro_success": "NARRATIVE_30_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_KILL_OMEGA",
|
||||
"type": "ELIMINATE_UNIT",
|
||||
"target_def_id": "ENEMY_BOSS_VOID_BRUTE_OMEGA",
|
||||
"description": "Destroy the Gatekeeper."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"currency": {
|
||||
"ancient_cores": 5
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
42
src/assets/data/missions/mission_story_31.json
Normal file
42
src/assets/data/missions/mission_story_31.json
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
{
|
||||
"id": "MISSION_STORY_31",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "Ascension",
|
||||
"description": "Escort the Synchronization Device to the center of the Core. Don't let it be destroyed.",
|
||||
"difficulty_tier": 5,
|
||||
"recommended_level": 15,
|
||||
"icon": "assets/icons/mission_core.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_CRYSTAL_SPIRES",
|
||||
"generator_config": {
|
||||
"size": {
|
||||
"x": 30,
|
||||
"y": 20,
|
||||
"z": 30
|
||||
}
|
||||
}
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_31_INTRO",
|
||||
"outro_success": "NARRATIVE_31_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_ESCORT_SYNC",
|
||||
"type": "ESCORT",
|
||||
"target_def_id": "UNIT_SYNC_DEVICE",
|
||||
"description": "Protect the Sync Device."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"unlocks": [
|
||||
"LIMIT_BREAK_MAX_LEVEL"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
38
src/assets/data/missions/mission_story_32.json
Normal file
38
src/assets/data/missions/mission_story_32.json
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"id": "MISSION_STORY_32",
|
||||
"type": "STORY",
|
||||
"config": {
|
||||
"title": "The Origin",
|
||||
"description": "The final battle. Defeat the Arch-Corruptor and decide the fate of Aethelgard.",
|
||||
"difficulty_tier": 6,
|
||||
"recommended_level": 15,
|
||||
"icon": "assets/icons/mission_boss_final.png"
|
||||
},
|
||||
"biome": {
|
||||
"type": "BIOME_VOID_SEEP",
|
||||
"generator_config": {
|
||||
"density": "BOSS_ARENA_FINAL"
|
||||
}
|
||||
},
|
||||
"narrative": {
|
||||
"intro_sequence": "NARRATIVE_32_INTRO",
|
||||
"outro_success": "NARRATIVE_32_OUTRO"
|
||||
},
|
||||
"objectives": {
|
||||
"primary": [
|
||||
{
|
||||
"id": "OBJ_KILL_ARCH",
|
||||
"type": "ELIMINATE_UNIT",
|
||||
"target_def_id": "ENEMY_ARCH_CORRUPTOR",
|
||||
"description": "Defeat the Arch-Corruptor."
|
||||
}
|
||||
]
|
||||
},
|
||||
"rewards": {
|
||||
"guaranteed": {
|
||||
"unlocks": [
|
||||
"NEW_GAME_PLUS"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
19
src/assets/data/narrative/narrative_01_intro.json
Normal file
19
src/assets/data/narrative/narrative_01_intro.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"id": "NARRATIVE_01_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Director Vorn",
|
||||
"text": "Explorer. You made it. Good. My sensors are bleeding red in Sector 4.",
|
||||
"next": "2"
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"type": "TUTORIAL",
|
||||
"speaker": "System",
|
||||
"text": "This is the Deployment Phase. Place your units in the Green Zone.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
16
src/assets/data/narrative/narrative_01_outro.json
Normal file
16
src/assets/data/narrative/narrative_01_outro.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"id": "NARRATIVE_01_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Director Vorn",
|
||||
"text": "Efficient. Take these schematics—you'll need an engineer for what comes next.",
|
||||
"trigger": {
|
||||
"type": "UNLOCK_CLASS",
|
||||
"class_id": "CLASS_TINKER"
|
||||
},
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_02_intro.json
Normal file
12
src/assets/data/narrative/narrative_02_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_02_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Baroness Seraphina",
|
||||
"text": "Something in the Fungal Caves is scattering our comms signals. Fix it, and I'll open my shop to you.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
16
src/assets/data/narrative/narrative_02_outro.json
Normal file
16
src/assets/data/narrative/narrative_02_outro.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"id": "NARRATIVE_02_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Baroness Seraphina",
|
||||
"text": "Signal green. You're useful. The Marketplace is now open to you.",
|
||||
"trigger": {
|
||||
"type": "UNLOCK_CLASS",
|
||||
"class_id": "CLASS_SCAVENGER"
|
||||
},
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_03_intro.json
Normal file
12
src/assets/data/narrative/narrative_03_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_03_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "General Kael",
|
||||
"text": "The Hub's foundation is cracking. Shardborn sappers are undermining the cliff. Stop them.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
16
src/assets/data/narrative/narrative_03_outro.json
Normal file
16
src/assets/data/narrative/narrative_03_outro.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"id": "NARRATIVE_03_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "General Kael",
|
||||
"text": "Cliff secured. The Vanguard stands ready to join your roster.",
|
||||
"trigger": {
|
||||
"type": "UNLOCK_CLASS",
|
||||
"class_id": "CLASS_VANGUARD"
|
||||
},
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
19
src/assets/data/narrative/narrative_04_intro.json
Normal file
19
src/assets/data/narrative/narrative_04_intro.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"id": "NARRATIVE_04_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "System",
|
||||
"text": "Entering Void-Seep Layer. Reality stability: 40%.",
|
||||
"next": "2"
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Vanguard",
|
||||
"text": "Command, the Shardborn here... they are wearing torn uniforms. Like ours.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
16
src/assets/data/narrative/narrative_04_outro.json
Normal file
16
src/assets/data/narrative/narrative_04_outro.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"id": "NARRATIVE_04_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Arch-Librarian Elara",
|
||||
"text": "The data confirms our fears. The Shardborn are the mutated remnants of the Ancients. But we can learn from them.",
|
||||
"trigger": {
|
||||
"type": "UNLOCK_CLASS",
|
||||
"class_id": "CLASS_BATTLE_MAGE"
|
||||
},
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
36
src/assets/data/narrative/narrative_05_intro.json
Normal file
36
src/assets/data/narrative/narrative_05_intro.json
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"id": "NARRATIVE_05_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "System",
|
||||
"text": "Iron Legion soldiers have barricaded the road. Merchant mercenaries are preparing to breach.",
|
||||
"next": "2"
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"type": "CHOICE",
|
||||
"speaker": "Tactical Decision",
|
||||
"text": "Who do you support?",
|
||||
"choices": [
|
||||
{
|
||||
"text": "Side with Legion",
|
||||
"trigger": {
|
||||
"type": "SET_MISSION_VARIANT",
|
||||
"variant": "VS_EXCHANGE"
|
||||
},
|
||||
"next": "END"
|
||||
},
|
||||
{
|
||||
"text": "Side with Exchange",
|
||||
"trigger": {
|
||||
"type": "SET_MISSION_VARIANT",
|
||||
"variant": "VS_LEGION"
|
||||
},
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_05_outro.json
Normal file
12
src/assets/data/narrative/narrative_05_outro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_05_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "System",
|
||||
"text": "The opposing force retreats. The sector is secured.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_06_intro.json
Normal file
12
src/assets/data/narrative/narrative_06_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_06_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Arch-Librarian Elara",
|
||||
"text": "The resonance frequency is spiking. Get the crystals before they explode.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
16
src/assets/data/narrative/narrative_06_outro.json
Normal file
16
src/assets/data/narrative/narrative_06_outro.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"id": "NARRATIVE_06_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Arch-Librarian Elara",
|
||||
"text": "Magnificent. I've shared some advanced casting techniques with your Weavers.",
|
||||
"trigger": {
|
||||
"type": "UNLOCK_MASTERY",
|
||||
"class_id": "CLASS_WEAVER"
|
||||
},
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_07_intro.json
Normal file
12
src/assets/data/narrative/narrative_07_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_07_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Director Vorn",
|
||||
"text": "The factory controls are scattered. Hit three consoles to bypass the safety lock.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
16
src/assets/data/narrative/narrative_07_outro.json
Normal file
16
src/assets/data/narrative/narrative_07_outro.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"id": "NARRATIVE_07_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Director Vorn",
|
||||
"text": "Power levels stabilizing at 200%. Haha! We're back in business!",
|
||||
"trigger": {
|
||||
"type": "UNLOCK_MASTERY",
|
||||
"class_id": "CLASS_TINKER"
|
||||
},
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_08_intro.json
Normal file
12
src/assets/data/narrative/narrative_08_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_08_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Director Vorn",
|
||||
"text": "Slight miscalculation. The factory printed a Series-9 Siege Engine. Dismantle it.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
16
src/assets/data/narrative/narrative_08_outro.json
Normal file
16
src/assets/data/narrative/narrative_08_outro.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"id": "NARRATIVE_08_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Director Vorn",
|
||||
"text": "Take a piece of the plating. It's lighter than steel and twice as strong.",
|
||||
"trigger": {
|
||||
"type": "GIVE_ITEM",
|
||||
"item_id": "ITEM_TITAN_PLATING"
|
||||
},
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_09_intro.json
Normal file
12
src/assets/data/narrative/narrative_09_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_09_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Director Vorn",
|
||||
"text": "My courier ship went down. Bandits are picking it clean. Get that drive back.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_09_outro.json
Normal file
12
src/assets/data/narrative/narrative_09_outro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_09_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Director Vorn",
|
||||
"text": "Drive secure. Encryption intact. Good work.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_10_intro.json
Normal file
12
src/assets/data/narrative/narrative_10_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_10_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "General Kael",
|
||||
"text": "They are coming in force. Dig in. Shields up. Hold until relieved.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
16
src/assets/data/narrative/narrative_10_outro.json
Normal file
16
src/assets/data/narrative/narrative_10_outro.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"id": "NARRATIVE_10_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "General Kael",
|
||||
"text": "You held. Take this shield. It stopped a Void Brute once.",
|
||||
"trigger": {
|
||||
"type": "GIVE_ITEM",
|
||||
"item_id": "ITEM_IRON_TOWER_SHIELD"
|
||||
},
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_11_intro.json
Normal file
12
src/assets/data/narrative/narrative_11_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_11_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "General Kael",
|
||||
"text": "Defense is just delayed defeat. Now we attack. Burn the nest out.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
16
src/assets/data/narrative/narrative_11_outro.json
Normal file
16
src/assets/data/narrative/narrative_11_outro.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"id": "NARRATIVE_11_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "General Kael",
|
||||
"text": "Smoke and scrap. I'm authorizing your squad to use the Mk2 prints.",
|
||||
"trigger": {
|
||||
"type": "UNLOCK_BLUEPRINT",
|
||||
"item_id": "ITEM_HEAVY_PLATE_MK2"
|
||||
},
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_12_intro.json
Normal file
12
src/assets/data/narrative/narrative_12_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_12_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "General Kael",
|
||||
"text": "The beast organizing the raids is here. We strike as one iron fist.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
16
src/assets/data/narrative/narrative_12_outro.json
Normal file
16
src/assets/data/narrative/narrative_12_outro.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"id": "NARRATIVE_12_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "General Kael",
|
||||
"text": "Target destroyed. I am granting you the rank of Warlord within the Legion.",
|
||||
"trigger": {
|
||||
"type": "UNLOCK_MASTERY",
|
||||
"class_id": "CLASS_VANGUARD"
|
||||
},
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_13_intro.json
Normal file
12
src/assets/data/narrative/narrative_13_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_13_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Baroness Seraphina",
|
||||
"text": "I have a delicate package moving on a Mule Bot. Get it to the Sky-Dock. Do not drop it.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
16
src/assets/data/narrative/narrative_13_outro.json
Normal file
16
src/assets/data/narrative/narrative_13_outro.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"id": "NARRATIVE_13_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Baroness Seraphina",
|
||||
"text": "Wonderful! The cargo is intact. Take this mercenary contract as a bonus.",
|
||||
"trigger": {
|
||||
"type": "GIVE_ITEM",
|
||||
"item_id": "ITEM_MERCENARY_CONTRACT"
|
||||
},
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_14_intro.json
Normal file
12
src/assets/data/narrative/narrative_14_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_14_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Baroness Seraphina",
|
||||
"text": "Bandits have moved into *my* mine. Evict them, but don't damage the equipment.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_14_outro.json
Normal file
12
src/assets/data/narrative/narrative_14_outro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_14_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Baroness Seraphina",
|
||||
"text": "Mine secured. I've deposited your fee. Don't spend it all in one place.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_15_intro.json
Normal file
12
src/assets/data/narrative/narrative_15_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_15_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Baroness Seraphina",
|
||||
"text": "Someone wants this Core for free. Keep them off me while I close the deal.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
16
src/assets/data/narrative/narrative_15_outro.json
Normal file
16
src/assets/data/narrative/narrative_15_outro.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"id": "NARRATIVE_15_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Baroness Seraphina",
|
||||
"text": "Consider us partners. I'm giving you Platinum status at the exchange.",
|
||||
"trigger": {
|
||||
"type": "GIVE_ITEM",
|
||||
"item_id": "ITEM_MARKET_PASS_PLATINUM"
|
||||
},
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_16_intro.json
Normal file
12
src/assets/data/narrative/narrative_16_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_16_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Elder Fira",
|
||||
"text": "The roots of the Great Tree are drinking poison. Cleanse the nodes.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
16
src/assets/data/narrative/narrative_16_outro.json
Normal file
16
src/assets/data/narrative/narrative_16_outro.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"id": "NARRATIVE_16_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Elder Fira",
|
||||
"text": "The sap flows clear again. Take this seed; it will mend your wounds.",
|
||||
"trigger": {
|
||||
"type": "UNLOCK_BLUEPRINT",
|
||||
"item_id": "ITEM_REGEN_RING_BLUEPRINT"
|
||||
},
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_17_intro.json
Normal file
12
src/assets/data/narrative/narrative_17_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_17_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Elder Fira",
|
||||
"text": "My children are lost in the white void. Bring them home before they dissolve.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
16
src/assets/data/narrative/narrative_17_outro.json
Normal file
16
src/assets/data/narrative/narrative_17_outro.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"id": "NARRATIVE_17_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Elder Fira",
|
||||
"text": "They are shaken, but safe. Light reveals truth; take this lantern.",
|
||||
"trigger": {
|
||||
"type": "GIVE_ITEM",
|
||||
"item_id": "ITEM_SPIRIT_LANTERN"
|
||||
},
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_18_intro.json
Normal file
12
src/assets/data/narrative/narrative_18_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_18_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Elder Fira",
|
||||
"text": "There. The corruption heart. Burn the rot so the green may grow again.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
16
src/assets/data/narrative/narrative_18_outro.json
Normal file
16
src/assets/data/narrative/narrative_18_outro.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"id": "NARRATIVE_18_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Elder Fira",
|
||||
"text": "I have taught your healers the ancient rites. They are true Custodians now.",
|
||||
"trigger": {
|
||||
"type": "UNLOCK_MASTERY",
|
||||
"class_id": "CLASS_CUSTODIAN"
|
||||
},
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_19_intro.json
Normal file
12
src/assets/data/narrative/narrative_19_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_19_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Ambassador sol'Ria",
|
||||
"text": "This is madness! Get me out of this insanity and the Exchange will pay double!",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_19_outro.json
Normal file
12
src/assets/data/narrative/narrative_19_outro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_19_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Ambassador sol'Ria",
|
||||
"text": "Neutrality is getting expensive, Explorer. You'll have to pick a side soon.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
43
src/assets/data/narrative/narrative_20_intro.json
Normal file
43
src/assets/data/narrative/narrative_20_intro.json
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
"id": "NARRATIVE_20_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "General Kael",
|
||||
"text": "We need to cut the power to the factory.",
|
||||
"next": "2"
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Director Vorn",
|
||||
"text": "Don't! That factory is keeping us alive! Help me disarm the charges!",
|
||||
"next": "3"
|
||||
},
|
||||
{
|
||||
"id": "3",
|
||||
"type": "CHOICE",
|
||||
"speaker": "Tactical Decision",
|
||||
"text": "Arm or Disarm?",
|
||||
"choices": [
|
||||
{
|
||||
"text": "Arm (Legion)",
|
||||
"trigger": {
|
||||
"type": "SET_MISSION_VARIANT",
|
||||
"variant": "LEGION_SIDE"
|
||||
},
|
||||
"next": "END"
|
||||
},
|
||||
{
|
||||
"text": "Disarm (Concord)",
|
||||
"trigger": {
|
||||
"type": "SET_MISSION_VARIANT",
|
||||
"variant": "CONCORD_SIDE"
|
||||
},
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
17
src/assets/data/narrative/narrative_20_outro.json
Normal file
17
src/assets/data/narrative/narrative_20_outro.json
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"id": "NARRATIVE_20_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "System",
|
||||
"text": "The operation is complete. Your allegiance has been noted.",
|
||||
"trigger": {
|
||||
"type": "MODIFY_RELATION",
|
||||
"faction": "DYNAMIC_WINNER",
|
||||
"amount": 100
|
||||
},
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
19
src/assets/data/narrative/narrative_21_intro.json
Normal file
19
src/assets/data/narrative/narrative_21_intro.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"id": "NARRATIVE_21_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Arch-Librarian Elara",
|
||||
"text": "This Geode belongs in a museum. Secure it.",
|
||||
"next": "2"
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Baroness Seraphina",
|
||||
"text": "Finders keepers. My boys are already there.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_21_outro.json
Normal file
12
src/assets/data/narrative/narrative_21_outro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_21_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Arch-Librarian Elara",
|
||||
"text": "The resonance... it's a map. It points directly to the bottom of the Abyss.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
19
src/assets/data/narrative/narrative_22_intro.json
Normal file
19
src/assets/data/narrative/narrative_22_intro.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"id": "NARRATIVE_22_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Elder Fira",
|
||||
"text": "A charlatan wearing our robes spreads lies in the lower caves. He claims the rot is a blessing.",
|
||||
"next": "2"
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Elder Fira",
|
||||
"text": "Silence him before he poisons the minds of the young.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_22_outro.json
Normal file
12
src/assets/data/narrative/narrative_22_outro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_22_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Elder Fira",
|
||||
"text": "The false voice is stilled. We found this idol on him... it reeks of the Void.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
19
src/assets/data/narrative/narrative_23_intro.json
Normal file
19
src/assets/data/narrative/narrative_23_intro.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"id": "NARRATIVE_23_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Director Vorn",
|
||||
"text": "Seismic warning! The Spire is pulsing. Debris is raining down on the Frontier.",
|
||||
"next": "2"
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Director Vorn",
|
||||
"text": "Get our people out of there! Avoid the red zones!",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_23_outro.json
Normal file
12
src/assets/data/narrative/narrative_23_outro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_23_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Director Vorn",
|
||||
"text": "Casualties minimal. Good work. The readings from that quake... the Spire is waking up.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
19
src/assets/data/narrative/narrative_24_intro.json
Normal file
19
src/assets/data/narrative/narrative_24_intro.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"id": "NARRATIVE_24_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "General Kael",
|
||||
"text": "This is it. They are pouring out of every rift. It's an invasion.",
|
||||
"next": "2"
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "General Kael",
|
||||
"text": "No retreat. No surrender. Hold until the last shell is spent.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_24_outro.json
Normal file
12
src/assets/data/narrative/narrative_24_outro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_24_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "General Kael",
|
||||
"text": "The wave is broken. But we can't sustain this. We have to take the fight to them.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
19
src/assets/data/narrative/narrative_25_intro.json
Normal file
19
src/assets/data/narrative/narrative_25_intro.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"id": "NARRATIVE_25_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Arch-Librarian Elara",
|
||||
"text": "The alliance stands united, for now. The elevator to the Core is ahead.",
|
||||
"next": "2"
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Director Vorn",
|
||||
"text": "I've hacked the locking mechanism. Just get us there alive.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_25_outro.json
Normal file
12
src/assets/data/narrative/narrative_25_outro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_25_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "System",
|
||||
"text": "Access Granted. Descending to Layer 1.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_26_intro.json
Normal file
12
src/assets/data/narrative/narrative_26_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_26_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "General Kael",
|
||||
"text": "Layer 1. The Iron Shell. This is where they build the machines.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_26_outro.json
Normal file
12
src/assets/data/narrative/narrative_26_outro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_26_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "System",
|
||||
"text": "Shield Generators offline. Path to Layer 2 open.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_27_intro.json
Normal file
12
src/assets/data/narrative/narrative_27_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_27_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Arch-Librarian Elara",
|
||||
"text": "Layer 2. The Crystal Heart. The magic here is so dense it's solidifying the air.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_27_outro.json
Normal file
12
src/assets/data/narrative/narrative_27_outro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_27_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "System",
|
||||
"text": "Navigation complete. Path to Layer 3 open.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_28_intro.json
Normal file
12
src/assets/data/narrative/narrative_28_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_28_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Elder Fira",
|
||||
"text": "Layer 3. The Rotting Soul. Do not breathe too deeply here.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_28_outro.json
Normal file
12
src/assets/data/narrative/narrative_28_outro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_28_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "System",
|
||||
"text": "Titan destroyed. Path to Layer 4 open.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_29_intro.json
Normal file
12
src/assets/data/narrative/narrative_29_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_29_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "System",
|
||||
"text": "Layer 4. The Void. Warning: Mirror Entities detected.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_29_outro.json
Normal file
12
src/assets/data/narrative/narrative_29_outro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_29_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "System",
|
||||
"text": "Shadows dispersed. Entering Antechamber.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_30_intro.json
Normal file
12
src/assets/data/narrative/narrative_30_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_30_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "General Kael",
|
||||
"text": "The Gatekeeper. Look at the size of that thing.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_30_outro.json
Normal file
12
src/assets/data/narrative/narrative_30_outro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_30_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "System",
|
||||
"text": "Gatekeeper neutralized. The Core is ahead.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_31_intro.json
Normal file
12
src/assets/data/narrative/narrative_31_intro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_31_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Director Vorn",
|
||||
"text": "This is it. Get the Sync Device to the center. If it breaks, we fail.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
12
src/assets/data/narrative/narrative_31_outro.json
Normal file
12
src/assets/data/narrative/narrative_31_outro.json
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "NARRATIVE_31_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "System",
|
||||
"text": "Synchronization complete. The Arch-Corruptor is manifesting.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
19
src/assets/data/narrative/narrative_32_intro.json
Normal file
19
src/assets/data/narrative/narrative_32_intro.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"id": "NARRATIVE_32_INTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "System",
|
||||
"text": "Approaching Singularity. Reality integrity critical.",
|
||||
"next": "2"
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "The Arch-Corruptor",
|
||||
"text": "YOU CANNOT STOP THE STILLNESS. IT IS PEACE.",
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
22
src/assets/data/narrative/narrative_32_outro.json
Normal file
22
src/assets/data/narrative/narrative_32_outro.json
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"id": "NARRATIVE_32_OUTRO",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "1",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "System",
|
||||
"text": "Target destroyed. Spire energy stabilizing.",
|
||||
"next": "2"
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"type": "DIALOGUE",
|
||||
"speaker": "Narrator",
|
||||
"text": "And so, the Explorer stood at the heart of the world, and made their choice...",
|
||||
"trigger": {
|
||||
"type": "GAME_ENDING"
|
||||
},
|
||||
"next": "END"
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
Reference in a new issue