diff --git a/apps/api/src/data/explorations.ts b/apps/api/src/data/explorations.ts index d796afb..f343b66 100644 --- a/apps/api/src/data/explorations.ts +++ b/apps/api/src/data/explorations.ts @@ -13,7 +13,7 @@ export const defaultExplorations: Array = [ { description: "Rolling fields of wildflowers at the edge of the guild's territory. Travellers pass through often, and occasionally leave things behind.", - durationSeconds: 3600, + durationSeconds: 5 * 60, events: [ { effect: { amount: 1000, type: "gold_gain" }, @@ -42,7 +42,7 @@ export const defaultExplorations: Array = [ ], id: "verdant_meadow", name: "The Verdant Meadow", - // 1h + // 5min possibleMaterials: [ { materialId: "verdant_sap", maxQuantity: 3, minQuantity: 1, weight: 3 }, ], @@ -52,7 +52,7 @@ export const defaultExplorations: Array = [ { description: "Ancient trees whose canopy blocks out most of the light. The forest whispers things your scouts swear they understand, just not when they try to remember later.", - durationSeconds: 7200, + durationSeconds: 10 * 60, events: [ { effect: { amount: 3000, type: "gold_gain" }, @@ -81,7 +81,7 @@ export const defaultExplorations: Array = [ ], id: "whispering_forest", name: "The Whispering Forest", - // 2h + // 10min possibleMaterials: [ { materialId: "verdant_sap", maxQuantity: 5, minQuantity: 2, weight: 3 }, { @@ -97,7 +97,7 @@ export const defaultExplorations: Array = [ { description: "A circle of trees so old they predate the kingdom. Druids once held ceremonies here. The trees remember, and their bark holds echoes of old power.", - durationSeconds: 10_800, + durationSeconds: 15 * 60, events: [ { effect: { amount: 6000, type: "gold_gain" }, @@ -126,7 +126,7 @@ export const defaultExplorations: Array = [ ], id: "ancient_grove", name: "The Ancient Grove", - // 3h + // 15min possibleMaterials: [ { materialId: "forest_crystal", @@ -142,7 +142,7 @@ export const defaultExplorations: Array = [ { description: "A clearing the locals will not enter after dark. Something about the bark of the trees here is different. Your scouts feel watched the entire time.", - durationSeconds: 14_400, + durationSeconds: 20 * 60, events: [ { effect: { amount: 10_000, type: "gold_gain" }, @@ -171,7 +171,7 @@ export const defaultExplorations: Array = [ ], id: "forbidden_glen", name: "The Forbidden Glen", - // 4h + // 20min possibleMaterials: [ { materialId: "forest_crystal", @@ -189,7 +189,7 @@ export const defaultExplorations: Array = [ { description: "What was once a military garrison, now half-buried in rubble and wild growth. The previous occupants left in a hurry and did not take everything.", - durationSeconds: 7200, + durationSeconds: 10 * 60, events: [ { effect: { amount: 4000, type: "gold_gain" }, @@ -214,7 +214,7 @@ export const defaultExplorations: Array = [ ], id: "collapsed_outpost", name: "The Collapsed Outpost", - // 2h + // 10min possibleMaterials: [ { materialId: "ruin_dust", maxQuantity: 5, minQuantity: 2, weight: 3 }, ], @@ -224,7 +224,7 @@ export const defaultExplorations: Array = [ { description: "The water here reflects things that aren't there. Something is at the bottom that doesn't want to be found, which means your scouts want very much to find it.", - durationSeconds: 14_400, + durationSeconds: 20 * 60, events: [ { effect: { amount: 10_000, type: "gold_gain" }, @@ -253,7 +253,7 @@ export const defaultExplorations: Array = [ ], id: "cursed_lake", name: "The Cursed Lake", - // 4h + // 20min possibleMaterials: [ { materialId: "ruin_dust", maxQuantity: 6, minQuantity: 2, weight: 3 }, { @@ -269,7 +269,7 @@ export const defaultExplorations: Array = [ { description: "Buried walls covered in script no living scholar can read. The knowledge is lost but the enchantments remain, faded but still murmuring in the stone.", - durationSeconds: 21_600, + durationSeconds: 30 * 60, events: [ { effect: { amount: 20_000, type: "gold_gain" }, @@ -298,7 +298,7 @@ export const defaultExplorations: Array = [ ], id: "runic_archive", name: "The Runic Archive", - // 6h + // 30min possibleMaterials: [ { materialId: "cursed_fragment", @@ -314,7 +314,7 @@ export const defaultExplorations: Array = [ { description: "The chamber the elder dragon called his own before your guild deposed him. He won't be back soon. Probably. The heat of his presence lingers in the stone.", - durationSeconds: 28_800, + durationSeconds: 40 * 60, events: [ { effect: { amount: 40_000, type: "gold_gain" }, @@ -343,7 +343,7 @@ export const defaultExplorations: Array = [ ], id: "dragon_throne", name: "The Dragon's Throne", - // 8h + // 40min possibleMaterials: [ { materialId: "cursed_fragment", @@ -366,7 +366,7 @@ export const defaultExplorations: Array = [ { description: "A cave carved by a glacier over thousands of years. The ice walls are so clear you can see things preserved within them from before the kingdom existed.", - durationSeconds: 10_800, + durationSeconds: 15 * 60, events: [ { effect: { amount: 8000, type: "gold_gain" }, @@ -395,7 +395,7 @@ export const defaultExplorations: Array = [ ], id: "glacial_cave", name: "The Glacial Cave", - // 3h + // 15min possibleMaterials: [ { materialId: "glacial_ice", maxQuantity: 5, minQuantity: 2, weight: 3 }, ], @@ -405,7 +405,7 @@ export const defaultExplorations: Array = [ { description: "Flat, white, and vast. The tundra looks featureless until you know what to look for. Under the ice, there are things that were buried with intent.", - durationSeconds: 21_600, + durationSeconds: 30 * 60, events: [ { effect: { amount: 18_000, type: "gold_gain" }, @@ -434,7 +434,7 @@ export const defaultExplorations: Array = [ ], id: "frozen_tundra", name: "The Frozen Tundra", - // 6h + // 30min possibleMaterials: [ { materialId: "glacial_ice", maxQuantity: 7, minQuantity: 3, weight: 3 }, { @@ -450,7 +450,7 @@ export const defaultExplorations: Array = [ { description: "A tear in reality that appeared after the Void Titan's defeat, miles above the world. Something leaks through it constantly. Mostly harmless. Mostly.", - durationSeconds: 32_400, + durationSeconds: 45 * 60, events: [ { effect: { amount: 35_000, type: "gold_gain" }, @@ -479,7 +479,7 @@ export const defaultExplorations: Array = [ ], id: "void_rift", name: "The Void Rift", - // 9h + // 45min possibleMaterials: [ { materialId: "frost_crystal", @@ -495,7 +495,7 @@ export const defaultExplorations: Array = [ { description: "At the absolute peak, a shrine nobody remembers building. The prayers still tied to its poles are in a language no scholar has identified. Offerings remain.", - durationSeconds: 43_200, + durationSeconds: 1 * 60 * 60, events: [ { effect: { amount: 60_000, type: "gold_gain" }, @@ -524,7 +524,7 @@ export const defaultExplorations: Array = [ ], id: "summit_shrine", name: "The Summit Shrine", - // 12h + // 1h possibleMaterials: [ { materialId: "frost_crystal", @@ -542,7 +542,7 @@ export const defaultExplorations: Array = [ { description: "A depression in the marsh where the fog never fully lifts. Sound behaves differently here. Your scouts can hear things they probably should not.", - durationSeconds: 18_000, + durationSeconds: 25 * 60, events: [ { effect: { amount: 15_000, type: "gold_gain" }, @@ -571,7 +571,7 @@ export const defaultExplorations: Array = [ ], id: "fog_hollow", name: "The Fog Hollow", - // 5h + // 25min possibleMaterials: [ { materialId: "marsh_root", maxQuantity: 5, minQuantity: 2, weight: 3 }, ], @@ -581,7 +581,7 @@ export const defaultExplorations: Array = [ { description: "A cave system beneath the marsh floor. The water drips through the ceiling in patterns that look deliberate. Nothing down here needs eyes to find you.", - durationSeconds: 36_000, + durationSeconds: 50 * 60, events: [ { effect: { amount: 35_000, type: "gold_gain" }, @@ -610,7 +610,7 @@ export const defaultExplorations: Array = [ ], id: "dark_grotto", name: "The Dark Grotto", - // 10h + // 50min possibleMaterials: [ { materialId: "marsh_root", maxQuantity: 7, minQuantity: 3, weight: 3 }, { @@ -626,7 +626,7 @@ export const defaultExplorations: Array = [ { description: "A burial mound. Something was interred here that should not have been — or perhaps something interred itself, which is a different and more troubling problem.", - durationSeconds: 54_000, + durationSeconds: 90 * 60, events: [ { effect: { amount: 70_000, type: "gold_gain" }, @@ -655,7 +655,7 @@ export const defaultExplorations: Array = [ ], id: "cursed_barrow", name: "The Cursed Barrow", - // 15h + // 1.5h possibleMaterials: [ { materialId: "shadow_essence", @@ -671,7 +671,7 @@ export const defaultExplorations: Array = [ { description: "The bottommost point of the Shadow Marshes, where the water is perfectly still and perfectly black. Your scouts can see the bottom. The bottom is very far down.", - durationSeconds: 72_000, + durationSeconds: 90 * 60, events: [ { effect: { amount: 120_000, type: "gold_gain" }, @@ -700,7 +700,7 @@ export const defaultExplorations: Array = [ ], id: "marsh_depths", name: "The Marsh Depths", - // 20h + // 1.5h possibleMaterials: [ { materialId: "shadow_essence", @@ -718,7 +718,7 @@ export const defaultExplorations: Array = [ { description: "A natural tunnel cut by ancient lava flows. Still warm. The walls glow faintly orange in some sections, which is either residual heat or something else.", - durationSeconds: 25_200, + durationSeconds: 35 * 60, events: [ { effect: { amount: 30_000, type: "gold_gain" }, @@ -747,7 +747,7 @@ export const defaultExplorations: Array = [ ], id: "magma_tunnel", name: "The Magma Tunnel", - // 7h + // 35min possibleMaterials: [ { materialId: "magma_stone", maxQuantity: 5, minQuantity: 2, weight: 3 }, ], @@ -757,7 +757,7 @@ export const defaultExplorations: Array = [ { description: "An ancient workshop space, built into the volcano by whoever the fire elementals served before they served no one. The fires here never went out.", - durationSeconds: 50_400, + durationSeconds: 1 * 60 * 60, events: [ { effect: { amount: 70_000, type: "gold_gain" }, @@ -786,7 +786,7 @@ export const defaultExplorations: Array = [ ], id: "forge_chamber", name: "The Forge Chamber", - // 14h + // 1h possibleMaterials: [ { materialId: "magma_stone", maxQuantity: 7, minQuantity: 3, weight: 3 }, { @@ -802,7 +802,7 @@ export const defaultExplorations: Array = [ { description: "A place of worship for entities that have never met a god but found the general idea appealing and decided to be worshipped instead. The fire elementals receive visitors here.", - durationSeconds: 75_600, + durationSeconds: 2 * 60 * 60, events: [ { effect: { amount: 130_000, type: "gold_gain" }, @@ -831,7 +831,7 @@ export const defaultExplorations: Array = [ ], id: "fire_temple", name: "The Fire Temple", - // 21h + // 2h possibleMaterials: [ { materialId: "ember_crystal", @@ -852,7 +852,7 @@ export const defaultExplorations: Array = [ { description: "The lowest point your guild can reach — close enough to the planet's core that the rocks bleed metal and the air shimmers with heat haze that never quite resolves into anything.", - durationSeconds: 100_800, + durationSeconds: 150 * 60, events: [ { effect: { amount: 250_000, type: "gold_gain" }, @@ -881,7 +881,7 @@ export const defaultExplorations: Array = [ ], id: "core_descent", name: "The Core Descent", - // 28h + // 2.5h possibleMaterials: [ { materialId: "ember_crystal", @@ -904,7 +904,7 @@ export const defaultExplorations: Array = [ { description: "Open void between reality and whatever lies beyond it. Stars in various states of life and death drift past. Your scouts learn very quickly not to touch them.", - durationSeconds: 36_000, + durationSeconds: 50 * 60, events: [ { effect: { amount: 500_000, type: "gold_gain" }, @@ -929,7 +929,7 @@ export const defaultExplorations: Array = [ ], id: "star_field", name: "The Star Field", - // 10h + // 50min possibleMaterials: [ { materialId: "stardust", maxQuantity: 7, minQuantity: 3, weight: 3 }, ], @@ -939,7 +939,7 @@ export const defaultExplorations: Array = [ { description: "A region where every possible outcome is equally real and they jostle each other for space. Your scouts exist in several states simultaneously here and find it disorienting.", - durationSeconds: 72_000, + durationSeconds: 90 * 60, events: [ { effect: { amount: 1_000_000, type: "gold_gain" }, @@ -968,7 +968,7 @@ export const defaultExplorations: Array = [ ], id: "probability_sea", name: "The Probability Sea", - // 20h + // 1.5h possibleMaterials: [ { materialId: "stardust", maxQuantity: 8, minQuantity: 4, weight: 3 }, { @@ -984,7 +984,7 @@ export const defaultExplorations: Array = [ { description: "A river of nothing flowing through the void. It carries things from everywhere to nowhere. Some of those things are valuable, if you know how to fish from a river of nothing.", - durationSeconds: 108_000, + durationSeconds: 150 * 60, events: [ { effect: { amount: 2_000_000, type: "gold_gain" }, @@ -1013,7 +1013,7 @@ export const defaultExplorations: Array = [ ], id: "void_current", name: "The Void Current", - // 30h + // 2.5h possibleMaterials: [ { materialId: "astral_thread", @@ -1029,7 +1029,7 @@ export const defaultExplorations: Array = [ { description: "The highest point of the astral void, where nothing exists so thoroughly that it becomes a kind of substance. Your scouts feel, for a moment, what it is like to be absolutely alone in all of existence.", - durationSeconds: 144_000, + durationSeconds: 210 * 60, events: [ { effect: { amount: 4_000_000, type: "gold_gain" }, @@ -1058,7 +1058,7 @@ export const defaultExplorations: Array = [ ], id: "null_zenith", name: "The Null Zenith", - // 40h + // 3.5h possibleMaterials: [ { materialId: "astral_thread", @@ -1076,7 +1076,7 @@ export const defaultExplorations: Array = [ { description: "A tower of compressed light older than the concept of architecture. The celestial host uses it as a marker. Your guild uses it as a starting point.", - durationSeconds: 43_200, + durationSeconds: 1 * 60 * 60, events: [ { effect: { amount: 3_000_000, type: "gold_gain" }, @@ -1105,7 +1105,7 @@ export const defaultExplorations: Array = [ ], id: "light_spire", name: "The Light Spire", - // 12h + // 1h possibleMaterials: [ { materialId: "celestial_dust", @@ -1120,7 +1120,7 @@ export const defaultExplorations: Array = [ { description: "Where the celestial choir rehearses, continuously, for a performance that has been ongoing since before your world had an audience. The harmonics do things to objects in the vicinity.", - durationSeconds: 86_400, + durationSeconds: 2 * 60 * 60, events: [ { effect: { amount: 6_000_000, type: "gold_gain" }, @@ -1149,7 +1149,7 @@ export const defaultExplorations: Array = [ ], id: "choir_hall", name: "The Choir Hall", - // 24h + // 2h possibleMaterials: [ { materialId: "celestial_dust", @@ -1170,7 +1170,7 @@ export const defaultExplorations: Array = [ { description: "Where the celestial host adjudicates disputes that have been ongoing since before your sun was lit. The proceedings are extremely formal. Interrupting them is inadvisable.", - durationSeconds: 129_600, + durationSeconds: 3 * 60 * 60, events: [ { effect: { amount: 12_000_000, type: "gold_gain" }, @@ -1199,7 +1199,7 @@ export const defaultExplorations: Array = [ ], id: "divine_court", name: "The Divine Court", - // 36h + // 3h possibleMaterials: [ { materialId: "divine_fragment", @@ -1215,7 +1215,7 @@ export const defaultExplorations: Array = [ { description: "Where the celestial host stores things they consider too valuable to use and too important to discard. Your guild has different ideas about what 'valuable' means.", - durationSeconds: 172_800, + durationSeconds: 4 * 60 * 60, events: [ { effect: { amount: 25_000_000, type: "gold_gain" }, @@ -1244,7 +1244,7 @@ export const defaultExplorations: Array = [ ], id: "celestial_vault", name: "The Celestial Vault", - // 48h + // 4h possibleMaterials: [ { materialId: "divine_fragment", @@ -1262,7 +1262,7 @@ export const defaultExplorations: Array = [ { description: "The lip of the trench, where the shelf drops away into depths that swallow light entirely. Your scouts can hear something breathing, very slowly, from far below.", - durationSeconds: 50_400, + durationSeconds: 1 * 60 * 60, events: [ { effect: { amount: 8_000_000, type: "gold_gain" }, @@ -1291,7 +1291,7 @@ export const defaultExplorations: Array = [ ], id: "trench_entrance", name: "The Trench Entrance", - // 14h + // 1h possibleMaterials: [ { materialId: "trench_coral", maxQuantity: 7, minQuantity: 3, weight: 3 }, ], @@ -1301,7 +1301,7 @@ export const defaultExplorations: Array = [ { description: "An underwater river at a depth that should be impossible to survive. Your scouts have learned, by necessity, to survive it anyway.", - durationSeconds: 100_800, + durationSeconds: 150 * 60, events: [ { effect: { amount: 18_000_000, type: "gold_gain" }, @@ -1330,7 +1330,7 @@ export const defaultExplorations: Array = [ ], id: "deep_current", name: "The Deep Current", - // 28h + // 2.5h possibleMaterials: [ { materialId: "trench_coral", maxQuantity: 9, minQuantity: 4, weight: 3 }, { materialId: "pressure_gem", maxQuantity: 2, minQuantity: 1, weight: 2 }, @@ -1341,7 +1341,7 @@ export const defaultExplorations: Array = [ { description: "A space at the bottom of the trench so far from light that light has no meaning here. Something has been in this chamber for so long it no longer needs to breathe.", - durationSeconds: 151_200, + durationSeconds: 210 * 60, events: [ { effect: { amount: 40_000_000, type: "gold_gain" }, @@ -1370,7 +1370,7 @@ export const defaultExplorations: Array = [ ], id: "sunless_chamber", name: "The Sunless Chamber", - // 42h + // 3.5h possibleMaterials: [ { materialId: "pressure_gem", maxQuantity: 3, minQuantity: 1, weight: 3 }, { @@ -1386,7 +1386,7 @@ export const defaultExplorations: Array = [ { description: "The absolute bottom of the trench. Something is here. It has been here since before your world was made. It is, today, patient. Your scouts are not sure this is always the case.", - durationSeconds: 201_600, + durationSeconds: 270 * 60, events: [ { effect: { amount: 80_000_000, type: "gold_gain" }, @@ -1415,7 +1415,7 @@ export const defaultExplorations: Array = [ ], id: "the_waiting_place", name: "The Waiting Place", - // 56h + // 4.5h possibleMaterials: [ { materialId: "pressure_gem", maxQuantity: 4, minQuantity: 2, weight: 3 }, { @@ -1433,7 +1433,7 @@ export const defaultExplorations: Array = [ { description: "An open-air market in the court's outer districts. The vendors sell things that were not legally obtained, in exchange for things that should not legally exist.", - durationSeconds: 57_600, + durationSeconds: 90 * 60, events: [ { effect: { amount: 20_000_000, type: "gold_gain" }, @@ -1462,7 +1462,7 @@ export const defaultExplorations: Array = [ ], id: "demon_market", name: "The Demon Market", - // 16h + // 1.5h possibleMaterials: [ { materialId: "brimstone_flake", @@ -1477,7 +1477,7 @@ export const defaultExplorations: Array = [ { description: "Where the court processes those who lost their cases. Your scouts move through it quickly and look at nothing. They still hear everything.", - durationSeconds: 115_200, + durationSeconds: 150 * 60, events: [ { effect: { amount: 45_000_000, type: "gold_gain" }, @@ -1506,7 +1506,7 @@ export const defaultExplorations: Array = [ ], id: "torment_hall", name: "The Torment Hall", - // 32h + // 2.5h possibleMaterials: [ { materialId: "brimstone_flake", @@ -1522,7 +1522,7 @@ export const defaultExplorations: Array = [ { description: "The court's industrial district, where deals are processed and the residue of completed contracts is extracted. The machinery runs on something the court considers renewable.", - durationSeconds: 172_800, + durationSeconds: 4 * 60 * 60, events: [ { effect: { amount: 90_000_000, type: "gold_gain" }, @@ -1551,7 +1551,7 @@ export const defaultExplorations: Array = [ ], id: "soul_forge", name: "The Soul Forge", - // 48h + // 4h possibleMaterials: [ { materialId: "demon_ichor", maxQuantity: 3, minQuantity: 1, weight: 3 }, { materialId: "soul_residue", maxQuantity: 1, minQuantity: 1, weight: 1 }, @@ -1562,7 +1562,7 @@ export const defaultExplorations: Array = [ { description: "The inner sanctum of the infernal court, where the demon lords make decisions that echo across aeons. Your guild should not be here. Your guild is here anyway.", - durationSeconds: 230_400, + durationSeconds: 330 * 60, events: [ { effect: { amount: 180_000_000, type: "gold_gain" }, @@ -1591,7 +1591,7 @@ export const defaultExplorations: Array = [ ], id: "lords_chamber", name: "The Lords' Chamber", - // 64h + // 5.5h possibleMaterials: [ { materialId: "demon_ichor", maxQuantity: 4, minQuantity: 2, weight: 3 }, { materialId: "soul_residue", maxQuantity: 2, minQuantity: 1, weight: 2 }, @@ -1604,7 +1604,7 @@ export const defaultExplorations: Array = [ { description: "The outer surface of the spire, where thousands of crystal facets reflect realities that are not the one you arrived in. Your scouts learn to focus on the ground in front of them.", - durationSeconds: 64_800, + durationSeconds: 90 * 60, events: [ { effect: { amount: 60_000_000, type: "gold_gain" }, @@ -1633,7 +1633,7 @@ export const defaultExplorations: Array = [ ], id: "facet_approach", name: "The Facet Approach", - // 18h + // 1.5h possibleMaterials: [ { materialId: "prism_dust", maxQuantity: 7, minQuantity: 3, weight: 3 }, ], @@ -1643,7 +1643,7 @@ export const defaultExplorations: Array = [ { description: "A room inside the spire where the intelligence runs its oldest and most complex calculations. The numbers on the walls change too fast to read. The calculations are always correct.", - durationSeconds: 129_600, + durationSeconds: 3 * 60 * 60, events: [ { effect: { amount: 130_000_000, type: "gold_gain" }, @@ -1672,7 +1672,7 @@ export const defaultExplorations: Array = [ ], id: "calculation_chamber", name: "The Calculation Chamber", - // 36h + // 3h possibleMaterials: [ { materialId: "prism_dust", maxQuantity: 9, minQuantity: 4, weight: 3 }, { @@ -1688,7 +1688,7 @@ export const defaultExplorations: Array = [ { description: "A corridor of perfect mirrors that show not reflections but what might have been. Your scouts avoid eye contact with their alternates. The alternates do not always extend the same courtesy.", - durationSeconds: 194_400, + durationSeconds: 270 * 60, events: [ { effect: { amount: 270_000_000, type: "gold_gain" }, @@ -1717,7 +1717,7 @@ export const defaultExplorations: Array = [ ], id: "mirror_hall", name: "The Mirror Hall", - // 54h + // 4.5h possibleMaterials: [ { materialId: "calculation_shard", @@ -1738,7 +1738,7 @@ export const defaultExplorations: Array = [ { description: "The deepest point of the spire, where the intelligence's primary substrate runs continuously. The hum of calculation is felt in the bones. Numbers that have never been numbers drift past.", - durationSeconds: 259_200, + durationSeconds: 6 * 60 * 60, events: [ { effect: { amount: 550_000_000, type: "gold_gain" }, @@ -1767,7 +1767,7 @@ export const defaultExplorations: Array = [ ], id: "core_access", name: "The Core Access", - // 72h + // 6h possibleMaterials: [ { materialId: "calculation_shard", @@ -1790,7 +1790,7 @@ export const defaultExplorations: Array = [ { description: "The entrance to the void sanctum, where the rules of existence become suggestions. Your scouts describe the crossing as like stepping sideways and arriving somewhere that was always there.", - durationSeconds: 72_000, + durationSeconds: 90 * 60, events: [ { effect: { amount: 200_000_000, type: "gold_gain" }, @@ -1819,7 +1819,7 @@ export const defaultExplorations: Array = [ ], id: "threshold", name: "The Threshold", - // 20h + // 1.5h possibleMaterials: [ { materialId: "null_matter", maxQuantity: 7, minQuantity: 3, weight: 3 }, ], @@ -1829,7 +1829,7 @@ export const defaultExplorations: Array = [ { description: "A place inside the sanctum where everything is perfectly quiet because nothing exists to make noise. Your scouts can hear their own thoughts very clearly here. Some of them find this unsettling.", - durationSeconds: 144_000, + durationSeconds: 210 * 60, events: [ { effect: { amount: 420_000_000, type: "gold_gain" }, @@ -1858,7 +1858,7 @@ export const defaultExplorations: Array = [ ], id: "inner_silence", name: "The Inner Silence", - // 40h + // 3.5h possibleMaterials: [ { materialId: "null_matter", maxQuantity: 9, minQuantity: 4, weight: 3 }, { @@ -1874,7 +1874,7 @@ export const defaultExplorations: Array = [ { description: "A space inside the sanctum where something is calling out, continuously, to something that has not yet answered. The call is beautiful and deeply wrong.", - durationSeconds: 216_000, + durationSeconds: 5 * 60 * 60, events: [ { effect: { amount: 900_000_000, type: "gold_gain" }, @@ -1903,7 +1903,7 @@ export const defaultExplorations: Array = [ ], id: "resonance_chamber", name: "The Resonance Chamber", - // 60h + // 5h possibleMaterials: [ { materialId: "resonance_fragment", @@ -1919,7 +1919,7 @@ export const defaultExplorations: Array = [ { description: "The source of the call. Something here has been reaching out for so long it no longer remembers what it is reaching toward. Your guild's arrival is, perhaps, an answer.", - durationSeconds: 288_000, + durationSeconds: 7 * 60 * 60, events: [ { effect: { amount: 1_800_000_000, type: "gold_gain" }, @@ -1948,7 +1948,7 @@ export const defaultExplorations: Array = [ ], id: "sanctum_heart", name: "The Sanctum Heart", - // 80h + // 7h possibleMaterials: [ { materialId: "resonance_fragment", @@ -1966,7 +1966,7 @@ export const defaultExplorations: Array = [ { description: "The long road to the eternal throne. Countless beings have walked it, seeking audience, seeking power, seeking something the throne has always already decided about them.", - durationSeconds: 79_200, + durationSeconds: 2 * 60 * 60, events: [ { effect: { amount: 700_000_000, type: "gold_gain" }, @@ -1995,7 +1995,7 @@ export const defaultExplorations: Array = [ ], id: "throne_approach", name: "The Throne Approach", - // 22h + // 2h possibleMaterials: [ { materialId: "throne_dust", maxQuantity: 7, minQuantity: 3, weight: 3 }, ], @@ -2005,7 +2005,7 @@ export const defaultExplorations: Array = [ { description: "The ante-chamber of absolute power. Records are kept here of everything that has ever been ruled and everything that has ever been lost. The records go back further than memory.", - durationSeconds: 158_400, + durationSeconds: 210 * 60, events: [ { effect: { amount: 1_400_000_000, type: "gold_gain" }, @@ -2034,7 +2034,7 @@ export const defaultExplorations: Array = [ ], id: "dominion_hall", name: "The Dominion Hall", - // 44h + // 3.5h possibleMaterials: [ { materialId: "throne_dust", maxQuantity: 9, minQuantity: 4, weight: 3 }, { @@ -2050,7 +2050,7 @@ export const defaultExplorations: Array = [ { description: "Where things are stored that have nowhere else to go. Objects of power that cannot be used, secrets that cannot be shared, and wealth that belongs to entities that stopped existing before your world was born.", - durationSeconds: 237_600, + durationSeconds: 330 * 60, events: [ { effect: { amount: 3_000_000_000, type: "gold_gain" }, @@ -2079,7 +2079,7 @@ export const defaultExplorations: Array = [ ], id: "eternity_vault", name: "The Eternity Vault", - // 66h + // 5.5h possibleMaterials: [ { materialId: "crown_fragment", @@ -2100,7 +2100,7 @@ export const defaultExplorations: Array = [ { description: "The eternal throne itself. Whoever sits here has sat here since the beginning. They observe your guild's presence with neither surprise nor emotion. They have been expecting you. They have been expecting everyone.", - durationSeconds: 316_800, + durationSeconds: 7 * 60 * 60, events: [ { effect: { amount: 6_000_000_000, type: "gold_gain" }, @@ -2129,7 +2129,7 @@ export const defaultExplorations: Array = [ ], id: "the_seat", name: "The Seat", - // 88h + // 7h possibleMaterials: [ { materialId: "crown_fragment", @@ -2152,7 +2152,7 @@ export const defaultExplorations: Array = [ { description: "A permanent storm at the edge of the chaos zone where things are constantly being made and unmade simultaneously. Your scouts move through it quickly and try not to look at what they might become.", - durationSeconds: 86_400, + durationSeconds: 2 * 60 * 60, events: [ { effect: { amount: 2_000_000_000, type: "gold_gain" }, @@ -2181,7 +2181,7 @@ export const defaultExplorations: Array = [ ], id: "creation_storm", name: "The Creation Storm", - // 24h + // 2h possibleMaterials: [ { materialId: "chaos_fragment", @@ -2196,7 +2196,7 @@ export const defaultExplorations: Array = [ { description: "A vast ocean of something that is exactly the opposite of matter. Your scouts cross it by not thinking too hard about what they are standing on.", - durationSeconds: 172_800, + durationSeconds: 4 * 60 * 60, events: [ { effect: { amount: 4_000_000_000, type: "gold_gain" }, @@ -2225,7 +2225,7 @@ export const defaultExplorations: Array = [ ], id: "unmaking_sea", name: "The Unmaking Sea", - // 48h + // 4h possibleMaterials: [ { materialId: "chaos_fragment", @@ -2246,7 +2246,7 @@ export const defaultExplorations: Array = [ { description: "A space where all possible outcomes already happened and none of them mattered. Your scouts find this philosophically challenging and practically navigable.", - durationSeconds: 259_200, + durationSeconds: 6 * 60 * 60, events: [ { effect: { amount: 8_000_000_000, type: "gold_gain" }, @@ -2275,7 +2275,7 @@ export const defaultExplorations: Array = [ ], id: "probability_void", name: "The Probability Void", - // 72h + // 6h possibleMaterials: [ { materialId: "creation_shard", @@ -2296,7 +2296,7 @@ export const defaultExplorations: Array = [ { description: "The centre of all primordial chaos. Everything is here and nothing is here and both statements are entirely accurate. Your scouts report the experience as indescribable, then describe it for three hours.", - durationSeconds: 345_600, + durationSeconds: 8 * 60 * 60, events: [ { effect: { amount: 16_000_000_000, type: "gold_gain" }, @@ -2325,7 +2325,7 @@ export const defaultExplorations: Array = [ ], id: "chaos_core", name: "The Chaos Core", - // 96h + // 8h possibleMaterials: [ { materialId: "creation_shard", @@ -2348,7 +2348,7 @@ export const defaultExplorations: Array = [ { description: "The first horizon you reach in the infinite expanse, which looks exactly like the starting point from behind but is provably, mathematically, somewhere else. Your scouts are sceptical but cannot argue with the math.", - durationSeconds: 93_600, + durationSeconds: 2 * 60 * 60, events: [ { effect: { amount: 6_000_000_000, type: "gold_gain" }, @@ -2377,7 +2377,7 @@ export const defaultExplorations: Array = [ ], id: "first_horizon", name: "The First Horizon", - // 26h + // 2h possibleMaterials: [ { materialId: "expanse_dust", maxQuantity: 7, minQuantity: 3, weight: 3 }, ], @@ -2387,7 +2387,7 @@ export const defaultExplorations: Array = [ { description: "There is no centre of the infinite expanse. This is the centre of the infinite expanse. Both things are true. Your scouts have stopped asking questions and started collecting samples.", - durationSeconds: 187_200, + durationSeconds: 270 * 60, events: [ { effect: { amount: 12_000_000_000, type: "gold_gain" }, @@ -2416,7 +2416,7 @@ export const defaultExplorations: Array = [ ], id: "middle_nowhere", name: "The Middle of Nowhere", - // 52h + // 4.5h possibleMaterials: [ { materialId: "expanse_dust", maxQuantity: 9, minQuantity: 4, weight: 3 }, { @@ -2432,7 +2432,7 @@ export const defaultExplorations: Array = [ { description: "The road toward the edge that the expanse does not have. Your scouts know it does not exist. They are getting closer to it anyway.", - durationSeconds: 280_800, + durationSeconds: 7 * 60 * 60, events: [ { effect: { amount: 25_000_000_000, type: "gold_gain" }, @@ -2461,7 +2461,7 @@ export const defaultExplorations: Array = [ ], id: "edge_approach", name: "The Edge Approach", - // 78h + // 7h possibleMaterials: [ { materialId: "distance_crystal", @@ -2482,7 +2482,7 @@ export const defaultExplorations: Array = [ { description: "As far as any being has ever gone in the infinite expanse. Your scouts hold this record now. They are not entirely sure whether to be proud or frightened.", - durationSeconds: 374_400, + durationSeconds: 9 * 60 * 60, events: [ { effect: { amount: 50_000_000_000, type: "gold_gain" }, @@ -2511,7 +2511,7 @@ export const defaultExplorations: Array = [ ], id: "the_furthest", name: "The Furthest", - // 104h + // 9h possibleMaterials: [ { materialId: "distance_crystal", @@ -2534,7 +2534,7 @@ export const defaultExplorations: Array = [ { description: "The outer area of the reality forge, where the overflow of unrealised realities pools and cools. Things that never quite existed are everywhere here, and some of them are extremely useful.", - durationSeconds: 100_800, + durationSeconds: 150 * 60, events: [ { effect: { amount: 20_000_000_000, type: "gold_gain" }, @@ -2559,7 +2559,7 @@ export const defaultExplorations: Array = [ ], id: "workshop_entrance", name: "The Workshop Entrance", - // 28h + // 2.5h possibleMaterials: [ { materialId: "forge_ash", maxQuantity: 7, minQuantity: 3, weight: 3 }, ], @@ -2569,7 +2569,7 @@ export const defaultExplorations: Array = [ { description: "Where realities are assembled from the raw components of existence. The work here is continuous and has been going on since before your universe was queued.", - durationSeconds: 201_600, + durationSeconds: 270 * 60, events: [ { effect: { amount: 40_000_000_000, type: "gold_gain" }, @@ -2598,7 +2598,7 @@ export const defaultExplorations: Array = [ ], id: "creation_floor", name: "The Creation Floor", - // 56h + // 4.5h possibleMaterials: [ { materialId: "forge_ash", maxQuantity: 9, minQuantity: 4, weight: 3 }, { @@ -2614,7 +2614,7 @@ export const defaultExplorations: Array = [ { description: "The primary forging station, where major realities are hammered into their final shape. The hammers are larger than planets. The anvil has never been named because no one has ever successfully described it.", - durationSeconds: 302_400, + durationSeconds: 7 * 60 * 60, events: [ { effect: { amount: 80_000_000_000, type: "gold_gain" }, @@ -2643,7 +2643,7 @@ export const defaultExplorations: Array = [ ], id: "master_forge", name: "The Master Forge", - // 84h + // 7h possibleMaterials: [ { materialId: "creation_tool", @@ -2664,7 +2664,7 @@ export const defaultExplorations: Array = [ { description: "The energy source that powers the entire reality forge. It has been running since before time was a meaningful concept. What powers it is not a question that has been answered by anyone who came here to ask it.", - durationSeconds: 403_200, + durationSeconds: 9 * 60 * 60, events: [ { effect: { amount: 160_000_000_000, type: "gold_gain" }, @@ -2693,7 +2693,7 @@ export const defaultExplorations: Array = [ ], id: "forge_core", name: "The Forge Core", - // 112h + // 9h possibleMaterials: [ { materialId: "creation_tool", @@ -2716,7 +2716,7 @@ export const defaultExplorations: Array = [ { description: "The outermost spiral of the cosmic maelstrom, where the forces are at their most navigable — which still means they routinely shatter planets that wander too close.", - durationSeconds: 108_000, + durationSeconds: 150 * 60, events: [ { effect: { amount: 60_000_000_000, type: "gold_gain" }, @@ -2745,7 +2745,7 @@ export const defaultExplorations: Array = [ ], id: "outer_current", name: "The Outer Current", - // 30h + // 2.5h possibleMaterials: [ { materialId: "maelstrom_debris", @@ -2760,7 +2760,7 @@ export const defaultExplorations: Array = [ { description: "The accumulated wreckage of everything the maelstrom has consumed, compressed into a navigable (mostly) field. Your scouts move through it quickly. Things in debris fields become part of the debris field.", - durationSeconds: 216_000, + durationSeconds: 5 * 60 * 60, events: [ { effect: { amount: 120_000_000_000, type: "gold_gain" }, @@ -2789,7 +2789,7 @@ export const defaultExplorations: Array = [ ], id: "debris_field", name: "The Debris Field", - // 60h + // 5h possibleMaterials: [ { materialId: "maelstrom_debris", @@ -2810,7 +2810,7 @@ export const defaultExplorations: Array = [ { description: "Where the fundamental forces of the cosmos intersect inside the maelstrom. Gravity and electromagnetism and things that do not have names yet jostle each other here with consequences that exceed polite description.", - durationSeconds: 324_000, + durationSeconds: 8 * 60 * 60, events: [ { effect: { amount: 250_000_000_000, type: "gold_gain" }, @@ -2839,7 +2839,7 @@ export const defaultExplorations: Array = [ ], id: "force_confluence", name: "The Force Confluence", - // 90h + // 8h possibleMaterials: [ { materialId: "force_crystal", @@ -2860,7 +2860,7 @@ export const defaultExplorations: Array = [ { description: "The path to the maelstrom's impossible centre — the one point of absolute calm surrounded by forces that make galaxies look fragile. Your scouts have never been so far in. They are doing this anyway.", - durationSeconds: 432_000, + durationSeconds: 10 * 60 * 60, events: [ { effect: { amount: 500_000_000_000, type: "gold_gain" }, @@ -2889,7 +2889,7 @@ export const defaultExplorations: Array = [ ], id: "eye_approach", name: "The Eye Approach", - // 120h + // 10h possibleMaterials: [ { materialId: "force_crystal", @@ -2912,7 +2912,7 @@ export const defaultExplorations: Array = [ { description: "The entrance to the oldest place. The floor here was walked before walking was invented, which is philosophically impossible and physically evident.", - durationSeconds: 115_200, + durationSeconds: 150 * 60, events: [ { effect: { amount: 200_000_000_000, type: "gold_gain" }, @@ -2941,7 +2941,7 @@ export const defaultExplorations: Array = [ ], id: "first_steps", name: "The First Steps", - // 32h + // 2.5h possibleMaterials: [ { materialId: "ancient_dust", maxQuantity: 7, minQuantity: 3, weight: 3 }, ], @@ -2951,7 +2951,7 @@ export const defaultExplorations: Array = [ { description: "A collection of records that predate the concept of records. The information stored here concerns things that no longer exist, but the records persist because the sanctum will not let them stop.", - durationSeconds: 230_400, + durationSeconds: 330 * 60, events: [ { effect: { amount: 400_000_000_000, type: "gold_gain" }, @@ -2980,7 +2980,7 @@ export const defaultExplorations: Array = [ ], id: "ancient_archive", name: "The Ancient Archive", - // 64h + // 5.5h possibleMaterials: [ { materialId: "ancient_dust", maxQuantity: 9, minQuantity: 4, weight: 3 }, { materialId: "memory_shard", maxQuantity: 2, minQuantity: 1, weight: 2 }, @@ -2991,7 +2991,7 @@ export const defaultExplorations: Array = [ { description: "Where the sanctum stores the memory of the first moment of existence. The memory is perfect, complete, and overwhelming. Your scouts spend the minimum time here and speak little for some time after.", - durationSeconds: 345_600, + durationSeconds: 8 * 60 * 60, events: [ { effect: { amount: 800_000_000_000, type: "gold_gain" }, @@ -3020,7 +3020,7 @@ export const defaultExplorations: Array = [ ], id: "memory_chamber", name: "The Memory Chamber", - // 96h + // 8h possibleMaterials: [ { materialId: "memory_shard", maxQuantity: 3, minQuantity: 1, weight: 3 }, { @@ -3036,7 +3036,7 @@ export const defaultExplorations: Array = [ { description: "There is nothing older than this. The sanctum's deepest point, where the very first thing that ever was still is, unchanged, because nothing in the universe has had long enough to change it.", - durationSeconds: 460_800, + durationSeconds: 11 * 60 * 60, events: [ { effect: { amount: 1_600_000_000_000, type: "gold_gain" }, @@ -3065,7 +3065,7 @@ export const defaultExplorations: Array = [ ], id: "the_oldest_place", name: "The Oldest Place", - // 128h + // 11h possibleMaterials: [ { materialId: "memory_shard", maxQuantity: 4, minQuantity: 2, weight: 3 }, { @@ -3083,7 +3083,7 @@ export const defaultExplorations: Array = [ { description: "The boundary between existence and non-existence. On one side: everything there is. On the other: everything there isn't. The view from here is indescribable and has been described by your scouts at length.", - durationSeconds: 129_600, + durationSeconds: 3 * 60 * 60, events: [ { effect: { amount: 600_000_000_000, type: "gold_gain" }, @@ -3112,7 +3112,7 @@ export const defaultExplorations: Array = [ ], id: "edge_of_everything", name: "The Edge of Everything", - // 36h + // 3h possibleMaterials: [ { materialId: "absolute_fragment", @@ -3127,7 +3127,7 @@ export const defaultExplorations: Array = [ { description: "The road to the final truth, which your guild has been walking toward since the first step in the Verdant Vale. It looks like every other road your guild has walked. It feels different.", - durationSeconds: 259_200, + durationSeconds: 6 * 60 * 60, events: [ { effect: { amount: 1_200_000_000_000, type: "gold_gain" }, @@ -3156,7 +3156,7 @@ export const defaultExplorations: Array = [ ], id: "truth_approach", name: "The Truth Approach", - // 72h + // 6h possibleMaterials: [ { materialId: "absolute_fragment", @@ -3177,7 +3177,7 @@ export const defaultExplorations: Array = [ { description: "One step from the absolute. The door ahead is the last door. Your guild has opened every other door. This one opens when you are ready, which is something only the absolute can determine.", - durationSeconds: 388_800, + durationSeconds: 9 * 60 * 60, events: [ { effect: { amount: 2_500_000_000_000, type: "gold_gain" }, @@ -3206,7 +3206,7 @@ export const defaultExplorations: Array = [ ], id: "final_antechamber", name: "The Final Antechamber", - // 108h + // 9h possibleMaterials: [ { materialId: "boundary_shard", @@ -3227,7 +3227,7 @@ export const defaultExplorations: Array = [ { description: "The final truth, at the end of all things. There is nothing beyond this. Your guild stands here, at the end, and finds that the end is not empty. It has been waiting for you specifically.", - durationSeconds: 518_400, + durationSeconds: 12 * 60 * 60, events: [ { effect: { amount: 5_000_000_000_000, type: "gold_gain" }, @@ -3256,7 +3256,7 @@ export const defaultExplorations: Array = [ ], id: "the_absolute_heart", name: "The Absolute Heart", - // 144h + // 12h possibleMaterials: [ { materialId: "boundary_shard", diff --git a/apps/api/src/data/quests.ts b/apps/api/src/data/quests.ts index c3dc3f3..888861f 100644 --- a/apps/api/src/data/quests.ts +++ b/apps/api/src/data/quests.ts @@ -77,7 +77,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 500, description: "A rogue necromancer has raised an army of skeletons near the city. Silence him before the dead overrun us.", - durationSeconds: 25 * 60, + durationSeconds: 5 * 60, id: "necromancer_tower", name: "Necromancer's Tower", prerequisiteIds: [], @@ -94,7 +94,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 2000, description: "An ancient fortress still garrisoned by constructs who don't know the war ended. Clear it out and claim its vaults.", - durationSeconds: 45 * 60, + durationSeconds: 5 * 60, id: "crumbling_fortress", name: "The Crumbling Fortress", prerequisiteIds: [ "necromancer_tower" ], @@ -111,7 +111,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 8000, description: "A vast library sealed for centuries whose contents have warped and grown hostile. The knowledge within is priceless.", - durationSeconds: 60 * 60, + durationSeconds: 10 * 60, id: "cursed_library", name: "The Cursed Library", prerequisiteIds: [ "crumbling_fortress" ], @@ -127,7 +127,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 30_000, description: "The legendary lair of Pyraxis the Undying. Few who enter return — those who do are rich beyond imagining.", - durationSeconds: 90 * 60, + durationSeconds: 15 * 60, id: "dragon_lair", name: "Dragon's Lair", prerequisiteIds: [ "cursed_library" ], @@ -145,7 +145,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 100_000, description: "A tundra at the edge of the world, home to creatures that have never seen the sun. Rumours speak of artefacts buried in the permafrost.", - durationSeconds: 2 * 60 * 60, + durationSeconds: 15 * 60, id: "frozen_wastes", name: "The Frozen Wastes", prerequisiteIds: [], @@ -162,7 +162,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 200_000, description: "A tomb sealed within a glacier for millennia. The soldiers interred here died guarding something that no longer exists — but their treasures remain.", - durationSeconds: 150 * 60, + durationSeconds: 20 * 60, id: "glacier_tomb", name: "The Glacier Tomb", prerequisiteIds: [ "frozen_wastes" ], @@ -178,7 +178,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 400_000, description: "A labyrinthine network of crystal caverns that descend for miles. The cold here is a presence, not just a temperature.", - durationSeconds: 3 * 60 * 60, + durationSeconds: 25 * 60, id: "ice_caves", name: "The Ice Caves", prerequisiteIds: [ "glacier_tomb" ], @@ -194,7 +194,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1_500_000, description: "A fortress suspended in a permanent blizzard, built by a mage who wanted to be left alone — and succeeded for three hundred years.", - durationSeconds: 5 * 60 * 60, + durationSeconds: 45 * 60, id: "storm_citadel", name: "The Storm Citadel", prerequisiteIds: [ "ice_caves" ], @@ -209,7 +209,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 3_000_000, description: "Deep in the peaks lies the throne room of an ancient frost king, long dead, whose dominion over cold and storm was absolute. His crown still waits.", - durationSeconds: 7 * 60 * 60, + durationSeconds: 1 * 60 * 60, id: "frozen_throne", name: "The Frozen Throne", prerequisiteIds: [ "storm_citadel" ], @@ -226,7 +226,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 2_000_000, description: "A cursed lake shrouded in permanent twilight. Strange energies pulse beneath its surface.", - durationSeconds: 45 * 60, + durationSeconds: 5 * 60, id: "shadow_mere", name: "The Shadow Mere", prerequisiteIds: [], @@ -243,7 +243,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 20_000_000, description: "Deep in the marshes, a coven of swamp witches performs rites that twist the very land. Their power must be broken.", - durationSeconds: 90 * 60, + durationSeconds: 15 * 60, id: "witch_coven", name: "The Witch Coven", prerequisiteIds: [ "shadow_mere" ], @@ -260,7 +260,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 80_000_000, description: "An ancient temple half-submerged in black water, its altars still humming with the power of a god long since departed.", - durationSeconds: 2 * 60 * 60, + durationSeconds: 15 * 60, id: "sunken_temple", name: "The Sunken Temple", prerequisiteIds: [ "witch_coven" ], @@ -276,7 +276,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 300_000_000, description: "A city that died overnight, its streets still thick with something no healer can identify. Treasures lie unclaimed among the bones.", - durationSeconds: 3 * 60 * 60, + durationSeconds: 25 * 60, id: "plague_ruins", name: "The Plague Ruins", prerequisiteIds: [ "sunken_temple" ], @@ -294,7 +294,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1_200_000_000, description: "A river of molten rock that flows without end through the volcanic tunnels. Something valuable gleams in the depths.", - durationSeconds: 3 * 60 * 60, + durationSeconds: 25 * 60, id: "lava_flows", name: "The Lava Flows", prerequisiteIds: [], @@ -310,7 +310,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 4_800_000_000, description: "A vast shrine where fire elementals perform rituals that shake the mountains. Whatever they worship, it has answered.", - durationSeconds: 5 * 60 * 60, + durationSeconds: 45 * 60, id: "fire_temple", name: "The Temple of the Flame", prerequisiteIds: [ "lava_flows" ], @@ -326,7 +326,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 18_000_000_000, description: "Kilometres of tunnels filled with rivers of fire and creatures born from the earth's core. The heat alone should kill you. Somehow, it won't.", - durationSeconds: 7 * 60 * 60, + durationSeconds: 1 * 60 * 60, id: "magma_caverns", name: "The Magma Caverns", prerequisiteIds: [ "fire_temple" ], @@ -342,7 +342,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 72_000_000_000, description: "The oldest forge in existence, where the fire elementals crafted weapons for gods. Its secrets could revolutionise your guild's arsenal.", - durationSeconds: 10 * 60 * 60, + durationSeconds: 90 * 60, id: "the_forge", name: "The Primordial Forge", prerequisiteIds: [ "magma_caverns" ], @@ -359,7 +359,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 300_000_000_000, description: "A tear in reality itself. What lies beyond defies description — but the power within is unlike anything of this world.", - durationSeconds: 4 * 60 * 60, + durationSeconds: 35 * 60, id: "void_rift", name: "Void Rift", prerequisiteIds: [], @@ -375,7 +375,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1_200_000_000_000, description: "A field of dead stars, each one larger than a planet, each one cold and silent where once they burned with the light of creation.", - durationSeconds: 8 * 60 * 60, + durationSeconds: 1 * 60 * 60, id: "star_graveyard", name: "The Star Graveyard", prerequisiteIds: [ "void_rift" ], @@ -391,7 +391,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 4_800_000_000_000, description: "The space between realities, where the rules that govern your world do not apply. Time is meaningless here. Power is everything.", - durationSeconds: 12 * 60 * 60, + durationSeconds: 90 * 60, id: "between_worlds", name: "Between Worlds", prerequisiteIds: [ "star_graveyard" ], @@ -408,7 +408,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 18_000_000_000_000, description: "There is nothing beyond this point. Only the greatest guild in the history of all existence could reach here — and you have.", - durationSeconds: 24 * 60 * 60, + durationSeconds: 210 * 60, id: "the_end", name: "The End of All Things", prerequisiteIds: [ "between_worlds" ], @@ -425,7 +425,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 7.2e13, description: "The threshold between the astral and the divine. Just passing through it changes those who do so in ways they will only understand later.", - durationSeconds: Math.round(1.5 * 60 * 60), + durationSeconds: 90 * 60, id: "heavens_gate", name: "The Heaven's Gate", prerequisiteIds: [], @@ -441,7 +441,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 3e14, description: "A gathering of celestial voices whose harmony shapes reality. To witness it is to understand, briefly, what the universe was meant to be.", - durationSeconds: 3 * 60 * 60, + durationSeconds: 25 * 60, id: "angelic_choir", name: "The Angelic Choir", prerequisiteIds: [ "heavens_gate" ], @@ -456,7 +456,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.2e15, description: "Every event that has ever occurred is recorded here. Your guild's entire history is contained in a single volume, filed under 'Unlikely'.", - durationSeconds: 5 * 60 * 60, + durationSeconds: 45 * 60, id: "divine_library", name: "The Divine Library", prerequisiteIds: [ "angelic_choir" ], @@ -472,7 +472,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 4.8e15, description: "A fortress built in the space between thoughts — larger inside than any physical structure could be. The celestial host uses it as a staging ground for interventions in mortal affairs.", - durationSeconds: 8 * 60 * 60, + durationSeconds: 1 * 60 * 60, id: "cloud_citadel", name: "The Cloud Citadel", prerequisiteIds: [ "divine_library" ], @@ -488,7 +488,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.8e16, description: "The celestial host subjects your guild to trials that test not strength but character. Fortunately, your guild has both. Less fortunately, the trials are also designed to be impossible.", - durationSeconds: 12 * 60 * 60, + durationSeconds: 90 * 60, id: "trial_of_virtue", name: "The Trial of Virtue", prerequisiteIds: [ "cloud_citadel" ], @@ -505,7 +505,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 7.2e16, description: "The deepest record in the divine realm — not just of what has happened, but of what is possible. Your guild leaves a mark here that will not be erased when the universe ends.", - durationSeconds: 20 * 60 * 60, + durationSeconds: 3 * 60 * 60, id: "celestial_archive", name: "The Celestial Archive", prerequisiteIds: [ "trial_of_virtue" ], @@ -522,7 +522,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 3e17, description: "The entry point to the trench — where light surrenders completely and the pressure begins its long, patient work of reminding you of your smallness.", - durationSeconds: 2 * 60 * 60, + durationSeconds: 15 * 60, id: "the_dark_waters", name: "The Dark Waters", prerequisiteIds: [], @@ -538,7 +538,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.2e18, description: "The remains of a civilisation that lived at the bottom of the world for millennia, lighting their world with their own bodies. They are gone. Their light remains, eerie and cold.", - durationSeconds: 4 * 60 * 60, + durationSeconds: 35 * 60, id: "bioluminescent_ruins", name: "The Bioluminescent Ruins", prerequisiteIds: [ "the_dark_waters" ], @@ -554,7 +554,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 4.8e18, description: "Caverns carved by forces that would shatter your strongest armour as casually as paper. Your guild navigates them through a combination of skill, preparation, and — honestly — luck.", - durationSeconds: 7 * 60 * 60, + durationSeconds: 1 * 60 * 60, id: "pressure_caves", name: "The Pressure Caves", prerequisiteIds: [ "bioluminescent_ruins" ], @@ -570,7 +570,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.8e19, description: "Where the great serpents of the deep come to die — bones larger than cities, slowly being consumed by things that feed on the dead of things that were never truly alive.", - durationSeconds: 12 * 60 * 60, + durationSeconds: 90 * 60, id: "leviathan_graveyard", name: "The Leviathan Graveyard", prerequisiteIds: [ "pressure_caves" ], @@ -586,7 +586,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 7.2e19, description: "A throne carved from something that predates stone, found at a depth where the trench opens into something that should not exist below it. Something sat here once. Something may sit here again.", - durationSeconds: 18 * 60 * 60, + durationSeconds: 150 * 60, id: "black_throne", name: "The Black Throne", prerequisiteIds: [ "leviathan_graveyard" ], @@ -603,7 +603,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 3e20, description: "The record carved into the walls of the deepest part of the trench by whatever has lived there since time began. Your guild adds its chapter. It is the first written in a language anyone above has ever understood.", - durationSeconds: 30 * 60 * 60, + durationSeconds: 270 * 60, id: "abyssal_chronicle", name: "The Abyssal Chronicle", prerequisiteIds: [ "black_throne" ], @@ -620,7 +620,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.2e21, description: "The outer reaches of the infernal court — a landscape of sulphur and old fire where lesser demons make their homes and forget what they are waiting for.", - durationSeconds: 3 * 60 * 60, + durationSeconds: 25 * 60, id: "brimstone_wastes", name: "The Brimstone Wastes", prerequisiteIds: [], @@ -636,7 +636,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 4.8e21, description: "The repository of every soul the infernal court has ever collected, stretching downward without apparent limit. The voices here are beyond counting. Some of them are recognisable.", - durationSeconds: 6 * 60 * 60, + durationSeconds: 50 * 60, id: "pit_of_souls", name: "The Pit of Souls", prerequisiteIds: [ "brimstone_wastes" ], @@ -652,7 +652,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.8e22, description: "The actual seat of demon governance — where the lords convene to settle their endless disputes. Your guild attends the session uninvited. The lords are not pleased. They are, however, briefly unified.", - durationSeconds: 10 * 60 * 60, + durationSeconds: 90 * 60, id: "court_of_blood", name: "The Court of Blood", prerequisiteIds: [ "pit_of_souls" ], @@ -668,7 +668,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 7.2e22, description: "Each circle of the infernal court is its own ecosystem of suffering, and your guild passes through all nine. By the seventh, it has stopped being surprising. By the ninth, it has become almost comfortable.", - durationSeconds: 16 * 60 * 60, + durationSeconds: 150 * 60, id: "nine_hells", name: "The Nine Hells", prerequisiteIds: [ "court_of_blood" ], @@ -684,7 +684,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 3e23, description: "The forge where the demon lords create their weapons — each one an atrocity given material form. Your guild has come to learn its secrets, or failing that, to destroy it.", - durationSeconds: 24 * 60 * 60, + durationSeconds: 210 * 60, id: "demon_forge", name: "The Demon Forge", prerequisiteIds: [ "nine_hells" ], @@ -701,7 +701,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.2e24, description: "The complete record of every deal, pact, and contract the infernal court has ever made. Your guild finds its own name in there, in a clause you definitely did not agree to. You cross it out.", - durationSeconds: 40 * 60 * 60, + durationSeconds: 330 * 60, id: "infernal_codex", name: "The Infernal Codex", prerequisiteIds: [ "demon_forge" ], @@ -718,7 +718,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 4.8e24, description: "The entrance to the spire — a door made of possibilities that splits your guild into every version of itself simultaneously. Only the best version makes it through. You are that version.", - durationSeconds: 4 * 60 * 60, + durationSeconds: 35 * 60, id: "prism_gate", name: "The Prism Gate", prerequisiteIds: [], @@ -734,7 +734,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.8e25, description: "A maze of mirrors that reflects not your appearance but your choices — every path shows what would have happened if you had chosen differently. Several of those paths look significantly better.", - durationSeconds: 8 * 60 * 60, + durationSeconds: 1 * 60 * 60, id: "crystal_labyrinth", name: "The Crystal Labyrinth", prerequisiteIds: [ "prism_gate" ], @@ -750,7 +750,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 7.2e25, description: "A space where geometry has opinions — where right angles are suggestions and parallel lines eventually converge into something that has no name in any language your guild speaks.", - durationSeconds: 14 * 60 * 60, + durationSeconds: 2 * 60 * 60, id: "faceted_realm", name: "The Faceted Realm", prerequisiteIds: [ "crystal_labyrinth" ], @@ -766,7 +766,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 3e26, description: "The repository of crystallised knowledge — everything the spire has calculated, preserved in structures of compressed carbon that contain more information than your guild's entire written history.", - durationSeconds: 20 * 60 * 60, + durationSeconds: 3 * 60 * 60, id: "diamond_vault", name: "The Diamond Vault", prerequisiteIds: [ "faceted_realm" ], @@ -782,7 +782,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.2e27, description: "The approach to the Sovereign's chamber — a corridor of living crystal that evaluates your guild as you walk through it and reconfigures itself in real time to create the optimal challenge for exactly what your guild is.", - durationSeconds: 32 * 60 * 60, + durationSeconds: 270 * 60, id: "sovereign_spire", name: "The Sovereign's Spire", prerequisiteIds: [ "diamond_vault" ], @@ -799,7 +799,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 4.8e27, description: "The innermost sanctum of the spire — where the Sovereign keeps its most precious calculations, its predictions for the last moments of this universe, sealed in crystal that has never been touched by anything other than thought.", - durationSeconds: 50 * 60 * 60, + durationSeconds: 7 * 60 * 60, id: "the_prism_vault", name: "The Prism Vault", prerequisiteIds: [ "sovereign_spire" ], @@ -816,7 +816,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.8e28, description: "The boundary between existing and not — a membrane so thin that your guild can feel their own existence becoming uncertain as they cross it. On the other side: the sanctum.", - durationSeconds: 6 * 60 * 60, + durationSeconds: 50 * 60, id: "void_threshold", name: "The Void Threshold", prerequisiteIds: [], @@ -832,7 +832,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 7.2e28, description: "Darkness here is not the absence of light but a substance in its own right — thick, pressured, aware. It has been dark here since before the concept of light existed elsewhere.", - durationSeconds: 12 * 60 * 60, + durationSeconds: 90 * 60, id: "eternal_dark", name: "The Eternal Dark", prerequisiteIds: [ "void_threshold" ], @@ -848,7 +848,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 3e29, description: "The lower reaches of the void sanctum, where the Emperor's power saturates every particle. Your guild walks through a space that doesn't want them to exist — and continues existing anyway.", - durationSeconds: 20 * 60 * 60, + durationSeconds: 3 * 60 * 60, id: "sanctum_depths", name: "The Sanctum Depths", prerequisiteIds: [ "eternal_dark" ], @@ -864,7 +864,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.2e30, description: "Where the void Emperor tests its power — a space where things are regularly unmade as a display of authority. Your guild's refusal to be unmade is, to the Emperor, nothing short of astonishing.", - durationSeconds: 30 * 60 * 60, + durationSeconds: 270 * 60, id: "unmaking_grounds", name: "The Unmaking Grounds", prerequisiteIds: [ "sanctum_depths" ], @@ -880,7 +880,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 4.8e30, description: "The final corridor before the void Emperor — a space that exists only because the Emperor allows it to. Every step forward is an argument your guild makes for their right to exist. So far, it's working.", - durationSeconds: 48 * 60 * 60, + durationSeconds: 7 * 60 * 60, id: "emperor_approach", name: "The Emperor's Approach", prerequisiteIds: [ "unmaking_grounds" ], @@ -897,7 +897,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.8e31, description: "The absolute centre of the void sanctum — the point from which all absence radiates. Your guild stands here and, remarkably, continues to be. That alone is a victory no one before them has achieved.", - durationSeconds: 72 * 60 * 60, + durationSeconds: 10 * 60 * 60, id: "heart_of_void", name: "The Heart of the Void", prerequisiteIds: [ "emperor_approach" ], @@ -914,7 +914,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 7.2e31, description: "The waiting room for the absolute seat of power. No one has ever been made to wait here, because no one has ever arrived before. Your guild has arrived. The door is very large.", - durationSeconds: 8 * 60 * 60, + durationSeconds: 1 * 60 * 60, id: "throne_antechamber", name: "The Throne Antechamber", prerequisiteIds: [], @@ -930,7 +930,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 3e32, description: "A series of trials designed not to test your guild but to exhaust them — to ensure that only something with genuine, inexhaustible will can reach the throne. Your guild has passed. The throne takes note.", - durationSeconds: 16 * 60 * 60, + durationSeconds: 150 * 60, id: "eternal_gauntlet", name: "The Eternal Gauntlet", prerequisiteIds: [ "throne_antechamber" ], @@ -946,7 +946,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.2e33, description: "The final proving ground — a set of challenges that have been accumulating since the throne was first occupied, waiting for a challenger worthy enough to face them. Your guild is facing them. Barely.", - durationSeconds: 28 * 60 * 60, + durationSeconds: 4 * 60 * 60, id: "apex_trials", name: "The Apex Trials", prerequisiteIds: [ "eternal_gauntlet" ], @@ -962,7 +962,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 4.8e33, description: "The great hall through which every power in every universe has passed in supplication. No one has walked it as an equal before. Your guild walks it as a challenger. The difference is felt by everything that has ever knelt here.", - durationSeconds: 40 * 60 * 60, + durationSeconds: 330 * 60, id: "sovereign_hall", name: "The Sovereign's Hall", prerequisiteIds: [ "apex_trials" ], @@ -979,7 +979,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.8e34, description: "The last staircase. Every step a moment of history being made. At the top: the throne, and the one who sits upon it, who has watched your guild climb and finds themselves, for the first time in all of existence, uncertain.", - durationSeconds: 60 * 60 * 60, + durationSeconds: 9 * 60 * 60, id: "the_final_ascent", name: "The Final Ascent", prerequisiteIds: [ "sovereign_hall" ], @@ -995,7 +995,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 7.2e34, description: "The throne is yours. Not just this one — all the power that flows from it, into every plane and reality it has shaped across all of time. Your guild has not merely won. It has become the thing that wins, permanently, for the rest of forever.", - durationSeconds: 96 * 60 * 60, + durationSeconds: 14 * 60 * 60, id: "eternal_dominion", name: "Eternal Dominion", prerequisiteIds: [ "the_final_ascent" ], @@ -1012,7 +1012,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 3e35, description: "Your guild steps beyond the throne into something that has no rules — a place where the very concept of place is contested. Every step forward is an act of defiance against the universe's first draft of itself.", - durationSeconds: 10 * 60 * 60, + durationSeconds: 90 * 60, id: "chaos_entry", name: "Into the Chaos", prerequisiteIds: [], @@ -1028,7 +1028,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.2e36, description: "Rivers of raw creation flow through the primordial chaos — not water but pure potential, capable of transforming anything they touch into anything else entirely.", - durationSeconds: 18 * 60 * 60, + durationSeconds: 150 * 60, id: "chaos_currents", name: "The Chaos Currents", prerequisiteIds: [ "chaos_entry" ], @@ -1044,7 +1044,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 4.8e36, description: "A region of the chaos where the argument between existence and non-existence has not yet produced a winner — where matter and anti-matter coexist in violent, constant negotiation.", - durationSeconds: 30 * 60 * 60, + durationSeconds: 270 * 60, id: "unformed_wastes", name: "The Unformed Wastes", prerequisiteIds: [ "chaos_currents" ], @@ -1061,7 +1061,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.8e37, description: "Every possibility that has never occurred is stored here — in vaults that have no walls, containing things that have no form. Your guild navigates them by deciding what they want to find, and finding it.", - durationSeconds: 45 * 60 * 60, + durationSeconds: 6 * 60 * 60, id: "potential_vaults", name: "The Vaults of Potential", prerequisiteIds: [ "unformed_wastes" ], @@ -1077,7 +1077,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 7.2e37, description: "The origin point of everything — not a place but the idea of the first place, preserved in the chaos as a monument to the moment reality decided to exist.", - durationSeconds: 65 * 60 * 60, + durationSeconds: 9 * 60 * 60, id: "creation_cradle", name: "The Creation Cradle", prerequisiteIds: [ "potential_vaults" ], @@ -1094,7 +1094,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 3e38, description: "The record of everything that almost was — every universe that the chaos produced and discarded before settling on this one. Your guild reads it and understands, for the first time, how unlikely they are.", - durationSeconds: 90 * 60 * 60, + durationSeconds: 13 * 60 * 60, id: "chaos_chronicle", name: "The Chaos Chronicle", prerequisiteIds: [ "creation_cradle" ], @@ -1111,7 +1111,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.2e39, description: "The edge of the knowable — not because nothing lies beyond, but because the Expanse has no edges and every horizon is also a centre. Your guild walks toward a destination that keeps receding at the exact speed they approach it.", - durationSeconds: 12 * 60 * 60, + durationSeconds: 90 * 60, id: "first_horizon", name: "The First Horizon", prerequisiteIds: [], @@ -1127,7 +1127,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 4.8e39, description: "An ocean with no shores, no depth, no surface — a body of liquid possibility that extends infinitely in all directions, including inward. Your guild sails it without a ship and arrives exactly when they decide to.", - durationSeconds: 22 * 60 * 60, + durationSeconds: 3 * 60 * 60, id: "endless_sea", name: "The Endless Sea", prerequisiteIds: [ "first_horizon" ], @@ -1143,7 +1143,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.8e40, description: "Civilisations that attempted the Expanse before your guild and ran out of universe. Their ruins drift without reference points, enormous and silent, a reminder that infinity has claimed predecessors.", - durationSeconds: 36 * 60 * 60, + durationSeconds: 5 * 60 * 60, id: "expanse_ruins", name: "The Expanse Ruins", prerequisiteIds: [ "endless_sea" ], @@ -1160,7 +1160,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 7.2e40, description: "A library with no walls, cataloguing everything that exists across all of infinite space. The catalogue itself is infinite. The librarian is very tired.", - durationSeconds: 55 * 60 * 60, + durationSeconds: 8 * 60 * 60, id: "infinite_archive", name: "The Infinite Archive", prerequisiteIds: [ "expanse_ruins" ], @@ -1177,7 +1177,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 3e41, description: "A region where the Expanse loops back on itself — where every direction is simultaneously every other direction, and travel requires your guild to stop thinking about it too hard.", - durationSeconds: 80 * 60 * 60, + durationSeconds: 11 * 60 * 60, id: "paradox_plains", name: "The Paradox Plains", prerequisiteIds: [ "infinite_archive" ], @@ -1194,7 +1194,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.2e42, description: "The complete record of all infinite things — compressed, impossibly, into a document your guild can almost read. What they can read changes everything they thought they understood about the word 'everything'.", - durationSeconds: 110 * 60 * 60, + durationSeconds: 16 * 60 * 60, id: "expanse_codex", name: "The Expanse Codex", prerequisiteIds: [ "paradox_plains" ], @@ -1211,7 +1211,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 4.8e42, description: "The door to the Reality Forge has been open since the moment reality started — left ajar because the workers never thought anyone else would find it. Your guild finds it.", - durationSeconds: 14 * 60 * 60, + durationSeconds: 2 * 60 * 60, id: "forge_entrance", name: "The Forge Entrance", prerequisiteIds: [], @@ -1227,7 +1227,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.8e43, description: "The Forge keeps the blueprints for every universe it has ever built — and the rejected designs for the ones it hasn't. Some of those rejected blueprints are disturbingly appealing.", - durationSeconds: 25 * 60 * 60, + durationSeconds: 210 * 60, id: "blueprint_vault", name: "The Blueprint Vault", prerequisiteIds: [ "forge_entrance" ], @@ -1243,7 +1243,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 7.2e43, description: "The active floor of the Forge — where new realities are being assembled right now, and your guild must navigate between workbenches containing half-finished universes without knocking anything over.", - durationSeconds: 40 * 60 * 60, + durationSeconds: 330 * 60, id: "creation_workshop", name: "The Creation Workshop", prerequisiteIds: [ "blueprint_vault" ], @@ -1260,7 +1260,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 3e44, description: "The mechanism that produces the laws of physics — an engine running since the first moment, churning out constants and rules that every universe obeys without knowing why. Your guild sees the source code.", - durationSeconds: 60 * 60 * 60, + durationSeconds: 9 * 60 * 60, id: "laws_engine", name: "The Laws Engine", prerequisiteIds: [ "creation_workshop" ], @@ -1277,7 +1277,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.2e45, description: "The power source of the Reality Forge — not a furnace but a contained singularity, burning with the same energy that ignited the first universe. Your guild siphons from it. The Forge barely notices.", - durationSeconds: 85 * 60 * 60, + durationSeconds: 12 * 60 * 60, id: "forge_heart", name: "The Forge Heart", prerequisiteIds: [ "laws_engine" ], @@ -1293,7 +1293,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 4.8e45, description: "The record of every reality the Forge has produced — every universe that exists or ever existed, with notes on what worked and what didn't. Your guild's universe has several notes. Most are surprising.", - durationSeconds: 120 * 60 * 60, + durationSeconds: 17 * 60 * 60, id: "forge_chronicle", name: "The Forge Chronicle", prerequisiteIds: [ "forge_heart" ], @@ -1311,7 +1311,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.8e46, description: "The outermost reach of the Cosmic Maelstrom — where everything moves at a speed that makes stars look stationary. Your guild anchors itself in the relative calm of its periphery and begins to push inward.", - durationSeconds: 16 * 60 * 60, + durationSeconds: 150 * 60, id: "maelstrom_entry", name: "The Maelstrom's Edge", prerequisiteIds: [], @@ -1327,7 +1327,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 7.2e46, description: "The point where every cosmic force intersects — where gravity and electromagnetism and every other fundamental force meet and argue. The argument is conducted at energies that reshape matter.", - durationSeconds: 28 * 60 * 60, + durationSeconds: 4 * 60 * 60, id: "force_nexus", name: "The Force Nexus", prerequisiteIds: [ "maelstrom_entry" ], @@ -1343,7 +1343,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 3e47, description: "A region where cosmic storms have been brewing since the beginning of time, compounding on themselves into intensities that no physical object should be able to survive. Your guild survives.", - durationSeconds: 45 * 60 * 60, + durationSeconds: 6 * 60 * 60, id: "storm_cauldron", name: "The Storm Cauldron", prerequisiteIds: [ "force_nexus" ], @@ -1360,7 +1360,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.2e48, description: "Regions of space where creation and destruction happen simultaneously at rates that would erase continents. Your guild navigates the moments between creation and erasure with precision that surprises even themselves.", - durationSeconds: 65 * 60 * 60, + durationSeconds: 9 * 60 * 60, id: "annihilation_fields", name: "The Annihilation Fields", prerequisiteIds: [ "storm_cauldron" ], @@ -1376,7 +1376,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 4.8e48, description: "The centre of the Cosmic Maelstrom — the point toward which every force converges and from which everything radiates. Being here is being at the exact centre of all physical law. It is very loud.", - durationSeconds: 90 * 60 * 60, + durationSeconds: 13 * 60 * 60, id: "convergence_point", name: "The Convergence Point", prerequisiteIds: [ "annihilation_fields" ], @@ -1393,7 +1393,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.8e49, description: "The record kept in the eye of the storm — the one place calm enough to write, where every force is in perfect balance. Your guild adds their chapter in the moments before the balance shifts again.", - durationSeconds: 130 * 60 * 60, + durationSeconds: 19 * 60 * 60, id: "maelstrom_codex", name: "The Maelstrom Codex", prerequisiteIds: [ "convergence_point" ], @@ -1411,7 +1411,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 7.2e49, description: "The entrance to the oldest place — a threshold that does not open because it was never closed. It merely requires you to be old enough, deep enough, powerful enough to perceive it.", - durationSeconds: 18 * 60 * 60, + durationSeconds: 150 * 60, id: "sanctum_gate", name: "The Sanctum Gate", prerequisiteIds: [], @@ -1427,7 +1427,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 3e50, description: "The sanctum stores every moment that has ever occurred — not as records but as living impressions, still occurring in perpetual replay. Your guild walks through history as it happens, over and over.", - durationSeconds: 32 * 60 * 60, + durationSeconds: 270 * 60, id: "memory_vaults", name: "The Memory Vaults", prerequisiteIds: [ "sanctum_gate" ], @@ -1443,7 +1443,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.2e51, description: "The halls where everything began — not the physical beginning, but the idea of beginning itself, preserved here as the sanctum's most sacred artefact. To walk these halls is to understand why anything started.", - durationSeconds: 50 * 60 * 60, + durationSeconds: 7 * 60 * 60, id: "origin_halls", name: "The Origin Halls", prerequisiteIds: [ "memory_vaults" ], @@ -1460,7 +1460,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 4.8e51, description: "The chamber where the first photon was produced — still illuminated by that original light, unchanged for all of time. The warmth here is the warmth of the universe's childhood.", - durationSeconds: 72 * 60 * 60, + durationSeconds: 10 * 60 * 60, id: "first_light_hall", name: "The Hall of First Light", prerequisiteIds: [ "origin_halls" ], @@ -1476,7 +1476,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.8e52, description: "A region of the sanctum that predates the concept of sequence — where cause does not reliably precede effect, and your guild must navigate by intention rather than direction.", - durationSeconds: 100 * 60 * 60, + durationSeconds: 14 * 60 * 60, id: "before_time", name: "Before Time", prerequisiteIds: [ "first_light_hall" ], @@ -1492,7 +1492,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 7.2e52, description: "The complete record of all primeval things — every first moment of every concept that has ever existed, bound together in something that predates writing, reading, and the idea of records. Your guild understands it anyway.", - durationSeconds: 144 * 60 * 60, + durationSeconds: 21 * 60 * 60, id: "sanctum_chronicle", name: "The Sanctum Chronicle", prerequisiteIds: [ "before_time" ], @@ -1509,7 +1509,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 3e53, description: "The beginning of the end of everything. Your guild crosses it and feels, for the first time, that they have gone somewhere genuinely, ontologically final.", - durationSeconds: 20 * 60 * 60, + durationSeconds: 3 * 60 * 60, id: "absolute_threshold", name: "The Absolute Threshold", prerequisiteIds: [], @@ -1525,7 +1525,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.2e54, description: "Not empty — nothing. A region where even the concept of region is a courtesy your guild extends to the space by thinking about it. The moment they stop thinking, it stops being a space.", - durationSeconds: 36 * 60 * 60, + durationSeconds: 5 * 60 * 60, id: "nothing_wastes", name: "The Nothing Wastes", prerequisiteIds: [ "absolute_threshold" ], @@ -1541,7 +1541,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 4.8e54, description: "A region that exists by virtue of containing the contradiction of existence and non-existence simultaneously — a place that is also not a place, navigable only by those who have stopped needing either to be true.", - durationSeconds: 56 * 60 * 60, + durationSeconds: 8 * 60 * 60, id: "final_paradox", name: "The Final Paradox", prerequisiteIds: [ "nothing_wastes" ], @@ -1557,7 +1557,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 1.8e55, description: "Everything that has ever ended is stored here — every life, every civilisation, every universe, every concept that has run its course. The collection is comprehensive. Your guild is not in it yet.", - durationSeconds: 80 * 60 * 60, + durationSeconds: 11 * 60 * 60, id: "end_vault", name: "The Vault of Ends", prerequisiteIds: [ "final_paradox" ], @@ -1573,7 +1573,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 7.2e55, description: "The last path before the last thing. Every step here is a step that has never been taken before and will never be taken again. The Absolute awaits at the end of it, and it is aware of your guild.", - durationSeconds: 120 * 60 * 60, + durationSeconds: 17 * 60 * 60, id: "terminal_approach", name: "The Terminal Approach", prerequisiteIds: [ "end_vault" ], @@ -1589,7 +1589,7 @@ export const defaultQuests: Array = [ combatPowerRequired: 3e56, description: "This is it. Not the throne — not power — not victory. Just the knowledge, confirmed and total, that your guild reached the end of everything and was not ended. That is, in every measurable way, enough.", - durationSeconds: 168 * 60 * 60, + durationSeconds: 24 * 60 * 60, id: "absolute_dominion", name: "Absolute Dominion", prerequisiteIds: [ "terminal_approach" ],