Upon opening your eyes, you see you are standing in a well-lit room of cream-colored walls and blue shag carpeting. There is only one window in the room, in the middle of the wall to your left.
You feel something in your hand, of maybe a half kilogram in weight, an object that you are gripping with medium tension. You look down at the object. It appears to be a round section of light-brown clay, about 2 centimeters thick and 10 centimeters diameter. It is just large enough to cover your hand, even with your fingers spread wide.
"Learn the language, save the people." Suddenly, this phrase is bouncing around in your mind, like some echo with no source call.
Learn a *visual* language.. somehow that sounded like a familiar idea.
Bringing the object closer to your eyes, you move the clay disk around in your hands. You view the rim, where there are no symbols. You view both sides, noting that both have symbols. There are dozens and dozens of symbols, some are repeated, some are tilted .. it looks a mess.
Your eyes settle on the center symbol of one side. That central symbol is a rosette:
<div class="phaistos" style="font-size: 60px">𐇵</div>
It is followed immediately by a symbol depicting a person, and something about them makes your heart go out to them:
<div class="phaistos" style="font-size: 60px">𐇒</div>
You feel as if you could almost understand what these symbols mean. It's right there on the tip of your tongue, as the old saying goes.
To your left, the lone window's glass pane suddenly glows up with a spiraling logo that you can't quite identify, and then the monitor shows the following information.
<div style="
width: 90%;
max-width: 500px;
margin: 20px 0;
padding: 18px;
border: 4px solid #444;
background-color: #dfe8f0;
color: #000;
font-family: Arial, sans-serif;
font-size: 16px;
font-weight: bold;
line-height: 1.5;
text-align: left;
border-radius: 8px;
">
Learn the visual language called Glyphish.
Evaluate the situation.
Save the team .. or not.
<p>
In each following room, you match each picture to its most fitting option. Having matched all the pictures in that room, you choose the interpretation that matches the room. With every solved room, you have learned more of our visual language, glyphish.
For hints during the game, think about the characters and events from that old children's tale, the one called Jack and the Beanstalk. If you know that ancient tale, then you can use it for hints to solve the following puzzle rooms.
This is step 1 of 4.
Click link below.
Time is short. </p></div><h1>[[Learn Glyphish|PuzzleZone]] </h1>
<<nobr>>
/* Grab the current room data from our master database */
<<set _room to setup.roomDatabase[$currentRoomId]>>
<<set _total = _room.puzzles.length>>
<<set _next = _room.next>>
<<set _wish = _room.wish>>
<<set _techGlyphs to []>>
<<set _magicGlyphs to []>>
<<if $currentRoomId is "A28" and $playerRole is "power">>
<<goto "MomFateExplanation">>
<</if>>
/* show lives available */
lives available: $lives ||
<<if $lives <= 0>><<goto "UntimelyPassing">><</if>>
/* AUTO-CLICK SCRIPT: If the room is already solved, click the diagnostic link once the elements load */
<<if $solvedRooms[$currentRoomId] is true>>
<<done>>
<<run jQuery("#diagnostic-wrapper a").trigger("click")>>
<</done>>
<</if>>
/* start of each scene */
You are at Scene $currentRoomId <br>
_room.instructions
/* show glyphs and their respective answer options */
<div class="puzzle-wrapper">
<<for _i to 0; _i < _room.puzzles.length; _i++>>
<<set _puzzle to _room.puzzles[_i]>>
<<set _rightKey = ($currentGame is "game2" ? "right2" : "right")>>
/* shuffle the answers so the right one is not always at top */
<<if $solvedRooms[$currentRoomId] is true>>
<<set _choices to [_puzzle[_rightKey]]>>
<<else>>
<<set _choices to [_puzzle[_rightKey]].concat(_puzzle.wrongs[0])>>
<<endif>>
<<run _choices.shuffle()>>
<div class="puzzle-cell" id="`'cell-' + _i`" data-right="`_puzzle[_rightKey]`">
<<print '<div class="puzzle-glyph-container"><span class="phaistos">&#x' + _puzzle.img + ';</span></div>'>>
<div class="choices">
<<for _c range _choices>>
<label>
<<if $solvedRooms[$currentRoomId] is true>>
<<radiobutton `"$playerAnswers[" + _i + "]"` _c checked>> _c
<<else>>
<<radiobutton `"$playerAnswers[" + _i + "]"` _c >> _c
<<endif>>
</label>
<</for>>
</div>
</div>
<</for>>
</div>
<hr>
/* --- Run Diagnostic sits directly below the pictures now.
The scene interpretation is no longer selectable; it is revealed
as a reward once every glyph in the row is decoded correctly. --- */
<div id="puzzle-results">
<div id="diagnostic-wrapper">
<<link "Run Diagnostic">>
/* 1. Score the picture cells */
<<set _score = 0>>
<<set _rightKey = ($currentGame is "game2" ? "right2" : "right")>>
<<for _i = 0; _i < _total; _i++>>
<<set _key = _i>>
<<set _correct = ($playerAnswers[_key] is _room.puzzles[_i][_rightKey])>>
<<if _correct>><<set _score++>> <</if>>
<<run jQuery("#cell-" + _i)
.toggleClass("cell-correct", _correct)
.toggleClass("cell-wrong", !_correct && $playerAnswers[_key] isnot undefined)>>
<</for>>
<<replace "#score-display">>Correct decodings: <<= _score>> / <<= _total>><</replace>>
/* 2. Only gate is: every glyph in the row decoded correctly */
<<if _score is _total>>
<<set $solvedRooms[$currentRoomId] = true>>
/* process magic Item rewards */
<<set _itemDiscoveryHtml to "">>
<<if _room.magicItems and _room.magicItems.length > 0>>
<<set _headerLabel = ($currentGame is "game2" ? "Tech Relics Extracted:" : "Magic Items Extracted:")>>
<<set _itemDiscoveryHtml += "<p><b>" + _headerLabel + "</b></p><ul>">>
<<for _m range _room.magicItems>>
<<set _itemDiscoveryHtml += "<li>Found: <b>" + _m.magicItem + "</b></li>">>
<<if $currentGame is "game1">>
<<set $magicItemsGathered[_m.magicItem] to ($magicItemsGathered[_m.magicItem] || 0) + 1>>
<</if>>
<</for>>
<<set _itemDiscoveryHtml += "</ul>">>
<<else>>
<<set _itemDiscoveryHtml += "<p style='color: #aaa;'>No active energy signatures found in this sector.</p>">>
<</if>>
/* process tech Item rewards */
<<set _itemDiscoveryHtml to "">>
<<set _hasTech to false>>
<<if $currentGame is "game2">>
<<for _i = 0; _i < _room.puzzles.length; _i++>>
<<set _puzzle to _room.puzzles[_i]>>
/* Reverse search setup.glyphs to find which glyph matches this puzzle image */
<<set _glyphData to null>>
<<set _glyphKeys to Object.keys(setup.glyphs)>>
<<for _k = 0; _k < _glyphKeys.length; _k++>>
<<set _currentGlyph = setup.glyphs[_glyphKeys[_k]]>>
<<if _currentGlyph.img is _puzzle.img>>
<<set _glyphData to _currentGlyph>>
<<break>>
<</if>>
<</for>>
/* If we found the glyph data, check if it's a valid tech item reward */
<<if _glyphData and (_glyphData.tech is true or _glyphData.techcode neq "")>>
<<if _hasTech is false>>
<<set _itemDiscoveryHtml += "<p><b>Tech Relics Extracted:</b></p><ul>">>
<<set _hasTech to true>>
<</if>>
<<set _itemDiscoveryHtml += "<li>Found: <b>" + _glyphData.techcode + "</b></li>">>
<<set $techItemsGathered[_glyphData.techcode] to ($techItemsGathered[_glyphData.techcode] || 0) + 1>>
<</if>>
<</for>>
<</if>>
<<if _hasTech is true>>
<<set _itemDiscoveryHtml += "</ul>">>
<<else>>
<<set _itemDiscoveryHtml += "<p style='color: #aaa;'>No active tech energy signatures found in this sector.</p>">>
<</if>>
/* Build the scene-interpretation REWARD (was formerly a quiz) */
<<set _sceneReveal to "">>
<<if _room.scenesolver>>
<<set _sceneMeaning = _room.scenesolver[_rightKey] || _room.scenesolver.right>>
<<set _sceneReveal to
"<div style='background:#12241f; border-left:4px solid #55ff55; padding:12px 15px; border-radius:4px; margin:12px 0;'>"
+ "<div style='font-family:sans-serif; font-size:0.8em; letter-spacing:.2em; text-transform:uppercase; color:#55ff55; margin-bottom:6px;'>Decoded meaning</div>"
+ "<div style='font-size:1.05em; line-height:1.5; color:#e8f5e8;'>" + _sceneMeaning + "</div>"
+ "</div>">>
<</if>>
/* Master Scavenger Victory Condition Check based on target game array */
<<set _hasWon to true>>
<<set _targetInventory = ($currentGame is "game2" ? $techItemsGathered : $magicItemsGathered)>>
<<set _itemKeys to Object.keys(_targetInventory)>>
<<for _k range _itemKeys>>
<<if _targetInventory[_k] is 0>>
<<set _hasWon to false>>
<</if>>
<</for>>
<<replace "#exit-link">>
<div class="unlocked-box" style="background: #1a331a; padding: 15px; border: 1px solid #336633; border-radius: 4px; margin-top: 15px;">
<span class="unlocked">System Unlocked</span><br>
<<print _sceneReveal>>
<<print _itemDiscoveryHtml>>
/* Determine destination path based on win status */
<<if _hasWon is true>>
<div style="margin-top: 15px; font-size: 1.1em; border-top: 2px dashed #55ff55; padding-top: 10px;">
<b>COLLECTION COMPLETE!</b> You have gathered every unique asset across the database grid!
<br><br>
<<link "▶ CLAIM ULTIMATE VICTORY">>
<<goto "Victory">>
<</link>>
</div>
<<else>>
/* NAVIGATION BLOCK: Normal Exit Path */
<div style="display: flex; gap: 20px; margin-top: 15px;">
<div>
<<set _linkText = "→ Proceed to " + _next>>
<<if _wish is true>>
<<set _linkText = _linkText + " and that will cost you one life">>
<</if>>
<<link _linkText>>
<<set $currentRoomId = _next>>
<<if _wish is true and $solvedRooms[$currentRoomId] isnot true>>
<<set $lives = $lives - 1>>
<</if>>
<<set $playerAnswers to []>>
<<set $playerSceneAnswer to undefined>>
<<if _next is "Victory">>
<<goto "Victory">>
<<elseif _room.next is "A19">>
<<run Dialog.setup("⚠ Emergency Dispatch")>>
<<run Dialog.wiki(`An emergency has been called in. Your training isn't finished — but you're the closest qualified hand. You're being transported to join the team now.\n\n<<button "Go help">><<goto "ALCch1">><</button>>`)>>
<<run Dialog.open()>>
<<else>>
<<goto "PuzzleZone">>
<</if>>
<</link>>
</div>
/* Dynamic shortcut option appears if a jump target is present */
<<if _room.jump isnot "" and _room.jump isnot undefined>>
<div>
<<link "Jump to Different Room">>
<<set $currentRoomId = _room.jump>>
<<set $playerAnswers to []>>
<<set $playerSceneAnswer to undefined>>
<<if _room.jump is "Victory">>
<<goto "Victory">>
<<else>>
<<goto "PuzzleZone">>
<</if>>
<</link>>
</div>
<</if>>
</div>
/* If there are specific jump notes context clues, show them under the paths */
<<if _room.jumpNotes isnot "" and _room.jumpNotes isnot undefined>>
<div style="margin-top: 10px; font-size: 0.9em; color: #8ab4f8; font-style: italic;">
<b>Anomalous Data Stream Note:</b> _room.jumpNotes
</div>
<</if>>
<</if>>
</div>
<</replace>>
<<else>>
<<replace "#exit-link">>
<span class="locked">
Terminal Locked: <<= _total - _score>> picture parameter(s) incorrect.
</span>
<</replace>>
<</if>>
<</link>>
</div>
<p id="score-display">Correct decodings: — / <<= _total>></p>
<p id="exit-link"></p>
</div>
<</nobr>><<set $solvedRooms = {}>>
<<set $currentGame = "game1">>
/* this matches the number of holes at A01 */
<<set $lives to 12>>
/* might be possible to build these hashes from the glyphs record */
<<set $magicItemsGathered to {
"goose": 0,
"hen": 0,
"gold": 0,
"hat": 0,
"glove": 0,
"belt": 0,
"cloak": 0,
"potion": 0,
"bow": 0,
"arrow": 0,
"turban": 0,
"table": 0,
"sandals": 0,
"horn": 0,
"ring": 0,
"harp": 0,
"mirror": 0,
"key": 0,
"sword": 0,
"sharpener": 0,
"jewels": 0
}>>
<<set $techItemsGathered to {
"klystron": 0,
"glove": 0,
"magnetron": 0,
"batterypile": 0,
"inductor": 0,
"capacitor": 0,
"rocket": 0,
"plane": 0,
"truckcar": 0,
"microphone": 0,
"speaker": 0,
"compass": 0,
"ka": 0,
"ychromosome": 0,
"bdotinfantis": 0,
"medicine": 0,
"thinkingcap": 0,
"helmcontrol": 0,
"chemoven": 0,
"grounding": 0,
"sharpening": 0,
"newtechnique": 0,
"magbatt": 0,
"solidstateswitches": 0,
"loudspeaker": 0,
"nuclearpower": 0,
"henfootmightbeTech?": 0,
"ringgemstoneThyratron": 0,
"compassGPS": 0,
"television": 0,
"encryptiontech": 0,
"stonegouger": 0,
"testicles": 0
}>>
/* 1. Track the current room ID */
<<set $currentRoomId to "A31">>
/* 2. Initialize the player's answers array */
<<set $playerAnswers to []>>
<<if $earnedCert>>
[[Decode Jack & Beans|Start Game]]
[[A Living Clay|ALCch1]]
[[Encode Momotarō |Game3Momotaro]]
[[Get your Certificate|cert]]
[[Alton's World]]
<b style="font-size:0.9em; color:#aaa;">ROOM JUMP:</b>
<<set _roomIds to Object.keys(setup.roomDatabase)>>\
<<for _id range _roomIds>>\
<<capture _id>>\
<<link _id>>
<<set $currentRoomId to _id>>
<<set $playerAnswers to []>>
<<run Engine.play("PuzzleZone")>>
<</link>> \
<</capture>>\
<</for>>
<</if>>
Congratulations! You have learned to decode and encode a visual language.
Here is a Certificate to show that you have successfully completed Path 1 of learning glyphish..
[[Get your Certificate of Completion :)|cert]]
/* line below removed because the epilog is emotionally rough, and because the player is to go to the encoding game now */
/* [[ALCepilog]] */
## Magic Items Gathered So Far
Analyze your current inventory logs below. You must find at least one of every database category to complete the compilation matrix and unlock ultimate victory.
<<nobr>>
/* Automatically swap the master data source and theme labels based on the game mode */
<<if $currentGame is "game2">>
<<set _inventoryTarget to $techItemsGathered>>
<<set _itemKeys to Object.keys($techItemsGathered)>>
<<set _iconSecured to " ">>
<<set _labelPlural to "Tech Components">>
<<set _winMessage to "ALL COMPONENT SIGNATURES MATCHED! High-frequency klystron arrays are configured for primary loop authorization.">>
<<else>>
<<set _inventoryTarget to $magicItemsGathered>>
<<set _itemKeys to Object.keys($magicItemsGathered)>>
<<set _iconSecured to " ">>
<<set _labelPlural to "Artifact Categories">>
<<set _winMessage to "ALL SIGNATURES MATCHED! The main core terminal is ready to accept full encryption upload.">>
<</if>>
<<set _discoveredCount to 0>>
<<set _totalCategories to _itemKeys.length>>
<table style="width: 100%; border-collapse: collapse; margin-top: 15px;">
<tr style="border-bottom: 2px solid #444; text-align: left;">
<th style="padding: 10px;">Registry Type</th>
<th style="padding: 10px; text-align: center;">Quantity Held</th>
<th style="padding: 10px; text-align: right;">Status</th>
</tr>
<<for _k range _itemKeys>>
/* Track how many unique types have been found in the active data object */
<<if _inventoryTarget[_k] > 0>>
<<set _discoveredCount++>>
<tr style="border-bottom: 1px solid #333; background: rgba(85, 255, 85, 0.03);">
<td style="padding: 10px; font-weight: bold; color: #55ff55;">
<<= _iconSecured>><<= _k.toUpperCase().replace("-", " ")>>
</td>
<td style="padding: 10px; text-align: center; font-weight: bold;">
<<= _inventoryTarget[_k]>>
</td>
<td style="padding: 10px; text-align: right; color: #55ff55; font-size: 0.9em;">
✔️ Secured
</td>
</tr>
<<else>>
<tr style="border-bottom: 1px solid #333; color: #666;">
<td style="padding: 10px; font-style: italic;">
🔒 <<= _k.replace("-", " ")>>
</td>
<td style="padding: 10px; text-align: center;">
0
</td>
<td style="padding: 10px; text-align: right; color: #ff5555; font-size: 0.9em; font-style: italic;">
❌ Missing
</td>
</tr>
<</if>>
<</for>>
</table>
<div style="margin-top: 20px; padding: 15px; background: #222; border: 1px solid #444; border-radius: 4px;">
📊 <b>Matrix Completion Status:</b> Discovered <<= _discoveredCount>> / <<= _totalCategories>> <<= _labelPlural>>.
<<if _discoveredCount is _totalCategories>>
<p style="color: #55ff55; font-weight: bold; margin-top: 10px;">
<<= _winMessage>>
</p>
<<else>>
/* Simple dynamic progress bar */
<<set _percent to Math.round((_discoveredCount / _totalCategories) * 100)>>
<div style="width: 100%; background: #444; border-radius: 3px; margin-top: 8px; height: 10px; overflow: hidden;">
<div style="`'background: #55ff55; height: 100%; width: ' + _percent + '%'`"></div>
</div>
<</if>>
</div>
<</nobr>>
<<link "← Return to Current Grid Node">>
<<goto "PuzzleZone">>
<</link>>## Decryption Archive
Below is the record of all security nodes you have successfully bypassed:
<<nobr>>
<<set _solvedList to Object.keys($solvedRooms)>>
<<if _solvedList.length is 0>>
<p style="color: #aaa; font-style: italic;">No terminal logs archived yet. Complete your first room diagnostic to populate this matrix.</p>
<<else>>
<p>**Total Nodes Cleared:** <<= _solvedList.length>></p>
<div style="background: #111; border: 1px solid #333; padding: 15px; border-radius: 4px; max-height: 200px; overflow-y: auto;">
<ul style="margin: 0; padding-left: 20px; color: #55ff55;">
<<for _room range _solvedList>>
<li>Node <<= _room>>: Overridden</li>
<</for>>
</ul>
</div>
<</if>>
<</nobr>>
[[Return to Security Terminal|PuzzleZone]]## CRITICAL FAILURE
The encryption counter-measures have completely drained your extra life/wish reserves. Your presence inside the database network has been detected and purged.
Wishes Remaining: **0** / 5
<hr>
/* Give them a button to restart the game clean */
<<link "▶ REBOOT DECRYPTION GRID">>
<<run Engine.restart()>>
<</link>><<nobr>>
<h2>🛠️ Cyber-Archaeology Terminal: Diagnostic Cheater</h2>
<hr>
/* LIVES RESETTER */
<<link "❤️ Reset Current Lives to 5">>
<<set $lives to 5>>
<<goto `passage()`>>
<</link>>
/* --- 1. CURRENT GAME SELECTOR --- */
<p><b>Current Game Mode:</b> <span style="color: #8ab4f8; font-weight: bold;"><%= $currentGame.toUpperCase() %></span></p>
<div style="margin-bottom: 20px;">
<<link "🔄 Force-Switch to GAME 1 (Magic)">>
<<set $currentGame to "game1">>
<<goto `passage()`>>
<</link>>
|
<<link "🔄 Force-Switch to GAME 2 (Tech)">>
<<set $currentGame to "game2">>
<<goto `passage()`>>
<</link>>
</div>
<hr>
/* --- 2. INVENTORY AUTO-FILL OPERATIONS --- */
<h3>🎁 Game 1: Magic Inventory Status</h3>
<p>Total Unique Items Found: <<= Object.keys($magicItemsGathered || {}).length>></p>
<<link "🪄 Fill Magic Inventory (1 of Each Item)">>
/* Safely clear or establish the object root */
<<set $magicItemsGathered to {}>>
/* Dynamically loop through all glyphs to harvest unique magicodes */
<<set _keys to Object.keys(setup.glyphs)>>
<<for _i = 0; _i < _keys.length; _i++>>
<<set _glyph to setup.glyphs[_keys[_i]]>>
<<if _glyph.magicode and _glyph.magicode neq "">>
<<set $magicItemsGathered[_glyph.magicode] to 1>>
<</if>>
<</for>>
<<goto `passage()`>>
<</link>>
<br><br>
<h3>💾 Game 2: Tech Inventory Status</h3>
<p>Total Unique Items Found: <<= Object.keys($techItemsGathered || {}).length>></p>
<<link "💾 Fill Tech Inventory (1 of Each Item)">>
/* Safely clear or establish the object root */
<<set $techItemsGathered to {}>>
/* Dynamically loop through all glyphs to harvest unique techcodes */
<<set _keys to Object.keys(setup.glyphs)>>
<<for _i = 0; _i < _keys.length; _i++>>
<<set _glyph to setup.glyphs[_keys[_i]]>>
<<if _glyph.techcode and _glyph.techcode neq "">>
<<set $techItemsGathered[_glyph.techcode] to 1>>
<</if>>
<</for>>
<<goto `passage()`>>
<</link>>
<br><hr><br>
/* --- RETURN PORTAL --- */
<<link "◀ Return to Main Grid (PuzzleZone)">>
<<goto "PuzzleZone">>
<</link>>
<</nobr>><<nobr>>
<h2>Show Your Self</h2>
<p>Before entering the grid, select the core drive that dictates your journey through Game 1. Your choices carry immediate assets, structural alterations, and permanent narrative repercussions.</p>
<hr>
<div class="motivation-wrapper" style="display: flex; flex-direction: column; gap: 20px;">
/* --- ROLE 1: WELL-INTENTIONED SLACKER --- */
<div class="role-box" style="background: #1c241c; padding: 15px; border: 1px solid #336633; border-radius: 4px;">
<h3>🟢 The Devoted Underachiever</h3>
<p><b>Profiled:</b> You're notoriously bad, dumb, and lazy—but you fiercely love your mother, and your sole motivation is to gather what's needed to help her.</p>
<p style="color: #8af88a;"><b>Game 1 Advantage:</b> Magical forces pity your lack of skill. Several grid security checkpoints are pre-cracked and marked solved automatically.</p>
<p style="color: #f88a8a;"><b>The End-Game Tax:</b> Due to your sheer clumsiness and bad management heading into Game 2, you will lose half your amassed gold and enter the next sector clinging to a single remaining life.</p>
<<link "▶ EMBARK AS THE UNDERACHIEVER">>
<<set $playerRole to "slacker">>
<<set $lives to 5>>
/* Pre-solving specific rooms to give them a magical head-start */
<<set $solvedRooms["A29"] to true>>
<<set $solvedRooms["A26"] to true>>
<<set $solvedRooms["A23"] to true>>
<<set $solvedRooms["A19"] to true>>
<<set $solvedRooms["A16"] to true>>
<<set $solvedRooms["A13"] to true>>
<<set $solvedRooms["A10"] to true>>
<<set $solvedRooms["A06"] to true>>
<<set $solvedRooms["A03"] to true>>
<<set $solvedRooms["B28"] to true>>
<<set $solvedRooms["B25"] to true>>
<<set $solvedRooms["B21"] to true>>
<<set $solvedRooms["B18"] to true>>
<<set $solvedRooms["B15"] to true>>
<<set $solvedRooms["B11"] to true>>
<<set $solvedRooms["B08"] to true>>
<<set $solvedRooms["B05"] to true>>
<<set $solvedRooms["B01"] to true>>
<<goto "PuzzleZone">>
<</link>>
</div>
/* --- ROLE 2: THE VENGEFUL --- */
<div class="role-box" style="background: #241c1c; padding: 15px; border: 1px solid #663333; border-radius: 4px;">
<h3>🔴 The Vengeful Catalyst</h3>
<p><b>Profiled:</b> You are driven entirely by old grudges, blood-debts, and settling scores from your past.</p>
<p style="color: #8ab4f8;"><b>Game 1 Baseline:</b> Standard deployment. Additional two Lives granted, raising from 5 to 7.</p>
<p style="color: #f88a8a;"><b>The End-Game Tax:</b> Repercussions from your past vengeful acts catch up with you at the border of Game 2. Cosmic blowback will strip your inventory down, leaving you with all-but-one of each unique magic item you harvested.</p>
<<link "▶ EMBARK AS THE VENGEFUL">>
<<set $playerRole to "vengeful">>
<<set $lives to 7>>
<<goto "PuzzleZone">>
<</link>>
</div>
/* --- ROLE 3: THE POWER-HUNGRY --- */
<div class="role-box" style="background: #24241c; padding: 15px; border: 1px solid #666633; border-radius: 4px;">
<h3>🟡 The Power-Hungry Tyrant</h3>
<p><b>Profiled:</b> You seek absolute dominance, total assimilation of assets, and raw control. You are all you care about.</p>
<p style="color: #8af88a;"><b>Game 1 Advantage:</b> Empowered by your sheer ambition, you manifest a massive pool of <b>12 lives</b> instead of 5.</p>
<p style="color: #f8aa8a;"><b>The Dark Consequence:</b> Because you only care about yourself, you will completely abandon your mother. You will never be permitted to access sector <b>A29</b> to save her, and the terminal will explicitly mock your choices when the time comes.</p>
<<link "▶ EMBARK AS THE POWER-HUNGRY">>
<<set $playerRole to "power">>
<<set $lives to 12>>
<<goto "PuzzleZone">>
<</link>>
</div>
</div>
<</nobr>><h2>ACCESS DENIED: SECTOR BYPASSED</h2>
<hr>
<p>You attempt to route heading calculations toward Sector A29 to assist your elder ... but the terminal interface locks up, flashing a crimson warning display.</p>
<blockquote>
"Error: Incompatible Motivation. You chose the path of absolute dominion. You got your potion in an alternate timeline encounter—you are completely secure, and quite frankly, your own survival is all you ever cared about anyway."
</blockquote>
<p>Your elder passes away unassisted in the dark sectors while you forge ahead alone.</p>
<hr>
<<link "→ Proceed to Next Grid Sector">>
<<set $currentRoomId to "A27">>
<<goto "PuzzleZone">>
<</link>><<nobr>>
/* 1. Initialize Game 3 State Frameworks */
<<if $currentMomoSceneId is undefined>>
<<set $currentMomoSceneId to "MomoS01">>
<<set $momoPlayerAnswers to {}>>
<<set $momoSolvedScenes to {}>>
<</if>>
<<set _scene to setup.sceneDatabase[$currentMomoSceneId]>>
<<set _requiredGlyphs to _scene.sceneglyphs>>
/* test */
/* <<= _requiredGlyphs>> */
/* <<= JSON.stringify(_requiredGlyphs)>> */
<<if $momoPlayerAnswers[$currentMomoSceneId] is undefined>>
<<set $momoPlayerAnswers[$currentMomoSceneId] to []>>
<</if>>
<</nobr>>\
<style>
/* --- Mapping slot row --- */
#momo-slot-row {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin: 15px 0;
}
.momo-slot {
position: relative;
width: 72px;
height: 72px;
display: flex;
justify-content: center;
align-items: center;
border: 2px dashed #555;
border-radius: 8px;
background: #181818;
cursor: pointer;
transition: border-color .15s, box-shadow .15s, background .15s;
}
.momo-slot .momo-slot-num {
position: absolute;
top: 2px;
left: 6px;
font-family: sans-serif;
font-size: 11px;
color: #8ab4f8;
}
.momo-slot .momo-slot-glyph {
font-family: "PhaistosDisc", sans-serif;
transform: scaleX(-1);
font-size: 40px;
color: #ffdca8;
line-height: 1;
}
.momo-slot.momo-filled {
border-style: solid;
border-color: #777;
}
.momo-slot.momo-active {
border: 2px solid #ff9f43;
box-shadow: 0 0 8px rgba(255, 159, 67, 0.7);
background: #241a0e;
}
/* --- Glyph selection grid --- */
#momo-glyph-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(64px, 1fr));
gap: 8px;
margin-top: 15px;
}
.momo-glyph-cell {
font-family: 'PhaistosDisc'; line-height: 1;
transform: scaleX(-1);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
border: 1px solid #444;
border-radius: 8px;
background: #1c1c1c;
padding: 6px 2px 3px 2px;
cursor: pointer;
transition: background .15s, border-color .15s;
}
.momo-glyph-cell:hover {
background: #3a2f1b;
border-color: #ff9f43;
}
.momo-glyph-cell .momo-cell-glyph {
font-family: "PhaistosDisc";
font-size: 34px;
color: #eee;
line-height: 1;
}
.momo-glyph-cell .momo-cell-num {
font-family: "PhaistosDisc"; /*font-family: sans-serif;*/
font-size: 10px;
color: #888;
margin-top: 3px;
}
</style>\
Analyze the narrative fragments below. To solve, you must map the correct glyphs to the thematic events of the scene. **Lives Available:** $lives
<div style="background: #111; border: 1px solid #333; padding: 20px; border-radius: 4px; margin-bottom: 20px; font-size: 1.1em; line-height: 1.5em; border-left: 4px solid #ff9f43;">
''"''<<= _scene.text>>''"''
</div>
<<nobr>>
/* 2. Build the master glyph registry: name→character lookup plus the grid cell HTML */
<<set _nameToChar to {}>>
<<set _gridHtml to '<div id="momo-glyph-grid">'>>
/* creates set for the Momo grid .. but how to get the peach in here? */
<<set _show to ["peach", "river", "millet cakes", "Momotarō", "Oni", "Old Man", "Old Woman", "boat", "gold", "pheasant flying", "Momotarō battles Oni Chief"]>>
<<for _gIdx = 0; _gIdx < 47; _gIdx++>>
<<set _padId to String(_gIdx + 1).padStart(2, '0')>>
<<set _glyphKey to "PDglyph" + _padId>>
<<set _mName to setup.glyphs[_glyphKey].MomoName>>
<<if _gIdx is 46>>
<<set _glyphKey to "PDglyph47peach">>
<<set _mName to "peach">>
<</if>>
/* 66000 dec corresponds to hex 101D0 */
<<set _hexChar to "&#x" + (66000 + _gIdx).toString(16) + ";">>
/* */
<<if _glyphKey is "PDglyph25">>
<<set _hexChar to
'<span class="rotated-pd-glyph">' +
_hexChar +
'</span>'
>>
<</if>>
<<set _nameToChar[_mName] to _hexChar>>
<<if _gIdx is 46>>
<<set _hexChar to '<img class="peach-glyph" src="glyphs/PDglyph47peach.svg" alt="Peach">'>>
<<set _nameToChar[_mName] to _hexChar>>
<</if>>
/* if not in desired set, it is ignored */
<<if not _show.includes(_mName)>><<continue>><</if>>
<<set _gridHtml += '<div class="momo-glyph-cell" data-name="' + _mName + '" title="' + _mName + '" onclick="window.momoPick(this)"><span class="momo-cell-glyph">' + _hexChar + '</span><span class="momo-cell-num"></span></div>'>>
<</for>>
<<set _gridHtml += '</div>'>>
/* 3. Build the slot row */
<<set _answers to $momoPlayerAnswers[$currentMomoSceneId]>>
<<set _slotsHtml to '<div id="momo-slot-row">'>>
<<if $momoSolvedScenes[$currentMomoSceneId] is true>>
/* Solved: show the verified sequence, locked in green */
<<for _idx = 0; _idx < _requiredGlyphs.length; _idx++>>
<<set _char to _nameToChar[_requiredGlyphs[_idx]] || "?">>
<<set _slotsHtml += '<div class="momo-slot momo-filled" style="border-color: #55ff55; background: rgba(85, 255, 85, 0.06); cursor: default;"><span class="momo-slot-num">' + (_idx + 1) + '</span><span class="momo-slot-glyph">' + _char + '</span></div>'>>
<</for>>
<<set _slotsHtml += '</div>'>>
<<print _slotsHtml>>
<p><span style="color: #55ff55; font-weight: bold;">Verified meaning sequence:</span> <span style="color: #aaa;"><<= _requiredGlyphs.join(" → ")>></span></p>
<<else>>
/* Unsolved: slots are clickable targets; previously placed answers persist across re-renders */
<<for _idx = 0; _idx < _requiredGlyphs.length; _idx++>>
<<set _ans to _answers[_idx]>>
<<set _char to _ans ? _nameToChar[_ans] : "">>
<<set _filledClass to _ans ? " momo-filled" : "">>
<<set _slotsHtml += '<div class="momo-slot' + _filledClass + '" id="momo-slot-' + _idx + '" onclick="window.momoSetActive(' + _idx + ')"><span class="momo-slot-num">' + (_idx + 1) + '</span><span class="momo-slot-glyph">' + _char + '</span></div>'>>
<</for>>
<<set _slotsHtml += '</div>'>>
<<print _slotsHtml>>
<p style="color: #aaa; font-size: 0.9em; font-style: italic;">The highlighted slot is awaiting an ideogram. Click a glyph in the registry grid below to assign it; click any slot to re-target it. The same glyph may be assigned to multiple slots.</p>
/* 4. The glyph selection grid */
<<print _gridHtml>>
/* 5. Client-side slot/grid interaction handlers */
<<set window.momoSlotTotal to _requiredGlyphs.length>>
<<script>>
window.momoSetActive = function (idx) {
window.momoActiveIdx = idx;
jQuery('.momo-slot').removeClass('momo-active');
if (idx != null && idx >= 0) {
jQuery('#momo-slot-' + idx).addClass('momo-active');
}
};
window.momoNextEmpty = function (total) {
var sv = SugarCube.State.variables;
var ans = sv.momoPlayerAnswers[sv.currentMomoSceneId] || [];
for (var i = 0; i < total; i++) {
if (ans[i] === undefined || ans[i] === null || ans[i] === '') {
return i;
}
}
return -1;
};
window.momoPick = function (cell) {
var idx = window.momoActiveIdx;
if (idx == null || idx < 0) { return; }
var sv = SugarCube.State.variables;
var sceneId = sv.currentMomoSceneId;
if (sv.momoPlayerAnswers[sceneId] === undefined) {
sv.momoPlayerAnswers[sceneId] = [];
}
var name = cell.getAttribute('data-name');
var ch = jQuery(cell).find('.momo-cell-glyph').html(); /*text();*/
sv.momoPlayerAnswers[sceneId][idx] = name;
var $slot = jQuery('#momo-slot-' + idx);
$slot.find('.momo-slot-glyph').html(ch); /*text(ch);*/
$slot.addClass('momo-filled').css({ 'background': '', 'border-color': '' });
window.momoSetActive(window.momoNextEmpty(window.momoSlotTotal));
};
<</script>>
/* Highlight the first empty slot once the passage has rendered */
<<done>>
<<script>>
var firstEmpty = window.momoNextEmpty(window.momoSlotTotal);
if (firstEmpty != null && firstEmpty >= 0) {
jQuery('#momo-slot-' + firstEmpty).trigger('click');
}
/*window.momoSetActive(window.momoNextEmpty(window.momoSlotTotal));*/
<</script>>
<</done>>
<</if>>
<</nobr>>
<hr>
<<nobr>>
<div id="momo-diagnostic-results">
<<nobr>>
<<if $momoSolvedScenes[$currentMomoSceneId] isnot true>>
<<link "⬡ Run Ideogram Alignment Diagnostic">>
<<set _sceneAnswers to $momoPlayerAnswers[$currentMomoSceneId] || []>>
/* Gate: every slot must be filled before the diagnostic will run */
<<set _unfilled to 0>>
<<for _idx = 0; _idx < _requiredGlyphs.length; _idx++>>
<<if _sceneAnswers[_idx] is undefined or _sceneAnswers[_idx] is "">>
<<set _unfilled++>>
<</if>>
<</for>>
<<if _unfilled gt 0>>
<<replace "#momo-action-portal">>
<span style="color: #ff9f43; font-weight: bold;">
Diagnostic aborted: <<= _unfilled>> mapping slot(s) remain empty. Assign an ideogram to every slot before running the alignment scan.
</span>
<</replace>>
<<else>>
<<set _errorsFound to 0>>
/* Evaluate each slot against the master design requirements */
<<for _idx = 0; _idx < _requiredGlyphs.length; _idx++>>
<<set _playerChoice to _sceneAnswers[_idx]>>
<<set _targetChoice to _requiredGlyphs[_idx]>>
<<if _playerChoice is _targetChoice>>
<<run jQuery("#momo-slot-" + _idx).css({"background": "rgba(85, 255, 85, 0.08)", "border-color": "#55ff55"})>>
<<else>>
<<set _errorsFound++>>
<<run jQuery("#momo-slot-" + _idx).css({"background": "rgba(255, 85, 85, 0.08)", "border-color": "#ff5555"})>>
<</if>>
<</for>>
/* Process Validation Consequences */
<<if _errorsFound is 0>>
<<set $momoSolvedScenes[$currentMomoSceneId] to true>>
<<replace "#momo-action-portal">>
<div style="background: #1a331a; padding: 15px; border: 1px solid #336633; border-radius: 4px; margin-top: 15px;">
<span style="color: #55ff55; font-weight: bold;">■ Calibration Complete: Universal Meanings Verified.</span>
<p style="color: #aaa; font-style: italic;">The cross-cultural ideological thesis holds clean across civilizationally-long timespans!</p>
<div style="margin-top: 15px;">
<<set _sceneKeys to Object.keys(setup.sceneDatabase)>>
<<set _currIndex to _sceneKeys.indexOf($currentMomoSceneId)>>
<<if _currIndex lt _sceneKeys.length - 1>>
<<set _nextScene to _sceneKeys[_currIndex + 1]>>
<<link "→ Proceed to Next Narrative Scene Sector">>
<<set $currentMomoSceneId to _nextScene>>
<<goto "Game3Momotaro">>
<</link>>
<<else>>
<p style="color: #ff9f43; font-weight: bold;">All scenes encoded!</p>
<<link "Find out if the team survived.">>
<<goto "ALCch7end">>
<</link>>
<<link "Receive your certificate">>
<<goto "cert">>
<</link>>
<br><br>
<<link "◀ Return to Terminal Core">>
<<goto "PuzzleZone">>
<</link>>
<</if>>
</div>
</div>
<</replace>>
<<else>>
/* Deduct life parameter on validation rejection */
<<set $lives to $lives - 1>>
<<if $lives lte 0>>
<<goto "UntimelyPassing">>
<<else>>
<<replace "#momo-action-portal">>
<span style="color: #ff5555; font-weight: bold;">
Alignment Failed: <<= _errorsFound>> database mapping parameters mismatched. Deficient static charge feedback encountered—1 Life lost!
</span>
<br>
<<link "Re-evaluate Calibration Array">>
<<goto "Game3Momotaro">>
<</link>>
<</replace>>
<</if>>
<</if>>
<</if>>
<</link>>
<</if>>
<</nobr>>
<p id="momo-action-portal"></p>
</div>
<</nobr>>
<<nobr>>
<div style="display: flex; gap: 10px; font-size: 0.9em; flex-wrap: wrap;">
<<set _mKeys to Object.keys(setup.sceneDatabase)>>
<<for _k range _mKeys>>
<<capture _k>>
<<set _label = _k.replace("MomoS", "S")>>
<<if $currentMomoSceneId is _k>>
<span style="background: #ff9f43; color: #000; padding: 2px 6px; border-radius: 3px; font-weight: bold;"><<= _label>></span>
<<elseif $momoSolvedScenes[_k] is true>>
<<link `"<span style='color: #55ff55;'>✔️ " + _label + "</span>"`>>
<<set $currentMomoSceneId to _k>>
<<goto "Game3Momotaro">>
<</link>>
<<else>>
<<link _label>>
<<set $currentMomoSceneId to _k>>
<<goto "Game3Momotaro">>
<</link>>
<</if>>
|
<</capture>>
<</for>>
</div>
<</nobr>><<nobr>>
/* ── 1. BOOT: one-time initialization of all Game 3 state ── */
<<if $currentMomoSceneId is undefined>>
<<set $currentMomoSceneId to "MomoS01">>
<<set $lives to 5>>
<</if>>
<<if $momoFontAnswers is undefined>>
<<set $momoFontAnswers to {}>>
<</if>>
<<if $momoSolvedScenes is undefined>>
<<set $momoSolvedScenes to {}>>
<</if>>
<<if $selectedGlyphIndex is undefined>>
<<set $selectedGlyphIndex to null>>
<</if>>
/* ── 2. Pull active scene data ── */
<<set _scene to setup.sceneDatabase[$currentMomoSceneId]>>
<<set _slotCount to _scene.sceneglyphs.length>>
/* ── 3. Seed empty slot array for this scene if needed ── */
<<if $momoFontAnswers[$currentMomoSceneId] is undefined>>
<<set $momoFontAnswers[$currentMomoSceneId] to []>>
<<for _j = 0; _j < _slotCount; _j++>>
<<set $momoFontAnswers[$currentMomoSceneId][_j] to null>>
<</for>>
<</if>>
<</nobr>>
## 🍑 Momotaro Glyph Calibration
❤️ **Lives:** $lives
---
### Scene: $currentMomoSceneId
<div style="background:#111;border:1px solid #333;padding:15px;border-radius:4px;font-size:1.1em;line-height:1.5em;border-left:4px solid #ff9f43;margin-bottom:20px;">
''"''<<= _scene.text>>''"''
</div>
<!-- ════════════════════════════════════════════
ZONE A — ANSWER SLOTS
Tap a glyph in Zone B first (it highlights gold).
Then tap the slot you want to fill.
════════════════════════════════════════════ -->
### 📥 Your Answer — tap a slot to place the selected glyph
<<nobr>>
<div class="momo4-slots-row">
<<for _slotIdx = 0; _slotIdx < _slotCount; _slotIdx++>>
<<capture _slotIdx>>
<<set _filled to $momoFontAnswers[$currentMomoSceneId][_slotIdx]>>
/* Decide border colour: gold=active target, green=filled, dashed=empty */
<<if $momoSolvedScenes[$currentMomoSceneId] is true>>
<<set _boxStyle to "border:2px solid #55ff55;">>
<<elseif $selectedGlyphIndex isnot null>>
<<set _boxStyle to "border:2px solid #ff9f43;cursor:pointer;">>
<<else>>
<<set _boxStyle to "border:2px dashed #555;">>
<</if>>
<div class="momo4-slot-box" id="`'slot-box-' + _slotIdx`" style="<<= _boxStyle>>">
/* Invisible full-area tap target */
<<if $momoSolvedScenes[$currentMomoSceneId] isnot true>>
<<link "">>
<<if $selectedGlyphIndex isnot null>>
<<set $momoFontAnswers[$currentMomoSceneId][_slotIdx] to $selectedGlyphIndex>>
<<set $selectedGlyphIndex to null>>
<<goto "Momo4">>
<</if>>
<</link>>
<</if>>
<div class="momo4-slot-label">Slot <<= _slotIdx + 1>></div>
/* Show the assigned glyph character via the font, or a blank placeholder */
<div class="momo4-slot-glyph phaistos">
<<if _filled isnot null and _filled isnot undefined>>
/* _filled is a 0-based index; glyph 1 is at codepoint 0x101D0, etc.
The font maps glyph N (1-based) to U+101CF + N
i.e. glyph 1 → U+101D0, glyph 2 → U+101D1 … glyph 46 → U+101FF */
<<= String.fromCodePoint(0x101CF + _filled + 1)>>
<<else>>
<span style="color:#444;font-family:sans-serif;font-size:0.6em;">empty</span>
<</if>>
</div>
</div>
<</capture>>
<</for>>
</div>
<</nobr>>
<!-- Clear-all shortcut while unsolved -->
<<if $momoSolvedScenes[$currentMomoSceneId] isnot true>>
<<nobr>>
<div style="margin-bottom:16px;">
<<link "✖ Clear all slots">>
<<set $momoFontAnswers[$currentMomoSceneId] to undefined>>
<<set $selectedGlyphIndex to null>>
<<goto "Momo4">>
<</link>>
</div>
<</nobr>>
<</if>>
<!-- ════════════════════════════════════════════
SUBMIT LINK
════════════════════════════════════════════ -->
<div id="momo4-validation-portal" style="margin:20px 0 10px 0;">
<<nobr>>
<<if $momoSolvedScenes[$currentMomoSceneId] isnot true>>
<<link "⬡ Judge my answer">>
<<set _errors to 0>>
<<set _expected to _scene.sceneglyphs>>
<<for _idx = 0; _idx < _slotCount; _idx++>>
<<set _playerIdx to $momoFontAnswers[$currentMomoSceneId][_idx]>>
<<if _playerIdx is null or _playerIdx is undefined>>
<<set _errors++>>
<<else>>
/* Convert 0-based grid index → 2-digit padded key e.g. 0→"PDglyph01" */
<<set _key to "PDglyph" + String(_playerIdx + 1).padStart(2, '0')>>
<<set _momoName to setup.glyphs[_key].MomoName>>
<<if _momoName isnot _expected[_idx]>>
<<set _errors++>>
<</if>>
<</if>>
<</for>>
<<if _errors is 0>>
<<set $momoSolvedScenes[$currentMomoSceneId] to true>>
<<replace "#momo4-action-box">>
<div style="background:#1a331a;padding:15px;border:1px solid #336633;border-radius:4px;margin-top:15px;">
<span style="color:#55ff55;font-weight:bold;">■ Sequence verified — sector unlocked.</span>
<div style="margin-top:15px;">
<<set _sceneKeys to Object.keys(setup.sceneDatabase)>>
<<set _currIndex to _sceneKeys.indexOf($currentMomoSceneId)>>
<<if _currIndex lt _sceneKeys.length - 1>>
<<set _nextScene to _sceneKeys[_currIndex + 1]>>
<<link "→ Next scene">>
<<set $currentMomoSceneId to _nextScene>>
<<set $selectedGlyphIndex to null>>
<<goto "Momo4">>
<</link>>
<<else>>
<p style="color:#ff9f43;font-weight:bold;">🎉 All 12 scenes complete!</p>
<<link "◀ Return to main terminal">>
<<goto "PuzzleZone">>
<</link>>
<</if>>
</div>
</div>
<</replace>>
<<else>>
<<set $lives to $lives - 1>>
<<if $lives lte 0>>
<<goto "UntimelyPassing">>
<<else>>
<<replace "#momo4-action-box">>
<div style="color:#ff5555;font-weight:bold;padding:10px;background:rgba(255,85,85,0.1);border:1px solid #ff5555;border-radius:4px;margin-top:10px;">
❌ <<= _errors>> slot(s) wrong — 1 life lost. Lives remaining: <<= $lives>>
</div>
<<link "🔄 Try again">>
<<set $momoFontAnswers[$currentMomoSceneId] to undefined>>
<<set $selectedGlyphIndex to null>>
<<goto "Momo4">>
<</link>>
<</replace>>
<</if>>
<</if>>
<</link>>
<</if>>
<</nobr>>
<div id="momo4-action-box"></div>
</div>
---
<!-- ════════════════════════════════════════════
ZONE B — GLYPH FONT GRID (4 columns, 46 glyphs + 2 padding cells)
Tap any glyph to "select" it (it glows gold).
Tap again to deselect.
Then tap a slot above to place it.
════════════════════════════════════════════ -->
### 🔠 Glyph grid — tap to select, then tap a slot above
<<nobr>>
<div class="momo4-grid-container">
<<for _gi = 0; _gi < 48; _gi++>>
<<capture _gi>>
<<if _gi < 46>>
/* Is this glyph currently selected? */
<<set _isActive to ($selectedGlyphIndex is _gi)>>
<<set _activeClass to (_isActive ? " active-glyph-key" : "")>>
<div class="`'momo4-grid-item' + _activeClass`">
/* Invisible tap target — selecting highlights; tapping again deselects */
<<link "">>
<<if $selectedGlyphIndex is _gi>>
/* Deselect: tap the same glyph twice */
<<set $selectedGlyphIndex to null>>
<<else>>
<<set $selectedGlyphIndex to _gi>>
<</if>>
<<goto "Momo4">>
<</link>>
/* Render the glyph character from the font */
<span class="phaistos"><<= String.fromCodePoint(0x101CF + _gi + 1)>></span>
/* Small index number bottom-right for reference */
<div class="momo4-key-number"><<= _gi + 1>></div>
</div>
<<else>>
/* Padding cells to keep the 4-column grid tidy */
<div class="momo4-grid-item" style="background:transparent;border:1px dashed #1a1a1a;cursor:default;">
<span class="momo4-empty-placeholder"> </span>
</div>
<</if>>
<</capture>>
<</for>>
</div>
<</nobr>>
---
<!-- Scene navigation strip -->
### 🗂️ Scene navigator
<<nobr>>
<div style="display:flex;gap:8px;font-size:0.85em;flex-wrap:wrap;">
<<set _navKeys to Object.keys(setup.sceneDatabase)>>
<<for _nav range _navKeys>>
<<capture _nav>>
<<set _lbl to _nav.replace("MomoS", "S")>>
<<if $currentMomoSceneId is _nav>>
<span style="background:#ff9f43;color:#000;padding:2px 6px;border-radius:3px;font-weight:bold;"><<= _lbl>></span>
<<elseif $momoSolvedScenes[_nav] is true>>
<<link `"<span style='color:#55ff55;'>✔ " + _lbl + "</span>"`>>
<<set $currentMomoSceneId to _nav>>
<<set $selectedGlyphIndex to null>>
<<goto "Momo4">>
<</link>>
<<else>>
<<link _lbl>>
<<set $currentMomoSceneId to _nav>>
<<set $selectedGlyphIndex to null>>
<<goto "Momo4">>
<</link>>
<</if>>
|
<</capture>>
<</for>>
</div>
<</nobr>>
[[◀ Main terminal|PuzzleZone]]
Epilogue
Thirty-seven years after the preceding events, the Earth's magnetic core finally ramped up. It reached a peak it hadn't experienced in almost 26,000 years. The magnetic field it produced was so strong that anything containing magnetite began to levitate. All people are filled with trillions of specks of magnetite molecules. In a strong magnetic field, the magnetite will cause any mammal to float. During the startup of the Earth's massive core engine, there are hiccups, pauses, restarts, jumps, rattles, bangs, and shakes. That's what every human on the planet's surface experienced, as the surging magnetic field caused everyone to suddenly levitate up hundreds, even thousands of feet into the sky, only to be dropped just as suddenly. Over and over again.
This is the same as what had happened to the Clovis people, eleven thousand years before. Both groups had known much about the recharge event, and had thought that the event had finished taking place. What they didn't know, what no one knew, was how spiky the restart would be. They were simply too early, in departing their protective caves.
Of the three camps in the preceding story, totaling four thousand and four souls, there was only one survivor. Alton's notes formed the basis for this report. His notes also hinted that there might be other methods for transmitting the Disc's knowledge. Methods that are not at all like the Disc, but are instead much, much more visual. He called one of those methods "sand castles".
---
<<link "⏻ Close Game">>
<<goto "GameOver">>
<</link>>Chapter 2: Glyphs and Glitches
set in 1672 BC, Knossos, Capthoria
“Most of these are for .. shielding. Protecting the human body. How rough is it, after the magnetic field is recharged? And why is this protection mostly for men?” Trin closed her mouth, and looked expectantly at Zahir, sitting across from her.
Zahir’s eyes looked at anything except the faces of her two companions. She pulled her hands from the table top, folded them into her lap, drew a short breath, and gave the answer. “They can’t make babies because the high strength of the magnetic field is damaging to the Y chromosome. Even if they do have any children, the infants will fail to thrive, due to the absence of b. infantis. We all have that in our breast milk, naturally; they, in their future time, will not. Their babies' intestinal systems simply will not develop to be hardy enough for that environment. That’s why the disc gets right to the point, on the side where it tells the story of the Flood, in the fifth segment. Finding b. infantis is a life-or-death challenge for any new society, as they emerge from their bunkers.”
Callie waved a finger to ensure the scribe’s attention, and asked, “Do they need to figure out each and every shielding item, before moving on to other feats? I’m concerned about competing needs .. just not sure why,” and trailed off, unusual for the woman with the role of final arbiter on all disc design decisions.
Nyssa gave a quick nod in Gayle’s general direction.
Gayle had already perked up, left a half-ish sly wink at Nyssa while turning towards Callie. “Communications. Various groups are being released in the same time frame. Whether for in-group communications, or for coordinating the group against an attacker, they’ll need communications. In our era of a mid-level magnetic field we’re no longer able to use lower frequency microwaves, and in the next era they will have to use the frequencies that are closer to infrared. But in that initial era when the travelers are freed from the crystal caves, when the magnetic field that permeates the entire Earth is so strong, even lower frequency microwaves can act to transport our signals over thousands of kilometers.”
Nyssa grinned and prompted her work wife, “Come on, Gay, talk about those glyphs for the music player and all that.”
The other ladies kindly ignored the slight blush on Gayle’s cheeks as she listed the communication items the newly Freed would have to invent. “They’ll need photon-based communications for voice, right away. People even today use horns for long distance communication. We could use an auroch horn and call it the magic horn."
Gayle continued. "Video communications would be good, or at least a device for storing images. A magic mirror might be the right way to encode what is needed. One of my artisans has developed a sign that is a reflection of itself, with a perimeter shape that itself has no meaning."
Nyssa chimed in, "And we all know how deeply rooted is the human need for music, so, a magic harp is on the list.”
Callie lifted one finger, paused, and said, “Ok, so that’s a set of items to shield the body, and,” she lifted a second finger, “a set of devices for communicating. We already know the transportation category has items like ‘shoes of swiftness’ and ‘feather of flight’ to mean mechanized transport on ground and in air. So far, and I’m sure you’re on it, but so far, I haven’t seen much in the way of switches. Tough to control a power grid safely, if you have to throw every switch by hand.”
“I think Trin and Rita are working on that,” volunteered Nyssa. “They have worked out two ways to depict the diode, transistor, thyristor, and triac. The one I like best is the one that looks like the older beehive glyph, and in a way, that particular glyph can be seen as a table that fills itself.”
Callie huffed out a “What?” while Nyssa nodded with a prim smile.
“Yep. They found a way to represent all the most important electromagnetic circuit solid state switches into one glyph.”
“Using the old beehive glyph? We don’t even make beehives that way anymore.”
“Exactly.” agreed Nyssa.
Gayle finished the point. “How people view these glyphs will depend on their own cultures. No matter how well we design this disc, if the line of teachers is ever broken, the message could be lost. What then?”
Callie replied, “The line of teachers shall remain unbroken. All of you know the effort that the other teams are putting into that project. Let us focus on finishing the design of our Disc. And with that, let me end this meeting.” She got up from the meeting table, walked to the door, opened it, and motioned for all to exit, except for the scribe.
[[Next Scene|ALCch3]]
<b>Compounds Can Be Charmed</b>
<em>set in 2158 AD, New Carlisle, Indiana</em>
“Are you kidding me?!?! ARE YOU KIDDING ME!!” Azreen threw down his shovel, and stalked angrily away from the stinking pit.
Blake watched him go, then turned back to the pit. “Keep going, guys. You’re almost there!” He kept his face neutral, but he could not stop feeling deeply grateful that he no longer had to be a Pit Cleaner. Every job is honorable, but some stink in a way that stays with you. He understood why Azreen had lost his patience. Few people ever put thought into sanitation, until a few people start dying from preventable diseases. Blake’s group was finally producing babies. Now it was their parents who were falling ill, vomiting endlessly, and dying of dehydration.
Azreen returned, shuffling up somberly to Blake’s left. “We were supposed to all know the same language, Blake. We were told we would all know the One True Tongue. I’ve checked around and no one in our group has any perception of anything like that. So now I’m wondering if the recharge happened at all.” He punctuated that last sentence by glowering directly into Blake’s face.
Blake sighed, and took off his glasses. Thankfully he had decided to bring them with him, into the cocoon. He had been taught that the recharged magnetic field would cure his myopia. Like Azreen, he too had concluded that the expected recharge simply hadn’t happened. There would be no Babylon-in-reverse. No health benefits from a strong magnetic field. No help from anywhere.
Blake turned and walked away from the pit. He didn’t even bother calling out any final instructions. He took a long walk around the group campsite, where they had been living for seven months. As far as they could tell, it was only 2158 AD. And he knew for sure that he, too, had had enough, just like Azreen. He kept on walking, long after dusk had fallen.
He got far enough out away from the camp that, as night's chill settled into the air around him, he knew he would have to make camp. That, or take his chances walking back in the dark.
Blake opted to set up a fire. At the very least, he could warm himself, and construct a torch. Then he could choose to prepare to walk home with some light in hand. Alternatively, he could simply bed down. There was no danger in the night, not anymore. People sleep outside all the time these days. There are no animals larger than mice. And no birds, at all.
After gathering some wood, he used one stick to dig out a fire hole with a side entrance. Blake arranged the wood sticks vertically in the main hole, tinder just below. Then he used his flint and steel to light the tinder, accessing through the side hole. The dry wood lit eagerly. Blake let it get going enough to pull a slight draft, and then set a large rock to one side of the firehole. Having finished making the fire, he sat down to take a break. He looked at the rock as it got hotter, and he thought about different ways to heat food. There was the typical electric or gas oven that the modern western world was so familiar with. There was the typical dutch oven, such as one might use in a firehole or in a fireplace. And there was another kind of oven where it was essentially a pot inside another pot. How would you show that on the Disc, he asked himself. You can't put a pot inside another pot, in a two dimensional display.
Blake stopped breathing for a moment, thinking about the Disc symbol showing a pot above another pot. One might also see that as pot on pot. Maybe that was a way of showing the concept of an oven? Or the concept of using a second pot to keep its temperature steady? What would be delicate enough that you would need to keep it heated at an exact temperature? Into his mind came a cataract of ideas about the Disc's other glyphs, and how steady heat is so useful for cultures.
[[Next Scene|ALCch5]]Chapter 4: Too Many Threads
set in 1672 BC, Knossos, Capthoria
“Who is this for?!” asked Callie. She saw that her team was losing focus. It would be nice if humans could stay attentive at all times, she thought to herself. “Who, specifically, will be using these disks?”
Zahir chimed in with, “The teachers themselves. Their students will be expected to create their own copies on papyrus or whatever is available in the target culture.” She tapped the table top twice with her right index fingernail, to emphasize her point.
Nyssa, who owned the pottery factory in the town next over, and was the head of the island’s potters union, bit on every word when she said, “There is no clay that can do what you want this disc to do. Unfold? Inflate? Not happening.”
“And be read in one direction with one set of meanings for the glyphs, while reading in another direction requires using different meanings for each glyph. Let’s not forget that fun little requirement.” Dorothe stirred her drink with her corundum straw, an heirloom passed down from her grandmother .. along with the admonishment to use it daily.
Sitting up a bit straighter so as to signal her intent to speak, Gayle gave them a starting point when she huskily said, “Remember, when they first come out of the caves, they’ll be prepared for the immediate problems of water, food, and shelter. It’ll be a while before they start realizing that there are even tougher challenges that await them. We’ll need glyphs to explain that the men’s Y chromosomes are in danger, as well as the need for that very special bacteria that needs to be in the breast milk. And then those glyphs need to be re-usable in the cover story, so our agents remain undiscovered. Anyone got a line on that?”
Nyssa's hand hinged up from the table, fingers waving slowly. “This is Rita’s idea, and I really like it. We know the glyph we use to show the player must make a choice. It's the one that is clearly a fork in the road, a branch on a limb, however you want to phrase it. Rita is also suggesting that the multi-option glyph, the one that looks like a Y with a lot of fringe, will also work as the glyph for the Y chromosome."
Nyssa went on. "Riffing on that idea, I realized that our “bitter end” glyph, the one that looks like an end splice or as if a string or a cloth tape has been folded in half and twisted, can also stand for the intestinal coating bacteria. It somewhat resembles the very shape of b. infantis. Enough to serve the purpose of this disc, which is mnemonic, after all, rather than being a complete explanation.”
“That gives us the full set of glyphs for the grammar, if you will,” stated Zahir, with a satisfied toss of her hair.
Callie’s eyebrows went up just a tad as she asked, “Grammar? Is that how we think of those particular glyphs?”
Zahir smiled and nodded happily. “Oh yes. Just look at the arrowhead glyph, for example. We’ve managed to turn that directional symbol into an all-purpose preposition! In the cover story, it can mean ‘go towards’ or ‘of the’ or even ‘more story versions’.”
“So, the fork-in-the-road means ‘or’ as in having to make a choice,” Callie replied, “and the flood glyph is re-used as a variation on ‘or’ such that it means ‘make a decision or continue’ with whatever action was being performed at that time. The little slash is a jump mark, indicating that the reader is to jump down to the next layer of the spiral. The ‘go home’ aka ‘return’ glyph is used as a wish, or extra life, or the use of a magic wand, whatever the local culture is primed to hear. Have we covered the set?”
The other four Council Women nodded in unison, and with that, the ladies adjourned. Only Callie remained, as she waited for their scribe to finish taking his notes, and give her a copy.
Outside the meeting room, Gayle and Nyssa walked down the hall together, exiting the building down the wide basalt steps, stepping onto the bricked walkway. As Gayle turned left, she felt Nyssa turn with her, and she also felt a thrill in her heart. They had plans to have dinner together, just the two of them, in Nyssa’s rooms that evening. Then they might listen to the microcast. They hadn’t been dating long enough to have tapas together, so an overnight stay wasn’t in the cards, but there were definitely going to be some happily tired smiles by the time they parted ways for the night.
[[Next Scene|ALCch5]]<b>Trips and Throws</b>
<em>set in 2158 AD, Sago Mine, West Virginia</em>
The museum frieze was so clear to Alton that he stopped breathing. Transfixed, eyes unmoving, pulse slowing, until Helan nudged him. He pulled in a long breath, and then he breathed out all his air, and sank slowly down to sit on his haunches.
"Why is this thing even in here?" Nancy asked what they all wondered about. They all stood in front of the long slab of stone, covered in ancient Egyptian hieroglyphs. They had found it stored in one of the many rooms along that hall.
“It’s basically ad copy. This is like an ad. The cartouche to the left is the ‘name’ of the device being advertised. The glyphs on the right are to be read from right to left, moving towards the cartouche. This was for more than just bliss, although many did use these chair-spa units in this way. They also used it to allow their brains and all their body to operate at peak capacity. They knew enough about magnetism to use it to their biological benefit.”
Barnold asked, “And here I am feeling like I forgot everything I ever knew. Were we stuck in the bottles for so much longer than expected?
From the far wall, Nancy spoke up, clearly and with no hesitation. “It’s not that we were in the bottles for too many centuries, Barny. It’s that we were in the bottles for only a short time. I think this is only 2158. It’s only been a few years or so since we were put into the bottles.”
Barnold's face dropped.
“Exactly.” Nancy continued, “The recharge of the planet's magnetic field hasn't completed its process, I am guessing, so we’re in much the same situation as prior to the geomagnetic excursion. Well, with more damage, fewer resources, far fewer people. In other words, we aren’t building a society. We are now a cargo society.”
"Maybe we are the new Clovis people," said Alton. "They appeared mysteriously, 13,000 years ago, spread all over North America, and then suddenly disappeared."
None of them said anything for almost three minutes, as they each worked through the obvious implications.
“As we go deeper, Nancy, will we feel the magnetic field more keenly?” Barnold asked. He then reminded them, “We all know the stories of how researchers of the Stone Age found evidence that early humans were sometimes taking babies deep into the earth, sometimes a mile deep. No one from the herd has ever suggested even a hint of any purpose for this.”
“The field will become stronger, but we won’t feel it, no matter how far down we go. This cycle’s recharge simply wasn’t enough. We don’t get the choir feeling, we don’t get to be elves, we don’t get to be the noble humans, nor even the darker versions of those lives. We are still plain folk, and plain we shall stay.”
Alton raised a hand, to push back. “Sure, the planet’s field is weak. However, we do know how to make local fields that are strong enough to do what we need. Right?”
Barny coughed, paused, and then nodded for Alton to go on.
"We don't have this amazing magnetic field we were promised. That means we have the old, weak one. We did plenty of interesting work with that weak field. We had radios, for example. With a few basic parts, I can construct an old style radio that was of great use in World War I."
[[Next Scene|ALCch7]]Chapter 6: All the Way Down
set in 1672 BC, Knossos, Capthoria
“They’ll need more than that. Sure, at this point in the recovery of their civilization, they’ve got healthy babies, and some form of electronics. That won’t mean much at their next bout of dysentery." Trin tapped her magna-pen to the off setting.
Rita nodded, and injected some hope into the flow of the meeting, saying, “If they are able to get any chemistry going, they can handle microbes. And thanks to our design decision, to at least attempt to make use of the glyphs that are in common use across the various technical logographies. We’re pulling from Anatolian hieroglyphs, older versions of Egyptian symbols, our own hieroglyphs that on this island we so love, and of course our own process delineation symbol charts, group A. Some call them Spiral A or Lined Aleph, but we actually prefer the official name, which is Linea-” She broke off as Callie rushed into the room.
“It’s not enough that they need to make electronics with tools no better than rock and wood. They also need to know about gathering and concentrating methane. I’ve just come from Akrotiri and gained some information that might be of use to you, Nyssa.” And with that, the normally taciturn Callie threw three papyrus bundles onto the table. “Go through these plans. They show several ways to gather methane, how to make more by centralizing their group’s fecal outputs, and they explain the various uses of that methane. You really can start an entire civilization that way, as our little friend, the dung beetle, has shown us many times, on many flags, across the millenia.”
With a twinge of exasperation in her voice, Nyssa replied, “I don’t know how we can cram any more data into the disc. Not to make a joke out of it, but you’re almost to the point where you need to start putting glyphs inside the clay disc itself, in between the two halves. Sure, we can add in the game play with lives and the choose-your-own-adventure aspect, but not much more."
Callie wasn’t having any, today. “Nyssa. When I came in, you were reviewing the fact that these glyphs came from the various process symbol charts in use by kingdoms all around the Mediterranean. These are the charts our sister societies use to operate their chemical manufacturing facilities, and to generate static electricity, and to make medicine for healing, and to use magnetism for improving infant intelligence. You found a way to use most of those glyphs in two completely different ways, some that have almost nothing to do with their original intent. I believe in your ability to find a third way, or some other glyph, a composition of glyphs on two more segments .. something.” Callie turned on her heel and marched out the door before anyone could reply.
“She’s always like that, when she has to come home from Akrotiri,” said Rita. The others nodded, and then got back to their meeting. They all knew that there wouldn’t be any further changes to the amount of information transmitted by the disc. So .. could a segment be re-composed in some way?
[[Next Scene|ALCch7]]<b>Three is a Magic Number</b>
<em>set in 2158 AD, Mammoth Cave, Kentucky</em>
"Yes, I'm sure that's what Jack said." Aaron clamped his mouth shut after ejecting those words. He was still grieving privately for the man he had loved like a brother. "The healing machine, according to Jack, told him to send it a signal, if ever we want help from it. Jack said that means we need to be able to produce a radio signal. It's some sort of test. If we aren't advanced enough to produce wireless communications, then maybe we aren't worth helping. Anyway, it's a giant stroke of luck that you and your camp were able to make this radio."
Alton beamed with pride. The radio had gone from being a bit player to center stage. Swaddled in his sweater, riding safely in his backpack, the little cat's whisker design was straight from the trenches of World War I. He had scrounged a small, hand-powered generator, and had shown that he could produce a signal. Would it be the right frequency?
The three continued traversing, with Azreen bringing up the rear. They had been working their way downwards, deep down into Mammoth Cave, for a day and a half. They were almost there.
The night before had been exhilarating. Azreen and Alton had arrived at the Mammoth Cave refugee camp just before noon. The locals knew them as messengers from the other two camps, and welcomed them warmly. News was exchanged, letters handed back and forth. This was only the second time the camp had had visitors and the excitement had to be processed.
After letting the people enjoy the visitors, Aaron pulled the two into his private tent. He sat them at his table. The three discussed what they had learned about the Disc. It was during that exchange when Aaron realized that with Alton's radio, they could unlock the Healing Machine. Immediately they had all agreed to set off on the adventure the following morning.
"We're here!" Aaron had turned a corner, up ahead a ways. Azreen and Alton followed him in.
There it was. Seven feet tall, three feet wide, one foot deep. On the side facing them there was one large screen. Below that, all in a row, were nine dials.
Alton tapped at a dial. A mechanical-sounding voice came forth.
"Signal me, if you want help," said the machine.
"Now's your time, Alty," said Azreen.
Alton pulled off his pack, set it gently to the floor, bent over to open it, and removed the swaddled radio. He then knelt down in front of the machine and arranged the cat's whisker radio on the ground before it, and the hand-powered generator nearby. He connected the wires so that the generator might send current, and began winding the generator. A light on the radio board lit up, confirming the incoming current. Another one lit, and they knew the signal was being produced.
Alton tried a low frequency. No response from the machine. He tried another, lower than before. Same thing. Then a higher one. No response.
Three hours later, they gave up.
Alton had tried every way he could think of to change the frequency and other characteristics of the radio signal. Nothing had impressed the healing machine. It hadn't spoken since that first time, no matter how they tapped the screen or turned the dials.
Azreen, sitting at the wall near the entrance, was holding his head in his hands. Small tears began to drop from his nose to the ground. The other two heard the tears hit the floor. They waited respectfully.
Without lifting his head, Azreen began sharing his deepest vulnerability.
"My wife is pregnant and I am so afraid. We were grateful to learn about shielding to protect the Y chromosome in sperm. We were so, so glad to have a baby on the way. But now, now I know what has been happening in your camp, Aaron. Knowing how our baby will starve to death while we can do nothing .. I am terrified."
"Azreen, you can cry here with us, but outside you have to be a rock for your people. Do you hear me?" Alton was quiet, but some words hit hard, no matter the volume. Azreen froze, and then nodded. He pushed his palms up into his eyes to dry away his tears, and gave a small sheepish smile to the older man. "I hear you," he said. Then Azreen looked up at the machine, confusion in his eyes.
"Why won't you help us? Just help us. Please! Help us!" he shouted at it. The screen flickered on.
"Working. Glad to help. What is your question?" The machine responded as if it hadn't been tormenting them with its silence for the last three hours. The screen showed a test pattern, nothing more.
Alton, Aaron, and Azreen sprung to their feet, then stood statue-still. Aaron blinked slowly. Alton grinned for about three seconds, and then his face went blank. Azreen's eyes looked out as if up from the bottom of a nuclear fuel rod storage pool.
Aaron spoke to the machine. He explained the problem, that the babies are dying, and they don't know why.
"It is on the Disc." said the machine.
The three humans looked at each other.
The machine continued, "Had you understood the symbols, you would have seen that there was a symbol for the bacteria b. infantis. Your babies need that in order to thrive. Such failure shows that you do not deserve help."
The pragmatist in him soothed his rising anger. "Yeah, we kinda figured that out," said Aaron, "but we all lost our memories. How can we show that we deserve help?"
On the front of the machine, the screen suddenly glows briefly with a spiraling logo, and then shows the following information.
<div style="
width: 90%;
max-width: 500px;
margin: 20px 0;
padding: 18px;
border: 4px solid #444;
background-color: #dfe8f0;
color: #000;
font-family: Arial, sans-serif;
font-size: 16px;
font-weight: bold;
line-height: 1.5;
text-align: left;
border-radius: 8px;
">
If you have learned enough of the visual language called Glyphish, then you will be able to use that language to encode a completely different story.
[[Save them .. ??|GlyphReview]]</div>
<b>Need a Little Hope Here</b>
<em>set in 2158 AD, Mammoth Cave, Kentucky</em>
Our babies .. are dying. Nothing we do is helping them. Mothers are given all the food they can eat, there is no lack of breast milk, and yet .. death comes for each newborn. It is as if they are unable to fully digest the breast milk. They scream until they are exhausted. Then, they fade away. All we want is to feed our children and yet nothing we try is working.
Coming out of the caves, some two years ago, remains a blur. We are still talking amongst ourselves, to piece together a story that makes any sense. We’re more or less agreed, as a group of nearly two thousand men and women, that we have been in some kind of long-term stasis. Some of us speak of it as a “dream time”, during which our minds were half-asleep, and our bodies were .. somehow .. maintained.
None of us want to go back down there.
And we know we need technology. The comet impacts have changed Earth dramatically. We might be able to scrape by as subsistence farmers. No one in the camp has seen any animals of any size, so hunting isn't an option. Clean running water and hot showers requires technology that is years away for us. So, we should want to go back down into the caves, because we know there must have been technology of the highest kind.
We just can't. The only way forward is away from the caves.
Fortunately, there was one person in the group who lacked any kind of common sense. Jack Mozen was the youngest of us, only 27 years old. Like most of us, he had come through the long sleep with no obvious illness nor injury. Most of the two thousand folks in our group were over 30; none were over 50. A month or two had passed before we noticed that little fact, which led to a lot of upset. Many of us had apparently been expecting our parents to take the ride. We never did find out what happened such that no older folks came through the long sleep, but it doesn’t really take a whole lot of logic to figure out the possibilities. After all, the life we’ve been living, really isn’t the easiest. The older folks would have needed to be looked after as if they were babies. When times are hard, the babies are the only ones who get any babying.
Babies! We couldn’t even make children at the start. Once we came out of the caverns below, it was a whole year later before we realized that there were no pregnancies. That realization led to an incredible number of breakups, and new couples. But still no new babies.
We had all been studying our personal discs. We each had a copy, all the same. No one knows what the symbols mean. We know we're supposed to, so in between our work shifts, we study it. Jack tracked the work and kept the notes. We did have success in figuring out that one of the Disc segments could be a warning to protect the Y chromosome from radiation. So we did what any desparate people do.
The whole camp had a good laugh about the codpieces. But it was worth it. After several months of having the men wear the thin metal groin plates, we had our first pregnancy, and then three more. Then suddenly a dozen babies were on the way. There was, truly, much rejoicing for those first nine months.
And then within a month after the third birth, there was no singing at all, anywhere in the camp. Sharla’s baby died, Becka’s baby died, and now Kathy’s baby is wailing as if starving, even though the little one has three wet nurses, each desperate to supply him.
Jack stepped up for us all. He took his friend, Aaron, with him, to go back into the caves, to find any help for the wailing infants. He and Aaron were gone for seven days; they’ve said almost nothing about their exploration. Aaron’s wife says he isn’t the same man that he was before. Jack moved his things out of the camp and set up a shack near the caves. He said he aimed to keep others from ever going back inside.
The next year, Jack Mozen died after falling into a deep part of the creek, having got tangled up in some rushes and reeds. The camp mourned, and we added warnings so that even strong swimmers, as Jack was, would take more care. Shortly after the funeral, Aaron met with the Council to share what had happened, when he and Jack went into the caves.
“Aaron, thank you very much for offering to tell us about your adventure.” Manny gave a nod to Aaron, who was sitting across the circle. All seven members waited silently for Aaron to begin.
Aaron remained still, staring down at the ground, remembering his friend.
Manny asked, “Why did Jack decide that the rest of us should not know about this?”
Aaron pressed his lips together tightly and raised his head, now with closed eyes. “It wasn’t because of the cyclical cataclysms this planet experiences. It was because of the healing machine we found. The label on it seemed to indicate that it is a <b>Machine for More Time</b>, which we didn’t understand at first. There is no such thing as a ‘time machine’, as we all know. Eventually, we figured it out. It’s a machine that gives you more time, by healing your body.”
“For how long?” Andean rarely spoke, and when he did, it was usually to bring the group’s attention to the critical question.
Aaron allowed himself only a single chuckle before answering. “For as long as you can keep the machine working. For as long as you can use their other machines to produce those potions.”
Sando raised a finger, and proclaimed, “All in this circle and on this council, are charged with protecting our fellow humans.”
Aaron replied, “That’s why I’m bringing you into this. You, the Council, will continue as you always have. So will those other groups with whom we trade. Their Councils will keep their people in line, however they see fit. I, as Commissioner of Cooperation between your group and the other groups, will have the special responsibility of ensuring that only Council members receive this secret knowledge of long, healthy life.” Aaron looked to each of the others, and they each nodded.
Later that night, as Aaron lay on his cot, reflecting on his plan, he remembered that he had seen that "bitter end" symbol once before. He began to tremble, knowing he would have to make the descent, one more time.
[[Next Scene|ALCch3]]<<set $earnedCert to true>>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Certificate — Glyphish, Course One</title>
<style>
:root{
--paper:#e8d6b3; /* fired clay tablet */
--paper-hi:#f2e5c8; /* raised highlight */
--paper-lo:#d6bd91; /* impressed shadow */
--ink:#3b2c1a; /* umber ink */
--ink-soft:#79603d;
--accent:#1f6f6a; /* Knossos fresco blue-green */
--accent-2:#a83a26; /* cinnabar red ochre */
--rule:#a98a58;
--gold:#b98f56;
--serif-display:"Hoefler Text","Baskerville","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;
--serif-body:"Palatino Linotype",Palatino,"Book Antiqua","Iowan Old Style",Georgia,serif;
--sans-util:"Optima","Gill Sans","Gill Sans MT","Segoe UI",system-ui,sans-serif;
/* You supply the font; unresolved codepoints show as tidy squares. */
--phaistos:'PhaistosDisc',serif;
}
*{box-sizing:border-box}
html,body{margin:0}
body{
background:#6b6459;
background-image:radial-gradient(120% 120% at 50% 0%, #7c766a 0%, #5c564c 100%);
min-height:100vh;padding:34px 16px;
font-family:var(--serif-body);color:var(--ink);
-webkit-font-smoothing:antialiased;
}
.printbar{position:fixed;top:14px;right:16px;z-index:10}
.printbar button{
font-family:var(--sans-util);font-size:12px;letter-spacing:.14em;text-transform:uppercase;
background:#20201d;color:#e7d9bd;border:1px solid #000;border-radius:6px;padding:9px 14px;cursor:pointer}
.printbar button:hover{background:#2c2c27;color:#fff}
.sheet{
position:relative;width:100%;max-width:1040px;margin:0 auto;
padding:46px 54px 40px;
background:
radial-gradient(140% 100% at 50% -10%, var(--paper-hi) 0%, var(--paper) 46%, var(--paper-lo) 100%);
box-shadow:0 24px 60px rgba(0,0,0,.45), inset 0 0 90px rgba(120,86,40,.18);
color:var(--ink);overflow:hidden;
}
/* faint impressed clay grain */
.sheet::before{
content:"";position:absolute;inset:0;pointer-events:none;opacity:.5;mix-blend-mode:multiply;
background:
repeating-linear-gradient(58deg, rgba(120,90,50,.05) 0 2px, transparent 2px 5px),
repeating-linear-gradient(-32deg, rgba(120,90,50,.04) 0 2px, transparent 2px 6px);
}
/* huge ghost spiral watermark behind everything */
.sheet::after{
content:"";position:absolute;left:50%;top:56%;width:150%;aspect-ratio:1;translate:-50% -50%;
pointer-events:none;opacity:.06;
background:
radial-gradient(circle, transparent 0 6%, var(--ink) 6% 6.4%, transparent 6.4% 12%,
var(--ink) 12% 12.4%, transparent 12.4% 18%, var(--ink) 18% 18.4%, transparent 18.4% 24%,
var(--ink) 24% 24.4%, transparent 24.4% 30%, var(--ink) 30% 30.4%, transparent 30.4% 36%,
var(--ink) 36% 36.4%, transparent 36.4% 42%, var(--ink) 42% 42.4%, transparent 42.4%);
}
/* double-rule frame */
.frame{position:absolute;inset:20px;border:2px solid var(--rule);border-radius:5px;pointer-events:none}
.frame::before{content:"";position:absolute;inset:5px;border:1px solid var(--rule);border-radius:3px;opacity:.7}
.inner{position:relative;height:100%;display:flex;flex-direction:column;align-items:center;text-align:center;z-index:2}
.eyebrow{font-family:var(--sans-util);font-size:clamp(10px,1.15vw,13px);letter-spacing:.42em;
text-transform:uppercase;color:var(--accent);margin-top:6px}
.eyebrow .dot{color:var(--accent-2);margin:0 .5em}
h1{font-family:var(--serif-display);font-weight:600;color:var(--ink);
font-size:clamp(30px,5.4vw,56px);line-height:1;letter-spacing:.005em;margin:14px 0 6px}
.program{font-family:var(--serif-display);font-size:clamp(15px,2.1vw,23px);letter-spacing:.28em;
text-transform:uppercase;color:var(--accent-2);margin:0}
.program-sub{font-family:var(--serif-body);font-style:italic;color:var(--ink-soft);
font-size:clamp(13px,1.5vw,17px);margin:5px 0 0}
.rule-orn{display:flex;align-items:center;gap:12px;margin:16px 0 12px;color:var(--rule);width:min(420px,60%)}
.rule-orn::before,.rule-orn::after{content:"";height:1px;flex:1;background:currentColor}
.rule-orn .lozenge{width:8px;height:8px;background:var(--accent);rotate:45deg}
.body{font-family:var(--serif-body);font-size:clamp(13px,1.55vw,17px);line-height:1.65;
color:var(--ink);max-width:60ch;margin:0}
.body em{color:var(--accent);font-style:italic}
.name-line{margin:14px 0 4px;width:min(560px,82%)}
.name{font-family:var(--serif-display);font-size:clamp(22px,3.4vw,34px);color:var(--ink);
padding-bottom:6px;border-bottom:1.5px dotted var(--ink-soft);min-height:1.4em}
.name-cap{font-family:var(--sans-util);font-size:10px;letter-spacing:.28em;text-transform:uppercase;
color:var(--ink-soft);margin-top:5px}
/* glyph band — the tale in signs */
.band{margin:16px 0 4px;width:100%}
.band-title{font-family:var(--sans-util);font-size:11px;letter-spacing:.3em;text-transform:uppercase;
color:var(--accent);margin-bottom:12px}
.slots{display:flex;justify-content:center;gap:clamp(6px,1.4vw,16px);flex-wrap:wrap}
.slot{display:flex;flex-direction:column;align-items:center;gap:6px}
.slot .glyph{
width:clamp(42px,6vw,60px);aspect-ratio:1;display:grid;place-items:center;
font-family:var(--phaistos);font-size:clamp(24px,3.6vw,36px);color:var(--ink);
background:linear-gradient(160deg,var(--paper-hi),var(--paper-lo));
border:1px solid var(--rule);border-radius:4px;
box-shadow:inset 0 1px 0 rgba(255,255,255,.35), inset 0 -2px 4px rgba(90,64,32,.28);
}
.slot .cap{font-family:var(--sans-util);font-size:10px;letter-spacing:.02em;color:var(--ink-soft);
text-transform:lowercase}
.slot .cap b{color:var(--accent-2);font-family:var(--serif-body);margin-right:.35em}
/* footer: signatures + seal */
.foot{margin-top:auto;width:100%;display:grid;grid-template-columns:1fr auto 1fr;
align-items:end;gap:18px;padding-top:10px}
.sig{text-align:center;margin-bottom:12px;}
.sig .ln{border-top:1.4px solid var(--ink);padding-top:6px;min-width:150px;margin:0 auto}
.sig .role{font-family:var(--sans-util);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-soft)}
/* triple-loop spiral seal */
.seal{width:clamp(78px,11vw,104px);aspect-ratio:1;position:relative}
.seal svg{width:100%;height:100%;display:block}
.seal .seal-cap{position:absolute;left:50%;bottom:-6px;translate:-50% 100%;white-space:nowrap;
font-family:var(--sans-util);font-size:9px;letter-spacing:.24em;text-transform:uppercase;color:var(--accent)}
/* corner control-flow glyphs */
.corner{position:absolute;display:flex;flex-direction:column;align-items:center;gap:3px;z-index:3}
.corner .glyph{width:clamp(30px,4vw,40px);aspect-ratio:1;display:grid;place-items:center;
font-family:var(--phaistos);font-size:clamp(18px,2.6vw,24px);color:var(--accent);
border:1px solid var(--rule);border-radius:3px;background:rgba(255,255,255,.14)}
.corner .clabel{font-family:var(--sans-util);font-size:8.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft)}
.corner.tl{top:34px;left:40px}
.corner.tr{top:34px;right:40px}
.corner.bl{bottom:34px;left:40px}
.corner.br{bottom:34px;right:40px}
.colophon{font-family:var(--sans-util);font-size:9.5px;letter-spacing:.24em;text-transform:uppercase;
color:var(--ink-soft);margin-top:12px}
@media (max-width:720px){
.sheet{padding:40px 22px}
.corner{display:none}
.foot{grid-template-columns:1fr;gap:26px}
}
/*
@media print{
@page{size:11in 8.5in;margin:0}
body{background:#fff;padding:0}
.printbar{display:none}
.sheet{max-width:none;width:100%;min-height:100vh;margin:0;box-shadow:none;display:flex;flex-direction:column;justify-content:center}
*{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
*/
@media print {
@page { size: 11in 8.5in; margin: 8mm; } /* landscape Letter; A4 = 297mm 210mm */
#ui-bar, #ui-dialog, #ui-overlay { display: none !important; }
body * { visibility: hidden !important; }
.sheet, .sheet * { visibility: visible !important; }
html, body { background:#fff !important; height:auto !important; }
.sheet {
position:absolute !important; left:0 !important; top:0 !important;
width:100% !important;
height:auto !important;
min-height:0 !important; /* <- kills the 100vh that pushed it over */
margin:0 !important; box-shadow:none !important;
break-inside:avoid !important; page-break-inside:avoid !important;
-webkit-print-color-adjust:exact !important; print-color-adjust:exact !important;
}
}
</style>
</head>
<body>
<div class="printbar"><button onclick="window.print()">Print / Save PDF</button></div>
<div class="sheet">
<div class="frame"></div>
<span class="corner tl"><span class="glyph phaistos">𐇡</span><span class="clabel">enter</span></span>
<span class="corner tr"><span class="glyph phaistos">𐇳</span><span class="clabel">branch</span></span>
<span class="corner bl"><span class="glyph phaistos">𐇢</span><span class="clabel">choose</span></span>
<span class="corner br"><span class="glyph phaistos">𐇽</span><span class="clabel">jump</span></span>
<div class="inner">
<div class="eyebrow">Scriptorium of Linea Aleph <span class="dot">•</span> Knossos</div>
<h1>Certificate of Completion</h1>
<p class="program">Intro to Glyphish</p>
<p class="program-sub">the reading of the spiral</p>
<div class="rule-orn"><span class="lozenge"></span></div>
<p class="body">
Be it known that the bearer has learned these signs of the spiral.
</p>
<div class="name-line">
<div class="name" contenteditable="true" spellcheck="false"></div>
<div class="name-cap">name of the initiate</div>
</div>
<div class="band cert-band">
<div class="band-title">has lit this row of lamps</div>
<div class="slots">
<span class="slot">
<span class="glyph">
<img
class="peach-glyph"
src="glyphs/PDglyph47peach.svg"
alt="peach"
title="peach"
>
</span>
<span class="cap"><b>47</b>peach</span>
</span>
<span class="slot">
<span class="glyph phaistos" title="river">𐇼</span>
<span class="cap"><b>45</b>river</span>
</span>
<span class="slot">
<span class="glyph phaistos" title="millet cakes">𐇺</span>
<span class="cap"><b>43</b>millet cakes</span>
</span>
<span class="slot">
<span class="glyph phaistos" title="Momotarō">𐇐</span>
<span class="cap"><b>01</b>Momotarō</span>
</span>
<span class="slot">
<span class="glyph phaistos" title="Oni">𐇑</span>
<span class="cap"><b>02</b>Oni</span>
</span>
<span class="slot">
<span class="glyph phaistos" title="Old Man">𐇒</span>
<span class="cap"><b>03</b>Old Man</span>
</span>
<span class="slot">
<span class="glyph phaistos" title="Old Woman">𐇕</span>
<span class="cap"><b>06</b>Old Woman</span>
</span>
<span class="slot">
<span
class="glyph phaistos"
title="boat"
style="display:inline-block; transform:rotate(-90deg); transform-origin:center;"
>𐇨</span>
<span class="cap"><b>25</b>boat</span>
</span>
<span class="slot">
<span class="glyph phaistos" title="gold">𐇛</span>
<span class="cap"><b>12</b>gold</span>
</span>
<span class="slot">
<span class="glyph phaistos" title="pheasant flying">𐇤</span>
<span class="cap"><b>21</b>pheasant</span>
</span>
<span class="slot">
<span
class="glyph phaistos"
title="Momotarō battles Oni Chief"
>𐇓</span>
<span class="cap"><b>04</b>Momotarō battles Oni Chief</span>
</span>
</div>
</div>
<div class="foot">
<div class="sig">
<div class="name-on-line">Heraklion Museum</div>
<div class="ln"></div>
<div class="role">Keeper of the Spiral</div>
</div>
<div class="seal">
<svg viewBox="0 0 120 120" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
<defs>
<radialGradient id="sealClay" cx="40%" cy="36%" r="70%">
<stop offset="0%" stop-color="#e6cfa2"/>
<stop offset="60%" stop-color="#c39a5e"/>
<stop offset="100%" stop-color="#7c5c31"/>
</radialGradient>
</defs>
<circle cx="60" cy="60" r="56" fill="url(#sealClay)" stroke="#5f4527" stroke-width="2"/>
<circle cx="60" cy="60" r="56" fill="none" stroke="#00000022" stroke-width="6"/>
<!-- triple-loop spiral: one, two, three -->
<path fill="none" stroke="#1f6f6a" stroke-width="2.4" stroke-linecap="round" d="M60.0 66.0 L60.58 66.18 L61.2 66.3 L61.85 66.35 L62.51 66.34 L63.19 66.26 L63.87 66.1 L64.56 65.87 L65.23 65.57 L65.88 65.19 L66.51 64.73 L67.11 64.2 L67.65 63.6 L68.15 62.94 L68.59 62.21 L68.96 61.42 L69.26 60.58 L69.48 59.7 L69.61 58.79 L69.66 57.84 L69.61 56.88 L69.46 55.91 L69.21 54.94 L68.86 53.98 L68.41 53.04 L67.87 52.13 L67.22 51.27 L66.48 50.46 L65.66 49.71 L64.74 49.04 L63.75 48.44 L62.7 47.94 L61.57 47.54 L60.4 47.24 L59.19 47.06 L57.94 46.99 L56.67 47.04 L55.4 47.22 L54.13 47.52 L52.88 47.95 L51.65 48.51 L50.47 49.19 L49.35 50.0 L48.29 50.92 L47.32 51.95 L46.43 53.09 L45.65 54.32 L44.99 55.64 L44.44 57.03 L44.03 58.49 L43.75 60.0 L43.62 61.55 L43.64 63.12 L43.8 64.71 L44.13 66.28 L44.61 67.84 L45.24 69.37 L46.03 70.84 L46.96 72.25 L48.03 73.57 L49.24 74.81 L50.58 75.93 L52.03 76.93 L53.59 77.8 L55.25 78.52 L56.98 79.09 L58.77 79.49 L60.62 79.73 L62.5 79.78 L64.39 79.66 L66.29 79.35 L68.16 78.86 L70.0 78.19 L71.78 77.34 L73.49 76.31 L75.11 75.11 L76.63 73.76 L78.02 72.24 L79.27 70.59 L80.37 68.81 L81.3 66.92 L82.06 64.93 L82.63 62.86 L83.0 60.72 L83.17 58.54 L83.14 56.34 L82.89 54.12 L82.43 51.93 L81.75 49.76 L80.87 47.66 L79.78 45.63 L78.49 43.7 L77.02 41.88 L75.36 40.19 L73.54 38.66 L71.57 37.3 L69.45 36.12 L67.22 35.14 L64.89 34.37 L62.47 33.82 L60.0 33.5 L57.49 33.41 L54.96 33.57 L52.44 33.96 L49.94 34.6 L47.5 35.48 L45.14 36.59 L42.88 37.93 L40.74 39.49 L38.74 41.26 L36.9 43.22 L35.25 45.36 L33.8 47.67 L32.56 50.12 L31.55 52.7 L30.79 55.37 L30.28 58.13 L30.03 60.94 L30.05 63.78 L30.34 66.63 L30.9 69.46 L31.73 72.23 L32.83 74.94 L34.18 77.55 L35.79 80.03 L37.64 82.36 L39.71 84.53 L41.99 86.5 L44.47 88.25 L47.11 89.78 L49.91 91.05 L52.83 92.06 L55.86 92.8 L58.96 93.25 L62.1 93.4 L65.27 93.26 L68.43 92.82 L71.55 92.07 L74.6 91.03 L77.56 89.69 L80.4 88.07 L83.08 86.18 L85.59 84.03 L87.9 81.64 L89.99 79.03 L91.83 76.22 L93.41 73.23 L94.7 70.08 L95.7 66.81 L96.38 63.44 L96.75 60.0 L96.79 56.52 L96.5 53.04 L95.88 49.58 L94.93 46.17 L93.66 42.85 L92.07 39.65 L90.17 36.6 L87.99 33.72 L85.52 31.05 L82.81 28.61 L79.86 26.43 L76.69 24.52 L73.35 22.92 L69.85 21.62 L66.23 20.67 L62.51 20.05 L58.74 19.78 L54.93 19.88 L51.13 20.33 L47.38 21.15 L43.7 22.32 L40.12 23.84 L36.69 25.71 L33.44 27.89 L30.39 30.39 L27.58 33.18 L25.03 36.23 L22.77 39.53 L20.82 43.04 L19.2 46.74 L17.93 50.6 L17.03 54.57 L16.51 58.63 L16.37 62.75 L16.62 66.87 L17.26 70.97 L18.29 75.02 L19.7 78.96 L21.49 82.78 L23.63 86.42 L26.13 89.86 L28.95 93.07 L32.07 96.0 L35.48 98.64 L39.13 100.96 L43.0 102.94 L47.06 104.54 L51.27 105.76 L55.6 106.59 L60.0 107.0"/>
<circle cx="60" cy="60" r="2.2" fill="#a83a26"/>
<!-- five-dot start mark, tucked lower-left in a spiral gap -->
<g fill="#a83a26">
<circle cx="26" cy="46" r="1.4"/><circle cx="24.6" cy="49.4" r="1.4"/>
<circle cx="23.5" cy="52.9" r="1.4"/><circle cx="22.7" cy="56.5" r="1.4"/>
<circle cx="22.2" cy="60.1" r="1.4"/>
</g>
</svg>
<span class="seal-cap">sealed at the five dots</span>
</div>
<div class="sig">
<div class="name-on-line">Oliver Holloway</div>
<div class="ln"></div>
<div class="role">Master of the Spiral</div>
</div>
</div>
<div class="colophon">Issued upon completion of the Encoding • Anno MMCLVIII</div>
</div>
</div>
</body>
</html>
<p style="font-weight: bold; font-size: 24px;">
<style> p a { color: #000000 !important; } </style>
[[Epilog .. if you dare|ALCepilog]]
</p><b>End Zone</b>
The machine spoke, saying, "Congratulations on proving your worth. You have described that you need b. infantis. I will provide you with a flask of the bacteria."
The screen went black. Then, to the side of the machine, a panel slid open, presenting a foot-tall flask waiting in a small cubby. The flask was filled with a light gray fluid, and labeled as "b. infantis". Azreen hesitated for a moment, then reached in and grabbed the flask. Having been removed, the machine shut the panel door.
Suddenly the screen began to glow dimly, and slowly formed a picture. At the top was a circle, with a flame coming from its top. Below the circle was an arc like the waning moon. Below that, a basin of blue. From the bottom of the basin, many colored ribbons flowed, with the leftmost ribbon showing characters from some asian alphabet. The two black ribbons were notable for how they joined at the bottom to form a stomping foot.
Then the machine spoke once more. "Did you find the mandala? Did you learn that part of the story?" The screen went completely dark.
"Where is this mandala? Machine, will you help us again? We have other questions." Aaron waited. No response.
"Are there other ways to transmit the story of Jack and the Beanstalk?" asked Azreen. The other two men had no idea, but they nodded as if they liked the notion. Sure does make sense to send a warning in as many formats as possible, Azreen thought to himself. "Someone has to have already invented a more visual method, one that involves building from something simple and small, like bits of .. I don't know .. specks of s–"
"How long has humankind been telling itself about this story?" The other two became transfixed by the interruption, necks stiff as if some kind of line had been strung straight from ear to ear.
Alton answered Azreen with a question of his own.
"How long has this story been telling itself about humans?"
The three men spent another hour nervously attempting to rouse the healing machine. Nothing they did rendered any response from it. The urgency of the moment, the solution being literally in hand, they packed up their treasures and headed home.
They were going to be heroes. No need to muck things up by mentioning what the machine had said, nor how an angel had appeared and solved the puzzle for them. So they never did. They did what heroes do. They carried that heavy weight, without complaint.
<<link "Receive your certificate">>
<<goto "cert">>
<</link>>You can read all about Alton's World at
https://smokestop.substack.com/p/altons-field-notes<<nobr>>
/* Grab the current room data from our master database */
<<set _room to setup.roomDatabase[$currentRoomId]>>
<<set _total = _room.puzzles.length>>
<<set _next = _room.next>>
<<set _wish = _room.wish>>
<<set _techGlyphs to []>>
<<set _magicGlyphs to []>>
<<if $currentRoomId is "A28" and $playerRole is "power">>
<<goto "MomFateExplanation">>
<</if>>
/* show lives available */
lives available: $lives ||
<<if $lives <= 0>><<goto "UntimelyPassing">><</if>>
/* AUTO-CLICK SCRIPT: If the room is already solved, click the diagnostic link once the elements load */
<<if $solvedRooms[$currentRoomId] is true>>
<<done>>
<<run jQuery("#diagnostic-wrapper a").trigger("click")>>
<</done>>
<</if>>
/* start of each scene */
You are at Scene $currentRoomId <br>
_room.instructions
/* show glyphs and their respective answer options */
<div class="puzzle-wrapper">
<<for _i to 0; _i < _room.puzzles.length; _i++>>
<<set _puzzle to _room.puzzles[_i]>>
/*<<set _glyphName to _puzzle.glyph>>*/
<<set _rightKey = ($currentGame is "game2" ? "right2" : "right")>>
/* shuffle the answers so the right one is not always at top */
<<if $solvedRooms[$currentRoomId] is true>>
<<set _choices to [_puzzle[_rightKey]]>>
<<else>>
<<set _choices to [_puzzle[_rightKey]].concat(_puzzle.wrongs)>>
<<endif>>
<<run _choices.shuffle()>>
/* fill hash with items that are magic or tech depending on whether this is game 1 or 2 */
<<if $currentGame is "game1">>
/* receive glyph magiCode if not empty or if magicItem is true */
<<if _magiCode neq "" or _magicItem is true>>
/* amend it to have the brackets and such {magicItem: "gold"} */
/* insert into the _magicGlyphs hash */
/* <<set _magicGlyphs[_glyphId] = { magicItem: _magiCode }>> */
<</if>>
<<else>>
/* receive glyph techCode if not empty or if techItem is true*/
<<if _techCode neq "" or _tech is true>>
/* amend it to have the brackets and such {techItem: "magnetron"} */
/* insert into the _techGlyphs hash */
<<set _techGlyphs[_glyphId] = { techItem: _techCode }>>
<</if>>
<</if>>
<div class="puzzle-cell" id="`'cell-' + _i`">
/* Dynamic HTML image injector */
/* <<print '<img src="' + _puzzle.img + '" alt="Signal Feed" class="puzzle-img">'>> */
<<print '<div class="puzzle-glyph-container"><span class="phaistos">&#x' + _puzzle.img + ';</span></div>'>>
<div class="choices">
<<for _c range _choices>>
<label>
<<if $solvedRooms[$currentRoomId] is true>>
<<radiobutton `"$playerAnswers[" + _i + "]"` _c checked>> _c
<<else>>
<<radiobutton `"$playerAnswers[" + _i + "]"` _c >> _c
<<endif>>
</label>
<</for>>
</div>
</div>
<</for>>
</div>
<hr>
/* --- scene solver interaction section --- */
<<if _room.scenesolver>>
<div id="scenesolver-section" style="background: #1c1c24; padding: 15px; border: 1px solid #333; margin: 15px 0; border-radius: 4px;">
<h3>🗲 Final Authorization: Scene Interpretation</h3>
<<if $solvedRooms[$currentRoomId] is true>>
<<set _sceneChoices to [_room.scenesolver[_rightKey]]>>
<<else>>
<<set _sceneChoices to [_room.scenesolver[_rightKey]].concat(_room.scenesolver.wrongs)>>
<</if>>
<<run _sceneChoices.shuffle()>>
<div class="choices" style="display: flex; flex-direction: column; gap: 8px;">
<<for _sc range _sceneChoices>>
<label style="cursor: pointer; padding: 5px; background: #2a2a35; display: block; border-radius: 4px;">
<<if $solvedRooms[$currentRoomId] is true>>
<<radiobutton "$playerSceneAnswer" _sc checked>> _sc
<<else>>
<<radiobutton "$playerSceneAnswer" _sc>> _sc
<<endif>>
</label>
<</for>>
</div>
</div>
<</if>>
<div id="puzzle-results">
<div id="diagnostic-wrapper">
<<link "Run Diagnostic">>
/* 1. Score the picture cells */
<<set _score = 0>>
<<set _rightKey = ($currentGame is "game2" ? "right2" : "right")>>
<<for _i = 0; _i < _total; _i++>>
<<set _key = _i>>
<<set _correct = ($playerAnswers[_key] is _room.puzzles[_i][_rightKey])>>
<<if _correct>><<set _score++>> <</if>>
<<run jQuery("#cell-" + _i)
.toggleClass("cell-correct", _correct)
.toggleClass("cell-wrong", !_correct && $playerAnswers[_key] isnot undefined)>>
<</for>>
/* 2. Score the overarching Scene Solver text answer */
<<set _sceneCorrect = true>>
<<if _room.scenesolver>>
/* Fallback logic to protect from crashing if field doesn't exist for a side */
<<set _targetAnswer = _room.scenesolver[_rightKey] || _room.scenesolver.right>>
<<if $playerSceneAnswer is _targetAnswer>>
<<set _sceneCorrect = true>>
<<run jQuery("#scenesolver-section").css("border-color", "#336633").css("background", "#122212")>>
<<else>>
<<set _sceneCorrect = false>>
<<run jQuery("#scenesolver-section").css("border-color", "#662222").css("background", "#221212")>>
<<endif>>
<</if>>
<<replace "#score-display">>Correct decodings: <<= _score>> / <<= _total>><</replace>>
/* 3. BOTH gates must be passed to win */
<<if _score is _total and _sceneCorrect is true>>
<<set $solvedRooms[$currentRoomId] = true>>
/* process magic Item rewards */
<<set _itemDiscoveryHtml to "">>
<<if _room.magicItems and _room.magicItems.length > 0>>
<<set _headerLabel = ($currentGame is "game2" ? "Tech Relics Extracted:" : "Magic Items Extracted:")>>
<<set _itemDiscoveryHtml += "<p><b>" + _headerLabel + "</b></p><ul>">>
<<for _m range _room.magicItems>>
<<set _itemDiscoveryHtml += "<li>Found: <b>" + _m.magicItem + "</b></li>">>
<<if $currentGame is "game1">>
<<set $magicItemsGathered[_m.magicItem] to ($magicItemsGathered[_m.magicItem] || 0) + 1>>
<</if>>
<</for>>
<<set _itemDiscoveryHtml += "</ul>">>
<<else>>
<<set _itemDiscoveryHtml += "<p style='color: #aaa;'>No active energy signatures found in this sector.</p>">>
<</if>>
/* process tech Item rewards */
<<set _itemDiscoveryHtml to "">>
<<set _hasTech to false>>
<<if $currentGame is "game2">>
<<for _i = 0; _i < _room.puzzles.length; _i++>>
<<set _puzzle to _room.puzzles[_i]>>
/* Reverse search setup.glyphs to find which glyph matches this puzzle image */
<<set _glyphData to null>>
<<set _glyphKeys to Object.keys(setup.glyphs)>>
<<for _k = 0; _k < _glyphKeys.length; _k++>>
<<set _currentGlyph = setup.glyphs[_glyphKeys[_k]]>>
<<if _currentGlyph.img is _puzzle.img>>
<<set _glyphData to _currentGlyph>>
<<break>>
<</if>>
<</for>>
/* If we found the glyph data, check if it's a valid tech item reward */
<<if _glyphData and (_glyphData.tech is true or _glyphData.techcode neq "")>>
<<if _hasTech is false>>
<<set _itemDiscoveryHtml += "<p><b>Tech Relics Extracted:</b></p><ul>">>
<<set _hasTech to true>>
<</if>>
<<set _itemDiscoveryHtml += "<li>Found: <b>" + _glyphData.techcode + "</b></li>">>
<<set $techItemsGathered[_glyphData.techcode] to ($techItemsGathered[_glyphData.techcode] || 0) + 1>>
<</if>>
<</for>>
<</if>>
<<if _hasTech is true>>
<<set _itemDiscoveryHtml += "</ul>">>
<<else>>
<<set _itemDiscoveryHtml += "<p style='color: #aaa;'>No active tech energy signatures found in this sector.</p>">>
<</if>>
/* Master Scavenger Victory Condition Check based on target game array */
<<set _hasWon to true>>
<<set _targetInventory = ($currentGame is "game2" ? $techItemsGathered : $magicItemsGathered)>>
<<set _itemKeys to Object.keys(_targetInventory)>>
<<for _k range _itemKeys>>
<<if _targetInventory[_k] is 0>>
<<set _hasWon to false>>
<</if>>
<</for>>
<<replace "#exit-link">>
<div class="unlocked-box" style="background: #1a331a; padding: 15px; border: 1px solid #336633; border-radius: 4px; margin-top: 15px;">
<span class="unlocked">System Unlocked</span><br>
<<print _itemDiscoveryHtml>>
/* Determine destination path based on win status */
<<if _hasWon is true>>
<div style="margin-top: 15px; font-size: 1.1em; border-top: 2px dashed #55ff55; padding-top: 10px;">
<b>COLLECTION COMPLETE!</b> You have gathered every unique asset across the database grid!
<br><br>
<<link "▶ CLAIM ULTIMATE VICTORY">>
<<goto "Victory">>
<</link>>
</div>
<<else>>
/* NAVIGATION BLOCK: Normal Exit Path */
<div style="display: flex; gap: 20px; margin-top: 15px;">
<div>
<<set _linkText = "→ Proceed to " + _next>>
<<if _wish is true>>
<<set _linkText = _linkText + " and that will cost you one life">>
<</if>>
<<link _linkText>>
<<set $currentRoomId = _next>>
<<if _wish is true and $solvedRooms[$currentRoomId] isnot true>>
<<set $lives = $lives - 1>>
<</if>>
<<set $playerAnswers to []>>
<<set $playerSceneAnswer to undefined>>
<<if _next is "Victory">>
<<goto "Victory">>
<<elseif _room.next is "A19">>
<<goto "ALCch1">>
<<else>>
<<goto "PuzzleZone">>
<</if>>
<</link>>
</div>
/* Dynamic shortcut option appears if a jump target is present */
<<if _room.jump isnot "" and _room.jump isnot undefined>>
<div>
<<link "Jump to Different Room">>
<<set $currentRoomId = _room.jump>>
<<set $playerAnswers to []>>
<<set $playerSceneAnswer to undefined>>
<<if _room.jump is "Victory">>
<<goto "Victory">>
<<else>>
<<goto "PuzzleZone">>
<</if>>
<</link>>
</div>
<</if>>
</div>
/* If there are specific jump notes context clues, show them under the paths */
<<if _room.jumpNotes isnot "" and _room.jumpNotes isnot undefined>>
<div style="margin-top: 10px; font-size: 0.9em; color: #8ab4f8; font-style: italic;">
<b>Anomalous Data Stream Note:</b> _room.jumpNotes
</div>
<</if>>
<</if>>
</div>
<</replace>>
<<else>>
<<replace "#exit-link">>
<span class="locked">
Terminal Locked:
<<if _score isnot _total>>
<<= _total - _score>> picture parameter(s) incorrect.
<<else>>
Scene Integration configuration rejected.
<<endif>>
</span>
<</replace>>
<<endif>>
<</link>>
</div>
<p id="score-display">Correct decodings: — / <<= _total>></p>
<p id="exit-link"></p>
</div>
[[InventoryStatus]] <br>
[[ArchiveLogs]]
<</nobr>>Thank you for decoding the Disc.
<<script>>
/* strip the sidebar/UI so it truly feels closed */
jQuery("#ui-bar").remove();
<</script>><<nobr>>
/* 1. Initialize Game 3 State Frameworks */
<<if $currentMomoSceneId is undefined>>
<<set $currentMomoSceneId to "MomoS01">>
<<set $momoPlayerAnswers to {}>>
<<set $momoSolvedScenes to {}>>
<</if>>
<<set _scene to setup.sceneDatabase[$currentMomoSceneId]>>
<<set _requiredGlyphs to _scene.sceneglyphs>>
/* test */
/* <<= _requiredGlyphs>> */
/* <<= JSON.stringify(_requiredGlyphs)>> */
<<if $momoPlayerAnswers[$currentMomoSceneId] is undefined>>
<<set $momoPlayerAnswers[$currentMomoSceneId] to []>>
<</if>>
<</nobr>>\
<style>
/* --- Mapping slot row --- */
#momo-slot-row {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin: 15px 0;
}
.momo-slot {
position: relative;
width: 72px;
height: 72px;
display: flex;
justify-content: center;
align-items: center;
border: 2px dashed #555;
border-radius: 8px;
background: #181818;
cursor: pointer;
transition: border-color .15s, box-shadow .15s, background .15s;
}
.momo-slot .momo-slot-num {
position: absolute;
top: 2px;
left: 6px;
font-family: sans-serif;
font-size: 11px;
color: #8ab4f8;
}
.momo-slot .momo-slot-glyph {
font-family: "PhaistosDisc", sans-serif;
transform: scaleX(-1);
font-size: 40px;
color: #ffdca8;
line-height: 1;
}
.momo-slot.momo-filled {
border-style: solid;
border-color: #777;
}
.momo-slot.momo-active {
border: 2px solid #ff9f43;
box-shadow: 0 0 8px rgba(255, 159, 67, 0.7);
background: #241a0e;
}
/* --- Glyph selection grid --- */
#momo-glyph-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(64px, 1fr));
gap: 8px;
margin-top: 15px;
}
.momo-glyph-cell {
font-family: 'PhaistosDisc'; line-height: 1;
transform: scaleX(-1);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
border: 1px solid #444;
border-radius: 8px;
background: #1c1c1c;
padding: 6px 2px 3px 2px;
cursor: pointer;
transition: background .15s, border-color .15s;
}
.momo-glyph-cell:hover {
background: #3a2f1b;
border-color: #ff9f43;
}
.momo-glyph-cell .momo-cell-glyph {
font-family: "PhaistosDisc";
font-size: 34px;
color: #eee;
line-height: 1;
}
.momo-glyph-cell .momo-cell-num {
font-family: "PhaistosDisc"; /*font-family: sans-serif;*/
font-size: 10px;
color: #888;
margin-top: 3px;
}
</style>\
## 🍑 Game 3 Matrix: The Momotaro Ideogram Calibration
Analyze the narrative fragments below. To bypass this sector's encryption barrier, you must map the correct visual ideogram signatures to the thematic events of the scene.
🎨 **Current Game Mode:** <span style="color: #ff9f43; font-weight: bold;">GAME 3 (MOMOTARO GLYPH GRID MODE)</span>
❤️ **Lives Available:** $lives
---
### Scene Database Node: $currentMomoSceneId
<div style="background: #111; border: 1px solid #333; padding: 20px; border-radius: 4px; margin-bottom: 20px; font-size: 1.1em; line-height: 1.5em; border-left: 4px solid #ff9f43;">
''"''<<= _scene.text>>''"''
</div>
### 🧩 Core Ideogram Mapping Slots
<<nobr>>
/* 2. Build the master glyph registry: name→character lookup plus the grid cell HTML */
<<set _nameToChar to {}>>
<<set _gridHtml to '<div id="momo-glyph-grid">'>>
/* creates set for the Momo grid .. but how to get the peach in here? */
<<set _show to ["peach", "river", "millet cakes", "Momotarō", "Oni", "Old Man", "Old Woman", "boat", "gold", "pheasant flying", "Momotarō battles Oni Chief"]>>
<<for _gIdx = 0; _gIdx < 47; _gIdx++>>
<<set _padId to String(_gIdx + 1).padStart(2, '0')>>
<<set _glyphKey to "PDglyph" + _padId>>
<<set _mName to setup.glyphs[_glyphKey].MomoName>>
<<if _gIdx is 46>>
<<set _glyphKey to "PDglyph47peach">>
<<set _mName to "peach">>
<</if>>
/* 66000 dec corresponds to hex 101D0 */
<<set _hexChar to "&#x" + (66000 + _gIdx).toString(16) + ";">>
/* */
<<if _glyphKey is "PDglyph25">>
<<set _hexChar to
'<span class="rotated-pd-glyph">' +
_hexChar +
'</span>'
>>
<</if>>
<<set _nameToChar[_mName] to _hexChar>>
<<if _gIdx is 46>>
<<set _hexChar to '<img class="peach-glyph" src="glyphs/PDglyph47peach.svg" alt="Peach">'>>
<<set _nameToChar[_mName] to _hexChar>>
<</if>>
/* if not in desired set, it is ignored */
<<if not _show.includes(_mName)>><<continue>><</if>>
<<set _gridHtml += '<div class="momo-glyph-cell" data-name="' + _mName + '" title="' + _mName + '" onclick="window.momoPick(this)"><span class="momo-cell-glyph">' + _hexChar + '</span><span class="momo-cell-num"></span></div>'>>
<</for>>
<<set _gridHtml += '</div>'>>
/* 3. Build the slot row */
<<set _answers to $momoPlayerAnswers[$currentMomoSceneId]>>
<<set _slotsHtml to '<div id="momo-slot-row">'>>
<<if $momoSolvedScenes[$currentMomoSceneId] is true>>
/* Solved: show the verified sequence, locked in green */
<<for _idx = 0; _idx < _requiredGlyphs.length; _idx++>>
<<set _char to _nameToChar[_requiredGlyphs[_idx]] || "?">>
<<set _slotsHtml += '<div class="momo-slot momo-filled" style="border-color: #55ff55; background: rgba(85, 255, 85, 0.06); cursor: default;"><span class="momo-slot-num">' + (_idx + 1) + '</span><span class="momo-slot-glyph">' + _char + '</span></div>'>>
<</for>>
<<set _slotsHtml += '</div>'>>
<<print _slotsHtml>>
<p><span style="color: #55ff55; font-weight: bold;">✔️ Verified meaning sequence:</span> <span style="color: #aaa;"><<= _requiredGlyphs.join(" → ")>></span></p>
<<else>>
/* Unsolved: slots are clickable targets; previously placed answers persist across re-renders */
<<for _idx = 0; _idx < _requiredGlyphs.length; _idx++>>
<<set _ans to _answers[_idx]>>
<<set _char to _ans ? _nameToChar[_ans] : "">>
<<set _filledClass to _ans ? " momo-filled" : "">>
<<set _slotsHtml += '<div class="momo-slot' + _filledClass + '" id="momo-slot-' + _idx + '" onclick="window.momoSetActive(' + _idx + ')"><span class="momo-slot-num">' + (_idx + 1) + '</span><span class="momo-slot-glyph">' + _char + '</span></div>'>>
<</for>>
<<set _slotsHtml += '</div>'>>
<<print _slotsHtml>>
<p style="color: #aaa; font-size: 0.9em; font-style: italic;">The highlighted slot is awaiting an ideogram. Click a glyph in the registry grid below to assign it; click any slot to re-target it. The same glyph may be assigned to multiple slots.</p>
/* 4. The glyph selection grid */
<<print _gridHtml>>
/* 5. Client-side slot/grid interaction handlers */
<<set window.momoSlotTotal to _requiredGlyphs.length>>
<<script>>
window.momoSetActive = function (idx) {
window.momoActiveIdx = idx;
jQuery('.momo-slot').removeClass('momo-active');
if (idx != null && idx >= 0) {
jQuery('#momo-slot-' + idx).addClass('momo-active');
}
};
window.momoNextEmpty = function (total) {
var sv = SugarCube.State.variables;
var ans = sv.momoPlayerAnswers[sv.currentMomoSceneId] || [];
for (var i = 0; i < total; i++) {
if (ans[i] === undefined || ans[i] === null || ans[i] === '') {
return i;
}
}
return -1;
};
window.momoPick = function (cell) {
var idx = window.momoActiveIdx;
if (idx == null || idx < 0) { return; }
var sv = SugarCube.State.variables;
var sceneId = sv.currentMomoSceneId;
if (sv.momoPlayerAnswers[sceneId] === undefined) {
sv.momoPlayerAnswers[sceneId] = [];
}
var name = cell.getAttribute('data-name');
var ch = jQuery(cell).find('.momo-cell-glyph').html(); /*text();*/
sv.momoPlayerAnswers[sceneId][idx] = name;
var $slot = jQuery('#momo-slot-' + idx);
$slot.find('.momo-slot-glyph').html(ch); /*text(ch);*/
$slot.addClass('momo-filled').css({ 'background': '', 'border-color': '' });
window.momoSetActive(window.momoNextEmpty(window.momoSlotTotal));
};
<</script>>
/* Highlight the first empty slot once the passage has rendered */
<<done>>
<<script>>
var firstEmpty = window.momoNextEmpty(window.momoSlotTotal);
if (firstEmpty != null && firstEmpty >= 0) {
jQuery('#momo-slot-' + firstEmpty).trigger('click');
}
/*window.momoSetActive(window.momoNextEmpty(window.momoSlotTotal));*/
<</script>>
<</done>>
<</if>>
<</nobr>>
<hr>
<div id="momo-diagnostic-results">
<<nobr>>
<<if $momoSolvedScenes[$currentMomoSceneId] isnot true>>
<<link "⬡ Run Ideogram Alignment Diagnostic">>
<<set _sceneAnswers to $momoPlayerAnswers[$currentMomoSceneId] || []>>
/* Gate: every slot must be filled before the diagnostic will run */
<<set _unfilled to 0>>
<<for _idx = 0; _idx < _requiredGlyphs.length; _idx++>>
<<if _sceneAnswers[_idx] is undefined or _sceneAnswers[_idx] is "">>
<<set _unfilled++>>
<</if>>
<</for>>
<<if _unfilled gt 0>>
<<replace "#momo-action-portal">>
<span style="color: #ff9f43; font-weight: bold;">
⚠️ Diagnostic aborted: <<= _unfilled>> mapping slot(s) remain empty. Assign an ideogram to every slot before running the alignment scan.
</span>
<</replace>>
<<else>>
<<set _errorsFound to 0>>
/* Evaluate each slot against the master design requirements */
<<for _idx = 0; _idx < _requiredGlyphs.length; _idx++>>
<<set _playerChoice to _sceneAnswers[_idx]>>
<<set _targetChoice to _requiredGlyphs[_idx]>>
<<if _playerChoice is _targetChoice>>
<<run jQuery("#momo-slot-" + _idx).css({"background": "rgba(85, 255, 85, 0.08)", "border-color": "#55ff55"})>>
<<else>>
<<set _errorsFound++>>
<<run jQuery("#momo-slot-" + _idx).css({"background": "rgba(255, 85, 85, 0.08)", "border-color": "#ff5555"})>>
<</if>>
<</for>>
/* Process Validation Consequences */
<<if _errorsFound is 0>>
<<set $momoSolvedScenes[$currentMomoSceneId] to true>>
<<replace "#momo-action-portal">>
<div style="background: #1a331a; padding: 15px; border: 1px solid #336633; border-radius: 4px; margin-top: 15px;">
<span style="color: #55ff55; font-weight: bold;">■ Calibration Complete: Universal Meanings Verified.</span>
<p style="color: #aaa; font-style: italic;">The cross-cultural ideological thesis holds clean across civilizationally-long timespans!</p>
<div style="margin-top: 15px;">
<<set _sceneKeys to Object.keys(setup.sceneDatabase)>>
<<set _currIndex to _sceneKeys.indexOf($currentMomoSceneId)>>
<<if _currIndex lt _sceneKeys.length - 1>>
<<set _nextScene to _sceneKeys[_currIndex + 1]>>
<<link "→ Proceed to Next Narrative Scene Sector">>
<<set $currentMomoSceneId to _nextScene>>
<<goto "Game3Momotaro">>
<</link>>
<<else>>
<p style="color: #ff9f43; font-weight: bold;">🎉 All scenes encoded into the Phaistos Disc resumption layer!</p>
<<link "🏆 Receive your certificate">>
<<goto "cert">>
<</link>>
<br><br>
<<link "◀ Return to Terminal Core">>
<<goto "PuzzleZone">>
<</link>>
<</if>>
</div>
</div>
<</replace>>
<<else>>
/* Deduct life parameter on validation rejection */
<<set $lives to $lives - 1>>
<<if $lives lte 0>>
<<goto "UntimelyPassing">>
<<else>>
<<replace "#momo-action-portal">>
<span style="color: #ff5555; font-weight: bold;">
❌ Alignment Failed: <<= _errorsFound>> database mapping parameters mismatched. Deficient static charge feedback encountered—1 Life lost!
</span>
<br>
<<link "🔄 Re-evaluate Calibration Array">>
<<goto "Game3Momotaro">>
<</link>>
<</replace>>
<</if>>
<</if>>
<</if>>
<</link>>
<</if>>
<</nobr>>
<p id="momo-action-portal"></p>
</div>
---
### 🗂️ Global Resumption Array Controls
<<nobr>>
<div style="display: flex; gap: 10px; font-size: 0.9em; flex-wrap: wrap;">
<<set _mKeys to Object.keys(setup.sceneDatabase)>>
<<for _k range _mKeys>>
<<capture _k>>
<<set _label = _k.replace("MomoS", "S")>>
<<if $currentMomoSceneId is _k>>
<span style="background: #ff9f43; color: #000; padding: 2px 6px; border-radius: 3px; font-weight: bold;"><<= _label>></span>
<<elseif $momoSolvedScenes[_k] is true>>
<<link `"<span style='color: #55ff55;'>✔️ " + _label + "</span>"`>>
<<set $currentMomoSceneId to _k>>
<<goto "Game3Momotaro">>
<</link>>
<<else>>
<<link _label>>
<<set $currentMomoSceneId to _k>>
<<goto "Game3Momotaro">>
<</link>>
<</if>>
|
<</capture>>
<</for>>
</div>
<</nobr>>
<div class="glyph-review">
<h2>Glyph Review</h2>
<p class="review-subtitle">These eleven glyphs tell the story of Momotarō.</p>
<div class="glyph-list">
<div class="glyph-row">
<span class="glyph">
<img class="peach-glyph"
src="glyphs/PDglyph47peach.svg"
alt="peach"
>
</span>
<span class="info">
<span class="name">Peach</span>
</span>
</div>
<div class="glyph-row">
<span class="glyph phaistos">𐇼</span>
<span class="info">
<span class="name">River</span>
</span>
</div>
<div class="glyph-row">
<span class="glyph phaistos">𐇺</span>
<span class="info">
<span class="name">Millet Cakes</span>
</span>
</div>
<div class="glyph-row">
<span class="glyph phaistos">𐇐</span>
<span class="info">
<span class="name">Momotarō</span>
</span>
</div>
<div class="glyph-row">
<span class="glyph phaistos">𐇑</span>
<span class="info">
<span class="name">Oni aka Ogre aka Devil</span>
</span>
</div>
<div class="glyph-row">
<span class="glyph phaistos">𐇒</span>
<span class="info">
<span class="name">Elderly Parent</span>
</span>
</div>
<div class="glyph-row">
<span class="glyph phaistos">𐇕</span>
<span class="info">
<span class="name">Protective Mother Figure</span>
</span>
</div>
<div class="glyph-row">
<span class="glyph phaistos"
style="transform:rotate(-90deg); display:inline-block;">
𐇨
</span>
<span class="info">
<span class="name"> Boat</span>
</span>
</div>
<div class="glyph-row">
<span class="glyph phaistos">𐇛</span>
<span class="info">
<span class="name">Gold</span>
</span>
</div>
<div class="glyph-row">
<span class="glyph phaistos">𐇤</span>
<span class="info">
<span class="name">Pheasant Flying</span>
</span>
</div>
<div class="glyph-row">
<span class="glyph phaistos">𐇓</span>
<span class="info">
<span class="name">Momotarō Battles Oni Chief</span>
</span>
</div>
</div>
<p class="review-footer">
Memorize these eleven glyphs before continuing.
</p>
</div>
[[Continue →|Game3Momotaro]]To your left, the lone window's glass pane suddenly glows up with a spiraling logo that you can't quite identify, and then the monitor shows the following information.
<div style="
width: 90%;
max-width: 500px;
margin: 20px 0;
padding: 18px;
border: 4px solid #444;
background-color: #dfe8f0;
color: #000;
font-family: Arial, sans-serif;
font-size: 16px;
font-weight: bold;
line-height: 1.5;
text-align: left;
border-radius: 8px;
">
Learn the visual language called Glyphish.
Evaluate the situation.
Save the team .. or not.
<p>
In each following room, you match each picture to its most fitting option. Having matched all the pictures in that room, you choose the interpretation that matches the room. With every solved room, you have learned more of our visual language, glyphish.
For hints during the game, think about the characters and events from that old children's tale, the one called Jack and the Beanstalk. If you know that ancient tale, then you can use it for hints to solve the following puzzle rooms.
This is step 1 of 4.
Click link below.
Time is short. </p></div><h1>[[Learn Glyphish|PuzzleZone]] </h1>