diff --git a/src/assets/data/missions/mission_act1_01.json b/src/assets/data/missions/mission_act1_01.json new file mode 100644 index 0000000..dfb09b0 --- /dev/null +++ b/src/assets/data/missions/mission_act1_01.json @@ -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 + } + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_act1_02.json b/src/assets/data/missions/mission_act1_02.json new file mode 100644 index 0000000..3dc3803 --- /dev/null +++ b/src/assets/data/missions/mission_act1_02.json @@ -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 + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_act1_03.json b/src/assets/data/missions/mission_act1_03.json new file mode 100644 index 0000000..edcbf4d --- /dev/null +++ b/src/assets/data/missions/mission_act1_03.json @@ -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 + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_04.json b/src/assets/data/missions/mission_story_04.json new file mode 100644 index 0000000..0704472 --- /dev/null +++ b/src/assets/data/missions/mission_story_04.json @@ -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 + } + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_05.json b/src/assets/data/missions/mission_story_05.json new file mode 100644 index 0000000..19ca1eb --- /dev/null +++ b/src/assets/data/missions/mission_story_05.json @@ -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 + } + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_06.json b/src/assets/data/missions/mission_story_06.json new file mode 100644 index 0000000..4063a8e --- /dev/null +++ b/src/assets/data/missions/mission_story_06.json @@ -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 + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_07.json b/src/assets/data/missions/mission_story_07.json new file mode 100644 index 0000000..66ea268 --- /dev/null +++ b/src/assets/data/missions/mission_story_07.json @@ -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 + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_08.json b/src/assets/data/missions/mission_story_08.json new file mode 100644 index 0000000..f06bc12 --- /dev/null +++ b/src/assets/data/missions/mission_story_08.json @@ -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 + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_09.json b/src/assets/data/missions/mission_story_09.json new file mode 100644 index 0000000..9a1aa77 --- /dev/null +++ b/src/assets/data/missions/mission_story_09.json @@ -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" + ] + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_10.json b/src/assets/data/missions/mission_story_10.json new file mode 100644 index 0000000..066ef27 --- /dev/null +++ b/src/assets/data/missions/mission_story_10.json @@ -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 + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_11.json b/src/assets/data/missions/mission_story_11.json new file mode 100644 index 0000000..5e0e1cf --- /dev/null +++ b/src/assets/data/missions/mission_story_11.json @@ -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 + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_12.json b/src/assets/data/missions/mission_story_12.json new file mode 100644 index 0000000..f727e3c --- /dev/null +++ b/src/assets/data/missions/mission_story_12.json @@ -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 + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_13.json b/src/assets/data/missions/mission_story_13.json new file mode 100644 index 0000000..c339964 --- /dev/null +++ b/src/assets/data/missions/mission_story_13.json @@ -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 + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_14.json b/src/assets/data/missions/mission_story_14.json new file mode 100644 index 0000000..90d778c --- /dev/null +++ b/src/assets/data/missions/mission_story_14.json @@ -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 + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_15.json b/src/assets/data/missions/mission_story_15.json new file mode 100644 index 0000000..b93521b --- /dev/null +++ b/src/assets/data/missions/mission_story_15.json @@ -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 + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_16.json b/src/assets/data/missions/mission_story_16.json new file mode 100644 index 0000000..3b7a280 --- /dev/null +++ b/src/assets/data/missions/mission_story_16.json @@ -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 + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_17.json b/src/assets/data/missions/mission_story_17.json new file mode 100644 index 0000000..da17a2e --- /dev/null +++ b/src/assets/data/missions/mission_story_17.json @@ -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 + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_18.json b/src/assets/data/missions/mission_story_18.json new file mode 100644 index 0000000..824226f --- /dev/null +++ b/src/assets/data/missions/mission_story_18.json @@ -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 + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_19.json b/src/assets/data/missions/mission_story_19.json new file mode 100644 index 0000000..5e7bbbe --- /dev/null +++ b/src/assets/data/missions/mission_story_19.json @@ -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" + ] + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_20.json b/src/assets/data/missions/mission_story_20.json new file mode 100644 index 0000000..edc45c7 --- /dev/null +++ b/src/assets/data/missions/mission_story_20.json @@ -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 + } + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_21.json b/src/assets/data/missions/mission_story_21.json new file mode 100644 index 0000000..0826ea7 --- /dev/null +++ b/src/assets/data/missions/mission_story_21.json @@ -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" + ] + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_22.json b/src/assets/data/missions/mission_story_22.json new file mode 100644 index 0000000..7f728a2 --- /dev/null +++ b/src/assets/data/missions/mission_story_22.json @@ -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" + ] + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_23.json b/src/assets/data/missions/mission_story_23.json new file mode 100644 index 0000000..cc4f9c6 --- /dev/null +++ b/src/assets/data/missions/mission_story_23.json @@ -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 + } + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_24.json b/src/assets/data/missions/mission_story_24.json new file mode 100644 index 0000000..8024b6c --- /dev/null +++ b/src/assets/data/missions/mission_story_24.json @@ -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 + } + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_25.json b/src/assets/data/missions/mission_story_25.json new file mode 100644 index 0000000..1ce4d0a --- /dev/null +++ b/src/assets/data/missions/mission_story_25.json @@ -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" + ] + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_26.json b/src/assets/data/missions/mission_story_26.json new file mode 100644 index 0000000..d731a75 --- /dev/null +++ b/src/assets/data/missions/mission_story_26.json @@ -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 + } + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_27.json b/src/assets/data/missions/mission_story_27.json new file mode 100644 index 0000000..4a5b73a --- /dev/null +++ b/src/assets/data/missions/mission_story_27.json @@ -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 + } + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_28.json b/src/assets/data/missions/mission_story_28.json new file mode 100644 index 0000000..d97aa8e --- /dev/null +++ b/src/assets/data/missions/mission_story_28.json @@ -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 + } + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_29.json b/src/assets/data/missions/mission_story_29.json new file mode 100644 index 0000000..aa7d52d --- /dev/null +++ b/src/assets/data/missions/mission_story_29.json @@ -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" + ] + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_30.json b/src/assets/data/missions/mission_story_30.json new file mode 100644 index 0000000..5b86d9c --- /dev/null +++ b/src/assets/data/missions/mission_story_30.json @@ -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 + } + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_31.json b/src/assets/data/missions/mission_story_31.json new file mode 100644 index 0000000..5ed9fe5 --- /dev/null +++ b/src/assets/data/missions/mission_story_31.json @@ -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" + ] + } + } +} \ No newline at end of file diff --git a/src/assets/data/missions/mission_story_32.json b/src/assets/data/missions/mission_story_32.json new file mode 100644 index 0000000..fae8402 --- /dev/null +++ b/src/assets/data/missions/mission_story_32.json @@ -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" + ] + } + } +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_01_intro.json b/src/assets/data/narrative/narrative_01_intro.json new file mode 100644 index 0000000..9b85b5e --- /dev/null +++ b/src/assets/data/narrative/narrative_01_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_01_outro.json b/src/assets/data/narrative/narrative_01_outro.json new file mode 100644 index 0000000..2beb2ef --- /dev/null +++ b/src/assets/data/narrative/narrative_01_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_02_intro.json b/src/assets/data/narrative/narrative_02_intro.json new file mode 100644 index 0000000..d47665c --- /dev/null +++ b/src/assets/data/narrative/narrative_02_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_02_outro.json b/src/assets/data/narrative/narrative_02_outro.json new file mode 100644 index 0000000..ccd7b77 --- /dev/null +++ b/src/assets/data/narrative/narrative_02_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_03_intro.json b/src/assets/data/narrative/narrative_03_intro.json new file mode 100644 index 0000000..0b49d40 --- /dev/null +++ b/src/assets/data/narrative/narrative_03_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_03_outro.json b/src/assets/data/narrative/narrative_03_outro.json new file mode 100644 index 0000000..eb41a9c --- /dev/null +++ b/src/assets/data/narrative/narrative_03_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_04_intro.json b/src/assets/data/narrative/narrative_04_intro.json new file mode 100644 index 0000000..7b56ae5 --- /dev/null +++ b/src/assets/data/narrative/narrative_04_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_04_outro.json b/src/assets/data/narrative/narrative_04_outro.json new file mode 100644 index 0000000..9579971 --- /dev/null +++ b/src/assets/data/narrative/narrative_04_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_05_intro.json b/src/assets/data/narrative/narrative_05_intro.json new file mode 100644 index 0000000..91eb4b3 --- /dev/null +++ b/src/assets/data/narrative/narrative_05_intro.json @@ -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" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_05_outro.json b/src/assets/data/narrative/narrative_05_outro.json new file mode 100644 index 0000000..ac25214 --- /dev/null +++ b/src/assets/data/narrative/narrative_05_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_06_intro.json b/src/assets/data/narrative/narrative_06_intro.json new file mode 100644 index 0000000..91b0c58 --- /dev/null +++ b/src/assets/data/narrative/narrative_06_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_06_outro.json b/src/assets/data/narrative/narrative_06_outro.json new file mode 100644 index 0000000..ef7b855 --- /dev/null +++ b/src/assets/data/narrative/narrative_06_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_07_intro.json b/src/assets/data/narrative/narrative_07_intro.json new file mode 100644 index 0000000..9ce9caf --- /dev/null +++ b/src/assets/data/narrative/narrative_07_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_07_outro.json b/src/assets/data/narrative/narrative_07_outro.json new file mode 100644 index 0000000..ed678b3 --- /dev/null +++ b/src/assets/data/narrative/narrative_07_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_08_intro.json b/src/assets/data/narrative/narrative_08_intro.json new file mode 100644 index 0000000..881b81f --- /dev/null +++ b/src/assets/data/narrative/narrative_08_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_08_outro.json b/src/assets/data/narrative/narrative_08_outro.json new file mode 100644 index 0000000..bfefe1d --- /dev/null +++ b/src/assets/data/narrative/narrative_08_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_09_intro.json b/src/assets/data/narrative/narrative_09_intro.json new file mode 100644 index 0000000..f54e070 --- /dev/null +++ b/src/assets/data/narrative/narrative_09_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_09_outro.json b/src/assets/data/narrative/narrative_09_outro.json new file mode 100644 index 0000000..befab21 --- /dev/null +++ b/src/assets/data/narrative/narrative_09_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_10_intro.json b/src/assets/data/narrative/narrative_10_intro.json new file mode 100644 index 0000000..cca7408 --- /dev/null +++ b/src/assets/data/narrative/narrative_10_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_10_outro.json b/src/assets/data/narrative/narrative_10_outro.json new file mode 100644 index 0000000..3346822 --- /dev/null +++ b/src/assets/data/narrative/narrative_10_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_11_intro.json b/src/assets/data/narrative/narrative_11_intro.json new file mode 100644 index 0000000..c6e130d --- /dev/null +++ b/src/assets/data/narrative/narrative_11_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_11_outro.json b/src/assets/data/narrative/narrative_11_outro.json new file mode 100644 index 0000000..0495649 --- /dev/null +++ b/src/assets/data/narrative/narrative_11_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_12_intro.json b/src/assets/data/narrative/narrative_12_intro.json new file mode 100644 index 0000000..f61bfdc --- /dev/null +++ b/src/assets/data/narrative/narrative_12_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_12_outro.json b/src/assets/data/narrative/narrative_12_outro.json new file mode 100644 index 0000000..3ae5f85 --- /dev/null +++ b/src/assets/data/narrative/narrative_12_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_13_intro.json b/src/assets/data/narrative/narrative_13_intro.json new file mode 100644 index 0000000..78263e5 --- /dev/null +++ b/src/assets/data/narrative/narrative_13_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_13_outro.json b/src/assets/data/narrative/narrative_13_outro.json new file mode 100644 index 0000000..86e2fc7 --- /dev/null +++ b/src/assets/data/narrative/narrative_13_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_14_intro.json b/src/assets/data/narrative/narrative_14_intro.json new file mode 100644 index 0000000..010abf4 --- /dev/null +++ b/src/assets/data/narrative/narrative_14_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_14_outro.json b/src/assets/data/narrative/narrative_14_outro.json new file mode 100644 index 0000000..3440ed5 --- /dev/null +++ b/src/assets/data/narrative/narrative_14_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_15_intro.json b/src/assets/data/narrative/narrative_15_intro.json new file mode 100644 index 0000000..f4e6f82 --- /dev/null +++ b/src/assets/data/narrative/narrative_15_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_15_outro.json b/src/assets/data/narrative/narrative_15_outro.json new file mode 100644 index 0000000..5841256 --- /dev/null +++ b/src/assets/data/narrative/narrative_15_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_16_intro.json b/src/assets/data/narrative/narrative_16_intro.json new file mode 100644 index 0000000..eb2b6b6 --- /dev/null +++ b/src/assets/data/narrative/narrative_16_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_16_outro.json b/src/assets/data/narrative/narrative_16_outro.json new file mode 100644 index 0000000..0f8023a --- /dev/null +++ b/src/assets/data/narrative/narrative_16_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_17_intro.json b/src/assets/data/narrative/narrative_17_intro.json new file mode 100644 index 0000000..ed15737 --- /dev/null +++ b/src/assets/data/narrative/narrative_17_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_17_outro.json b/src/assets/data/narrative/narrative_17_outro.json new file mode 100644 index 0000000..1f25761 --- /dev/null +++ b/src/assets/data/narrative/narrative_17_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_18_intro.json b/src/assets/data/narrative/narrative_18_intro.json new file mode 100644 index 0000000..43c20ea --- /dev/null +++ b/src/assets/data/narrative/narrative_18_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_18_outro.json b/src/assets/data/narrative/narrative_18_outro.json new file mode 100644 index 0000000..2d26d0c --- /dev/null +++ b/src/assets/data/narrative/narrative_18_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_19_intro.json b/src/assets/data/narrative/narrative_19_intro.json new file mode 100644 index 0000000..a1e0a76 --- /dev/null +++ b/src/assets/data/narrative/narrative_19_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_19_outro.json b/src/assets/data/narrative/narrative_19_outro.json new file mode 100644 index 0000000..f87d0c8 --- /dev/null +++ b/src/assets/data/narrative/narrative_19_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_20_intro.json b/src/assets/data/narrative/narrative_20_intro.json new file mode 100644 index 0000000..8c9751a --- /dev/null +++ b/src/assets/data/narrative/narrative_20_intro.json @@ -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" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_20_outro.json b/src/assets/data/narrative/narrative_20_outro.json new file mode 100644 index 0000000..2617797 --- /dev/null +++ b/src/assets/data/narrative/narrative_20_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_21_intro.json b/src/assets/data/narrative/narrative_21_intro.json new file mode 100644 index 0000000..a1e6a9c --- /dev/null +++ b/src/assets/data/narrative/narrative_21_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_21_outro.json b/src/assets/data/narrative/narrative_21_outro.json new file mode 100644 index 0000000..1c50b67 --- /dev/null +++ b/src/assets/data/narrative/narrative_21_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_22_intro.json b/src/assets/data/narrative/narrative_22_intro.json new file mode 100644 index 0000000..d26dccb --- /dev/null +++ b/src/assets/data/narrative/narrative_22_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_22_outro.json b/src/assets/data/narrative/narrative_22_outro.json new file mode 100644 index 0000000..3b1734d --- /dev/null +++ b/src/assets/data/narrative/narrative_22_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_23_intro.json b/src/assets/data/narrative/narrative_23_intro.json new file mode 100644 index 0000000..b761e71 --- /dev/null +++ b/src/assets/data/narrative/narrative_23_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_23_outro.json b/src/assets/data/narrative/narrative_23_outro.json new file mode 100644 index 0000000..39edca6 --- /dev/null +++ b/src/assets/data/narrative/narrative_23_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_24_intro.json b/src/assets/data/narrative/narrative_24_intro.json new file mode 100644 index 0000000..0f9ccf9 --- /dev/null +++ b/src/assets/data/narrative/narrative_24_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_24_outro.json b/src/assets/data/narrative/narrative_24_outro.json new file mode 100644 index 0000000..af72977 --- /dev/null +++ b/src/assets/data/narrative/narrative_24_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_25_intro.json b/src/assets/data/narrative/narrative_25_intro.json new file mode 100644 index 0000000..2754807 --- /dev/null +++ b/src/assets/data/narrative/narrative_25_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_25_outro.json b/src/assets/data/narrative/narrative_25_outro.json new file mode 100644 index 0000000..602dd88 --- /dev/null +++ b/src/assets/data/narrative/narrative_25_outro.json @@ -0,0 +1,12 @@ +{ + "id": "NARRATIVE_25_OUTRO", + "nodes": [ + { + "id": "1", + "type": "DIALOGUE", + "speaker": "System", + "text": "Access Granted. Descending to Layer 1.", + "next": "END" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_26_intro.json b/src/assets/data/narrative/narrative_26_intro.json new file mode 100644 index 0000000..f6e8914 --- /dev/null +++ b/src/assets/data/narrative/narrative_26_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_26_outro.json b/src/assets/data/narrative/narrative_26_outro.json new file mode 100644 index 0000000..d845641 --- /dev/null +++ b/src/assets/data/narrative/narrative_26_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_27_intro.json b/src/assets/data/narrative/narrative_27_intro.json new file mode 100644 index 0000000..dcf75b9 --- /dev/null +++ b/src/assets/data/narrative/narrative_27_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_27_outro.json b/src/assets/data/narrative/narrative_27_outro.json new file mode 100644 index 0000000..6ff0aa7 --- /dev/null +++ b/src/assets/data/narrative/narrative_27_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_28_intro.json b/src/assets/data/narrative/narrative_28_intro.json new file mode 100644 index 0000000..f3779ea --- /dev/null +++ b/src/assets/data/narrative/narrative_28_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_28_outro.json b/src/assets/data/narrative/narrative_28_outro.json new file mode 100644 index 0000000..a0ae3fc --- /dev/null +++ b/src/assets/data/narrative/narrative_28_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_29_intro.json b/src/assets/data/narrative/narrative_29_intro.json new file mode 100644 index 0000000..75b22e2 --- /dev/null +++ b/src/assets/data/narrative/narrative_29_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_29_outro.json b/src/assets/data/narrative/narrative_29_outro.json new file mode 100644 index 0000000..5c60fcb --- /dev/null +++ b/src/assets/data/narrative/narrative_29_outro.json @@ -0,0 +1,12 @@ +{ + "id": "NARRATIVE_29_OUTRO", + "nodes": [ + { + "id": "1", + "type": "DIALOGUE", + "speaker": "System", + "text": "Shadows dispersed. Entering Antechamber.", + "next": "END" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_30_intro.json b/src/assets/data/narrative/narrative_30_intro.json new file mode 100644 index 0000000..738de97 --- /dev/null +++ b/src/assets/data/narrative/narrative_30_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_30_outro.json b/src/assets/data/narrative/narrative_30_outro.json new file mode 100644 index 0000000..b01f77f --- /dev/null +++ b/src/assets/data/narrative/narrative_30_outro.json @@ -0,0 +1,12 @@ +{ + "id": "NARRATIVE_30_OUTRO", + "nodes": [ + { + "id": "1", + "type": "DIALOGUE", + "speaker": "System", + "text": "Gatekeeper neutralized. The Core is ahead.", + "next": "END" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_31_intro.json b/src/assets/data/narrative/narrative_31_intro.json new file mode 100644 index 0000000..7087195 --- /dev/null +++ b/src/assets/data/narrative/narrative_31_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_31_outro.json b/src/assets/data/narrative/narrative_31_outro.json new file mode 100644 index 0000000..83cba38 --- /dev/null +++ b/src/assets/data/narrative/narrative_31_outro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_32_intro.json b/src/assets/data/narrative/narrative_32_intro.json new file mode 100644 index 0000000..769c809 --- /dev/null +++ b/src/assets/data/narrative/narrative_32_intro.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/src/assets/data/narrative/narrative_32_outro.json b/src/assets/data/narrative/narrative_32_outro.json new file mode 100644 index 0000000..e47ea8e --- /dev/null +++ b/src/assets/data/narrative/narrative_32_outro.json @@ -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" + } + ] +} \ No newline at end of file