From d304548b4177ec95daac9312a1909ba098dd6487 Mon Sep 17 00:00:00 2001 From: jennie Date: Thu, 7 Dec 2023 22:04:16 +0000 Subject: [PATCH] deploy: 2c140ff07e25c633a8389f357b0a6d7be60da9d3 --- css/main.css | 3 + index.html | 238 ++++++++++++++++++++++-------------- twine_src/css/output.css | 42 ++----- twine_src/scripts/2.init.js | 70 +++++++---- twine_src/setup.twee | 24 ++-- twine_src/story.twee | 106 ++++++++++++++++ 6 files changed, 322 insertions(+), 161 deletions(-) diff --git a/css/main.css b/css/main.css index 6d2c9e6..bce0eec 100644 --- a/css/main.css +++ b/css/main.css @@ -347,3 +347,6 @@ button { font-size: 20px; /* Adjust size as needed */ color: red; /* Or any color you prefer */ } +#backToMap { + @apply z-50 text-neutral-100 absolute top-6 right-6 uppercase text-base cursor-pointer; +} diff --git a/index.html b/index.html index dfe9778..6460cb0 100644 --- a/index.html +++ b/index.html @@ -757,22 +757,6 @@ visibility: visible; } -.absolute{ - position: absolute; -} - -.right-6{ - right: 1.5rem; -} - -.top-6{ - top: 1.5rem; -} - -.z-50{ - z-index: 50; -} - .mx-auto{ margin-left: auto; margin-right: auto; @@ -838,10 +822,6 @@ flex-shrink: 0; } -.cursor-pointer{ - cursor: pointer; -} - .items-center{ align-items: center; } @@ -894,10 +874,6 @@ font-weight: 600; } -.uppercase{ - text-transform: uppercase; -} - .leading-6{ line-height: 1.5rem; } @@ -912,11 +888,6 @@ color: rgb(79 70 229 / var(--tw-text-opacity)); } -.text-neutral-100{ - --tw-text-opacity: 1; - color: rgb(245 245 245 / var(--tw-text-opacity)); -} - .text-neutral-200{ --tw-text-opacity: 1; color: rgb(229 229 229 / var(--tw-text-opacity)); @@ -3251,6 +3222,19 @@ /* Or any color you prefer */ } +#backToMap{ + position: absolute; + top: 1.5rem; + right: 1.5rem; + z-index: 50; + cursor: pointer; + font-size: 1rem; + line-height: 1.5rem; + text-transform: uppercase; + --tw-text-opacity: 1; + color: rgb(245 245 245 / var(--tw-text-opacity)); +} + .focus\:ring-indigo-600:focus{ --tw-ring-opacity: 1; --tw-ring-color: rgb(79 70 229 / var(--tw-ring-opacity)); @@ -3428,6 +3412,37 @@ setup.startObserving(); }); + setup.renderIntro = function () { + setup.startObserving(); + story.show("Map Screen"); + var planetContent = setup.showPlanet(0); + + var passageContainer = document.getElementById("passageContainer"); + var hud = document.getElementById("hud"); + var backToMap = document.getElementById("backToMap"); + + if (mapScreen) mapScreen.style.display = "none"; + if (hud) { + hud.style.display = "flex"; + backToMap.style.display = "none"; + } + if (passageContainer) { + passageContainer.style.display = "block"; + } + + var introContent = story.render("Intro 3"); + var passage = document.getElementById("passage"); + if (passage) { + passage.innerHTML = introContent; + setup.typewriter(); + } + + var planetContentContainer = document.getElementById("planetContent"); + if (planetContentContainer) { + planetContentContainer.innerHTML = planetContent; + } + }; + setup.savePlayerInfo = function () { var playerName = document.getElementById("playerName").value; var planetName = document.getElementById("planetName").value; @@ -3447,7 +3462,7 @@ story.state.playerName = playerName; - story.show("Map Screen"); + story.show("Intro"); }; setup.checkInputs = function () { @@ -3472,8 +3487,11 @@ }; setup.showPlanet = function (planetIndex) { + setup.startObserving(); + story.state.currentPlanet = planetIndex; const planet = setup.game.planets.find((p) => p.id === planetIndex); + console.log("Showing planet:", planet); let content = planet.description; let repContent = `
${planet.rep}
`; var repContainer = document.getElementById("rep"); @@ -3543,9 +3561,13 @@ var passage = document.getElementById("passage"); var planetContentContainer = document.getElementById("planetContent"); var hud = document.getElementById("hud"); + var backToMap = document.getElementById("backToMap"); if (mapScreen) mapScreen.style.display = "none"; - if (hud) hud.style.display = "flex"; + if (hud) { + hud.style.display = "flex"; + backToMap.style.display = "block"; + } if (passageContainer) { passage.innerHTML = passageContent; setup.typewriter(); @@ -3626,7 +3648,10 @@ }; setup.planetClickHandlers = {}; - + $(window).on("sm.passage.showing", function (event, eventObject) { + // Current Passage object + console.log(eventObject.passage.name); + }); setup.showMap = function () { var mapScreen = document.getElementById("mapScreen"); @@ -3892,22 +3917,6 @@ setTimeout(setup.showWeekPreamble, 0); }; setup.updatePlanetsAndTurnCounter = function () { - // console.log( - // "Updating planets and turn counter, Crisis Turn:", - // story.state.isCrisisTurn - // ); - - // setTimeout(function () { - // const mapScreen = document.getElementById("mapScreen"); - - // if (story.state.isCrisisTurn) { - // mapScreen.classList.add("crisis"); - // console.log("Crisis class added to mapScreen:", mapScreen.classList); - // } else { - // mapScreen.classList.remove("crisis"); - // } - // }, 0); - document .querySelectorAll(".planet") .forEach(function (planetElement, index) { @@ -3975,13 +3984,6 @@ setup.handlePlanetClick = function (planetIndex) { return function () { - // if (planetIndex === -1) { - // console.log("Player's planet clicked."); - // setup.renderPlayerPlanetPassage(); - // setup.toggleHUD(true); - // return; - // } - console.log("Clicked Planet Index:", planetIndex); if (!story.state.scenarioCompletedThisTurn) { if ( @@ -4076,29 +4078,30 @@ <div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8"> <div class="mx-auto max-w-3xl customization-form"> - <h1>It's Jammy Jam Time!</h1> - <h2>DJ FUNKYBEATZ: Welcome to Gamma Space collaborative federation!</h2> + <p>Dear Planet Representative,</p> + + <p>Please fill out the following information.</p> <div> - <label for="playerName" class="block text-sm font-medium leading-6 text-gray-900">What's your name?</label> + <label for="playerName" class="block text-sm font-medium leading-6 text-gray-900">Your full name:</label> <div class="mt-2"> <input id="playerName" name="playerName" type="text" value="" oninput="setup.checkInputs()" class="customization-text-input"> </div> </div> <div> - <label for="planetName" class="block text-sm font-medium leading-6 text-gray-900">What's your planet's name?</label> + <label for="planetName" class="block text-sm font-medium leading-6 text-gray-900">The name of your planet:</label> <div class="mt-2"> <input id="planetName" name="planetName" type="text" value="" oninput="setup.checkInputs()" class="customization-text-input"> </div> </div> <div> - <label for="projectDescription" class="block text-sm font-medium leading-6 text-gray-900">Tell us about your project.</label> + <label for="projectDescription" class="block text-sm font-medium leading-6 text-gray-900">Your planet's main artistic output (eg. singing, dancing, competitive digital zip-lining, intergalactic fermentation stations):</label> <div class="mt-2"> <input id="projectDescription" name="projectDescription" type="text" value="" oninput="setup.checkInputs()" class="customization-text-input"> </div> </div> <div> - <p for="planetImg" class="text-base font-semibold text-neutral-50">Home Planet</p> + <!-- <p for="planetImg" class="text-base font-semibold text-neutral-50">Home Planet</p> --> <p class="text-sm text-neutral-200">Pick a planet body:</p> <fieldset class="mt-4" id="planetImg"> <div class="space-y-4"> @@ -4116,17 +4119,14 @@ </div> </fieldset> </div> - <button id="nextButton" onclick="setup.savePlayerInfo()" class="disabled:opacity-25" disabled>Next</button> - <% if (story.state.playerName && story.state.planetName) { %> - [[Next->Map Screen]] - <% } %> + <button id="nextButton" onclick="setup.savePlayerInfo()" class="disabled:opacity-25" disabled>Transmit the document</button> </div> </div><% $("body").removeClass("customization").addClass("map") %> <div id="overlay" class="hidden"></div> <div id="ui"> <div id="playerScreen"> <div class="text-sm"> - <span id="turnCounter"><%= 7 - s.turn %> weeks to the radio show!</span> + <span id="turnCounter"><%= 8 - s.turn %> weeks to the radio show!</span> </div> <div id="playerInfo"></div> </div> @@ -4139,7 +4139,7 @@ </div> <div id="hud"> - <span onclick="setup.returnToMap()" class="z-50 text-neutral-100 absolute top-6 right-6 uppercase text-base cursor-pointer">&larr; back to map</span> + <span onclick="setup.returnToMap()" id="backToMap">&larr; back to map</span> <div id="planet-splash" class="flex-shrink-0 px-6 pt-6"></div> <div id="planet-info"> @@ -4152,7 +4152,6 @@ <script> setup.showMap(); - setup.toggleHUDTop(true) </script> <% console.log(setup.game) %> @@ -4163,87 +4162,140 @@ var planetIndex = story.state.planetIndex; // Retrieve the index from story.state setup.renderPlanetPassage(planetIndex); setup.story.render(planets[planetIndex].passage); -</script>The Intergalactic Orchestra has lost its melody, scattering notes across the cosmos. Retrieve the musical fragments to restore harmony to the galaxy. +</script>Unknown Signal: Well, <%= story.state.playerName %> from <%= story.state.playerPlanet.name %>. It's my honour and delight to *welcome you*... + +[[Next|Intro 2]]Unknown Signal: **... to the Gamma Federation!** + +<button id="renderIntroButton" onclick="setup.renderIntro();" >Next</button>Unknown Signal: I just realized I had my video turned off this whole time... *some host I am!* + +[[Next|Intro 4]]Unknown Signal: Allow me to introduce myself. I am ❄︎pioGA⍓︎rovvst♏︎♋︎S:laQN⬧︎doü⧫︎ffpz⍓︎?MBzx■︎Bzt. + +[[Next|Intro 5]]Unknown Signal: But my friends call me *DJ FUNKYBEATZ.* 🎵 + +[[Next|Intro 6]]DJ: We're grateful to have you as the newest member of the Federation. + +[[Next|Intro 7]]DJ: I know you've had a tough time recently, what with losing your job at the Dominion Planetation and all. I know what that place can do to your trust... + +[[Next|Intro 8]]DJ: But things are different here. There's no overlord. No forced overtime. Just a commitment to our collective wellbeing and shared values. I know you already got the values information beforehand, but I'll share them again. + +[[Next|Intro 9]]- Collective care and support +- Personal and Collective Accountability +- Creative Empowerment +- Challenging Systemic Norms +- Art as a Means for Change* + +[[Next|Intro 10]]DJ: Opting into the Federation means opting into the values. The values are iterative, but commitment to the Federation means commitment working *with* us to make those changes. + +[[Next|Intro 11]]DJ: But I'm talking your ear off! I'm so excited to see how you will exhibit your [projectDescription] during the Radio Show in **7 weeks**. + +<div class="passage-choices"> + [[Radio show?|Radio Show Explanation]] + <span onclick="setup.returnToMap();">Oh yeah, I know about that.</span> +</div>DJ: YOU DON'T KNOW ABOUT THE RADIO SHOW?!? +DJ: ... + +[[Next|Radio Show Explanation 2]]DJ: Sorry, I got a little carried away there. It's just... a kinda big deal. + +[[Next|Radio Show Explanation 3]]DJ: Every **year** The Gamma Federation hosts an intergalactic radio show where all the Gamma planets exhibit their artistic creations across the galaxy. + +[[Next|Radio Show Explanation 4]]DJ: As you get acquainted with the Federation, I encourage you to check in on the other planets every so often to see how their projects are coming along for the radio show. This is something we call the *buddy system*. + +[[Next|Radio Show Explanation 5]]DJ: *Check in on your buddies🎵<br> +and they'll check in on youuu.<br> +It makes us all do better,<br> +and it's easy enough to dooo!*🎵 + +[[Next|Radio Show Explanation 6]]DJ: Okay, yeah yeah. Not my finest work. + +[[Next|Radio Show Explanation 7]]DJ: Nothing to add? Wow. An alien can take a hint. Well, off with you then. I'm transmitting the coordinates of the other planets to you now. + +<div class="passage-choices"> + <span onclick="setup.returnToMap();">Open map</span> +</div> + + + +<!-- Planet request scenarios, random -->The Intergalactic Orchestra has lost its melody, scattering notes across the cosmos. Retrieve the musical fragments to restore harmony to the galaxy. -[[Next...->Melodic Quest 2]]Let's see if I can find the notes… +[[Next...->Melodic Quest 2]]Let's see if I can find the notes… <div class="passage-choices"> <span onclick='setup.completeScenario();'>Connect</span> <span onclick="setup.returnToMap()">Move on…</span> -</div>A quantum computer has gone haywire, creating chaos in the time-space continuum. Solve complex puzzles to recalibrate the machine and stabilize reality. +</div>A quantum computer has gone haywire, creating chaos in the time-space continuum. Solve complex puzzles to recalibrate the machine and stabilize reality. -[[Next...->Quantum Conundrum 2]]I have no idea how to solve these puzzles, but i'll give it my best shot… +[[Next...->Quantum Conundrum 2]]I have no idea how to solve these puzzles, but i'll give it my best shot… <div class="passage-choices"> <span onclick='setup.completeScenario();'>Connect</span> <span onclick="setup.returnToMap()">Move on…</span> -</div>A newborn nebula is struggling to form stars. Gather stardust and cosmic energy to nurture its growth and witness the birth of new suns. +</div>A newborn nebula is struggling to form stars. Gather stardust and cosmic energy to nurture its growth and witness the birth of new suns. -[[Next...->Stellar Cradle 2]]Gathering stardust might be fun? +[[Next...->Stellar Cradle 2]]Gathering stardust might be fun? <div class="passage-choices"> <span onclick='setup.completeScenario();'>Connect</span> <span onclick="setup.returnToMap()">Move on…</span> -</div>The Great Library of Andromeda is in disarray, with knowledge scattered across the stars. Reorganize the cosmic archives and unlock ancient wisdom. +</div>The Great Library of Andromeda is in disarray, with knowledge scattered across the stars. Reorganize the cosmic archives and unlock ancient wisdom. -[[Next...->Galactic Restoration 2]]Time to sort through the astral archives… +[[Next...->Galactic Restoration 2]]Time to sort through the astral archives… <div class="passage-choices"> <span onclick='setup.completeScenario();'>Connect</span> <span onclick="setup.returnToMap()">Move on…</span> -</div>A celestial entity has lost its voice, rendering the galaxy silent. Find the harmonious chords to give voice back to the stars. +</div>A celestial entity has lost its voice, rendering the galaxy silent. Find the harmonious chords to give voice back to the stars. -[[Next...->Cosmic Symphony 2]]Let's tune into the cosmic frequencies… +[[Next...->Cosmic Symphony 2]]Let's tune into the cosmic frequencies… <div class="passage-choices"> <span onclick='setup.completeScenario();'>Connect</span> <span onclick="setup.returnToMap()">Move on…</span> -</div>A labyrinth of cosmic dust and gas clouds has appeared. Navigate through the maze to discover hidden celestial treasures. +</div>A labyrinth of cosmic dust and gas clouds has appeared. Navigate through the maze to discover hidden celestial treasures. -[[Next...->Nebula Maze 2]]This maze is intricate, but I'm up for the challenge… +[[Next...->Nebula Maze 2]]This maze is intricate, but I'm up for the challenge… <div class="passage-choices"> <span onclick='setup.completeScenario();'>Connect</span> <span onclick="setup.returnToMap()">Move on…</span> -</div>A constellation has lost its rhythm, causing disarray in the night sky. Choreograph the celestial dance to restore order. +</div>A constellation has lost its rhythm, causing disarray in the night sky. Choreograph the celestial dance to restore order. -[[Next...->Starlit Dance 2]]Time to get these stars dancing again… +[[Next...->Starlit Dance 2]]Time to get these stars dancing again… <div class="passage-choices"> <span onclick='setup.completeScenario();'>Connect</span> <span onclick="setup.returnToMap()">Move on…</span> -</div>A wandering comet carries secrets from the edge of the universe. Chart its course and uncover the mysteries it holds. +</div>A wandering comet carries secrets from the edge of the universe. Chart its course and uncover the mysteries it holds. -[[Next...->Comet's Tale 2]]Chasing comets is no easy task, but it's worth it… +[[Next...->Comet's Tale 2]]Chasing comets is no easy task, but it's worth it… <div class="passage-choices"> <span onclick='setup.completeScenario();'>Connect</span> <span onclick="setup.returnToMap()">Move on…</span> -</div>The Aurora Borealis has dimmed, losing its vibrant colors. Reignite the auroral lights to paint the sky with dazzling hues. +</div>The Aurora Borealis has dimmed, losing its vibrant colors. Reignite the auroral lights to paint the sky with dazzling hues. -[[Next...->Aurora's Whisper 2]]Let's bring color back to the skies… +[[Next...->Aurora's Whisper 2]]Let's bring color back to the skies… <div class="passage-choices"> <span onclick='setup.completeScenario();'>Connect</span> <span onclick="setup.returnToMap()">Move on…</span> -</div>An ancient star has posed a riddle, locking away a cosmic secret. Solve the riddle to gain access to hidden cosmic knowledge. +</div>An ancient star has posed a riddle, locking away a cosmic secret. Solve the riddle to gain access to hidden cosmic knowledge. -[[Next...->Celestial Riddle 2]]Riddles in space? This should be interesting… +[[Next...->Celestial Riddle 2]]Riddles in space? This should be interesting… <div class="passage-choices"> <span onclick='setup.completeScenario();'>Connect</span> <span onclick="setup.returnToMap()">Move on…</span> -</div>The Sun's song has become erratic, affecting planetary orbits. Compose a new solar melody to bring stability back to the solar system. +</div>The Sun's song has become erratic, affecting planetary orbits. Compose a new solar melody to bring stability back to the solar system. -[[Next...->Solar Serenade 2]]Time to compose a symphony for the Sun… +[[Next...->Solar Serenade 2]]Time to compose a symphony for the Sun… <div class="passage-choices"> <span onclick='setup.completeScenario();'>Connect</span> <span onclick="setup.returnToMap()">Move on…</span> -</div><%= setup.getPlanet(s.currentPlanet) %> offers to help me find the source of the problem. Let's go! +</div><%= setup.getPlanet(s.currentPlanet) %> offers to help me find the source of the problem. Let's go! -[[Next...->Week 4 crisis 2]]<%= setup.getPlanet(s.currentPlanet) %> is so great. I'm glad we're friends. +[[Next...->Week 4 crisis 2]]<%= setup.getPlanet(s.currentPlanet) %> is so great. I'm glad we're friends. <div class="passage-choices"> <span onclick='setup.completeScenario();'>Connect</span> @@ -4252,7 +4304,7 @@ -<!-- Week/turn preambles -->Whew, helping planets is hard! Let's do it again this week.A week goes by… Wow, helping <%= setup.getPlanet(s.currentPlanet) %> was the right call. Our connection is stronger than ever!<%= setup.getPlanet(s.currentPlanet) %> indicates I'm getting pretty good at this. Let's help some more planets!The Sun has been blotted out by a mysterious force. The solar system is in chaos, and the planets are in danger.Time flies in the cosmos. Each planet, including <%= setup.getPlanet(s.currentPlanet) %>, has its own story.With every planet helped, I feel more connected to the universe. What new wonders will this week bring?Time for a big radio broadcast. But what is this around the corner!? A black hole is approaching the solar system! +<!-- Week/turn preambles -->Whew, helping planets is hard! Let's do it again this week.A week goes by… Wow, helping <%= setup.getPlanet(s.currentPlanet) %> was the right call. Our connection is stronger than ever!<%= setup.getPlanet(s.currentPlanet) %> indicates I'm getting pretty good at this. Let's help some more planets!The Sun has been blotted out by a mysterious force. The solar system is in chaos, and the planets are in danger.Time flies in the cosmos. Each planet, including <%= setup.getPlanet(s.currentPlanet) %>, has its own story.With every planet helped, I feel more connected to the universe. What new wonders will this week bring?Time for a big radio broadcast. But what is this around the corner!? A black hole is approaching the solar system! <% $("body").addClass("customization").removeClass("map") %>
-

It's Jammy Jam Time!

-

DJ FUNKYBEATZ: Welcome to Gamma Space collaborative federation!

+

Dear Planet Representative,

+ +

Please fill out the following information.

- +
- +
- +
-

Home Planet

+

Pick a planet body:

@@ -92,10 +94,7 @@ Unknown Signal: I know, I know. But sometimes community takes a lil' bureaucracy
- - <% if (story.state.playerName && story.state.planetName) { %> - [[Next->Map Screen]] - <% } %> +
@@ -107,7 +106,7 @@ Unknown Signal: I know, I know. But sometimes community takes a lil' bureaucracy
- <%= 7 - s.turn %> weeks to the radio show! + <%= 8 - s.turn %> weeks to the radio show!
@@ -120,7 +119,7 @@ Unknown Signal: I know, I know. But sometimes community takes a lil' bureaucracy
- ← back to map + ← back to map
@@ -133,7 +132,6 @@ Unknown Signal: I know, I know. But sometimes community takes a lil' bureaucracy <% console.log(setup.game) %> diff --git a/twine_src/story.twee b/twine_src/story.twee index ae4afd8..f5728a2 100644 --- a/twine_src/story.twee +++ b/twine_src/story.twee @@ -1,3 +1,109 @@ +:: Intro +Unknown Signal: Well, <%= story.state.playerName %> from <%= story.state.playerPlanet.name %>. It's my honour and delight to *welcome you*... + +[[Next|Intro 2]] + +:: Intro 2 +Unknown Signal: **... to the Gamma Federation!** + + + +:: Intro 3 +Unknown Signal: I just realized I had my video turned off this whole time... *some host I am!* + +[[Next|Intro 4]] + +:: Intro 4 +Unknown Signal: Allow me to introduce myself. I am ❄︎pioGA⍓︎rovvst♏︎♋︎S:laQN⬧︎doü⧫︎ffpz⍓︎?MBzx■︎Bzt. + +[[Next|Intro 5]] + +:: Intro 5 +Unknown Signal: But my friends call me *DJ FUNKYBEATZ.* 🎵 + +[[Next|Intro 6]] + +:: Intro 6 +DJ: We're grateful to have you as the newest member of the Federation. + +[[Next|Intro 7]] + +:: Intro 7 + +DJ: I know you've had a tough time recently, what with losing your job at the Dominion Planetation and all. I know what that place can do to your trust... + +[[Next|Intro 8]] + +:: Intro 8 +DJ: But things are different here. There's no overlord. No forced overtime. Just a commitment to our collective wellbeing and shared values. I know you already got the values information beforehand, but I'll share them again. + +[[Next|Intro 9]] + +:: Intro 9 +- Collective care and support +- Personal and Collective Accountability +- Creative Empowerment +- Challenging Systemic Norms +- Art as a Means for Change* + +[[Next|Intro 10]] + +:: Intro 10 +DJ: Opting into the Federation means opting into the values. The values are iterative, but commitment to the Federation means commitment working *with* us to make those changes. + +[[Next|Intro 11]] + +:: Intro 11 +DJ: But I'm talking your ear off! I'm so excited to see how you will exhibit your [projectDescription] during the Radio Show in **7 weeks**. + +
+ [[Radio show?|Radio Show Explanation]] + Oh yeah, I know about that. +
+ +:: Radio Show Explanation +DJ: YOU DON'T KNOW ABOUT THE RADIO SHOW?!? +DJ: ... + +[[Next|Radio Show Explanation 2]] + +:: Radio Show Explanation 2 +DJ: Sorry, I got a little carried away there. It's just... a kinda big deal. + +[[Next|Radio Show Explanation 3]] + +:: Radio Show Explanation 3 +DJ: Every **year** The Gamma Federation hosts an intergalactic radio show where all the Gamma planets exhibit their artistic creations across the galaxy. + +[[Next|Radio Show Explanation 4]] + +:: Radio Show Explanation 4 +DJ: As you get acquainted with the Federation, I encourage you to check in on the other planets every so often to see how their projects are coming along for the radio show. This is something we call the *buddy system*. + +[[Next|Radio Show Explanation 5]] + +:: Radio Show Explanation 5 +DJ: *Check in on your buddies🎵
+and they'll check in on youuu.
+It makes us all do better,
+and it's easy enough to dooo!*🎵 + +[[Next|Radio Show Explanation 6]] + +:: Radio Show Explanation 6 +DJ: Okay, yeah yeah. Not my finest work. + +[[Next|Radio Show Explanation 7]] + +:: Radio Show Explanation 7 +DJ: Nothing to add? Wow. An alien can take a hint. Well, off with you then. I'm transmitting the coordinates of the other planets to you now. + +
+ Open map +
+ + + :: Melodic Quest [scenario] The Intergalactic Orchestra has lost its melody, scattering notes across the cosmos. Retrieve the musical fragments to restore harmony to the galaxy.