JavaScript must be enabled to play.
Browser lacks capabilities required to play.
Upgrade or switch to another browser.
Loading…
You are in your room. It's as messy as ever. You can see your unmade bed, the [[table->mesa]] where you study, and a [[window->ventana]].
On your study table, apart from school stuff of little interest, is your trusty [[48K ZX Spectrum->spectrum]], flanked by a small TV set and a tape player. You can also see a [[bottle of water->botella]], a [[magazine->revista]], and a [[notebook->cuaderno]] you've been working on lately. [[Back->Start]]
You live on the eighth floor, so from your window there's quite a view of your neighborhood. You can see many identical blocks of exposed brick, green awnings, and television antennas. In all the buldings, live more families like yours; people that work hard for not that much money. The day is bleak. Dark clouds cover the sky and the streets are empty. <<return "Back">>
The magazine is issue 192 of MicroHobby (October 1989), with the Batman symbol on the cover. The reason you've bought it is because of the World of Adventure section. In this one, Andrés Samudio explains how to program a text adventure driven by a node tree. <<return "Back">>
The notebook contains a rather crazy project you've been working on for some time. During some detention time in your high school library, you discovered a chapter in a history book that described certain and very specific branches of the occult, focused on numbers (gematria, Kabbalah and numerology). You asked your history teacher for some books to dive into, and then you designed a calculation program based on the theories of those authors (Trithemius, Agrippa, Aleister Crowley and Ramon Lull, amongst others). The program is ready to run on your computer. Althought a home microcomputer does not look that powerful, the calculation capability surpasses the human one by many orders of magnitude. <<if $solved>>[[Destroy notebook->endgame]] <</if>>\ <<return "Back">> <<set $listado to true>>\
The computer greets you, obligingly, with its welcome message: <div class="zx">© 1982 Sinclair Research Ltd</div> <<if $listado>>\ [[Type listing->Teclear listado]] <</if>>\ [[Back->mesa]]
You sit in front of the computer and start typing the program from the notebook. <div class="zx">\ <<type 50ms>>10 LET a=5 20 LET b=20 30 LET c=2 40 LET d=23<</type>>\ </div> <<timed 5s>>You keep going on and on, losing track of time. <<next>> <div class="zx"><<type 100ms>>9260 RETURN SQR z RUN<</type>>\ </div>\ <<next>> Numbers start appearing on the screen, and what you see fills you with [[unspeakable dread->exec]]. <</timed>>
On the screen, thousands of numbers keep scrolling up and the dimensions, the way the digits' frequencies are distributed, fills you with abstract terror. What is coming out is an immense, irrational number, which didn't exist prior to your code giving it shape. You try to reset the computer, but the veil of reality seems to be tearing and you lose consciousness. [[You disappear->Hall][$full to false;$password to null;$solved to false;$typed to "";$landing to true]]. <div style="line-height:1" class="zx" id="numbercontainer"> </div> <<set _numbers to []>> <<silently>> <<script>> setup.chars = "0123456789"; setup.getDigit = function(){ return setup.chars.charAt(Math.floor(Math.random()*this.chars.length)); }; setup.newLine = function(){ var ret = ""; for (var i=0;i<32;i++){ ret+=setup.getDigit(); } return ret; }; setup.mutateLine = function(s){ var src = setup.getDigit(); var dst = setup.getDigit(); return s.replace(src, dst); }; <</script>> <<repeat 40ms >> <<run _numbers.push(setup.newLine()) >> <<set _numbers = _numbers.slice(-22) >> <<for _i to 0; _i lt _numbers.length; _i++>> <<if (_numbers.length is 22) and Math.random()<1 >> <<set _numbers[_i] to setup.mutateLine(_numbers[_i]) >> <</if>> <</for>> <<replace "#numbercontainer">><<print _numbers.join("\n") >><</replace>> <</repeat>> <</silently>>
You find yourself in a circular room with three openings. An enormous wooden door, a metallic sliding bulkhead and a glass door, through which you are surprised to get a misty view of your own room. <<if visited() is 1>> In front of you, a hooded figure materializes. You cannot see their face, but it moves like someone a thousand years old. "Whatever you did caused a disruption of the temporal current. Now, the reality configuration is unstable. If it's not restored it could collapse. We are the last of the guardians but, sadly, we cannot help you. Our strength was exhausted a long time ago.", they say. Before you can react, the figure crumbles into dust. <</if>>\ <<if $landing>> You realize you are carrying the bottle you had in your room. You must have grabbed it before losing your consciousness. <<set $landing to false>>\ <</if>> [[Go through wooden door->past]] [[Go through metal bulkhead->future]] [[Go through glass door->present]]
You have entered what seems to be an ancient library. Shelves full of gigantic dusty [[tomes->volúmenes]] rise above you. The dim light from torches does not allow you to glimpse how high they reach. In the middle of the space there's a large [[stone altar->mesa de piedra]] and a [[desk->escritorio]]. [[Get out->Hall]]
You have arrived to what seems to be some type of control room of ellipsoidal shape. Light seems to irradiate from all the white surfaces, without any obvious source. In the middle of the room there are some stylized [[chairs->sillas]], and on the curved walls there are large [[screens->pantallas]]. [[Get out->Hall]]
<<if not $solved>>The door does not move, you are not finished here yet. <<return "Back">> <<else>>\ When you touch the glass door, it vanishes. You take a step into your room. When you look back, the doorway has disappeared. Everything seems to be [[just like you left it->Start]]. <<set $eventNum to ($eventNum+1) % $events.length>>\ <<set $event to $events[$eventNum] >> <</if>>
The tomes seem to be all different, most of them of cyclopean size. You can recognize the type of writing on some of the spines, but on others, the writing does not resemble anything you have seen before. It looks like no human language. <<return "Back">>
A rectangular altar made of solid stone. Two huge gargoyles on its ends seem to stare at the center, where you can see what seems to be a [[clepsydra->clepsidra]]. <<if $full>>After pouring water into the clepsydra, a [[void->hueco]] has opened in the middle of the stone. <</if>>\ [[Back->past]]
An instrument to measure time by means of the flow of a liquid. The upper part is in the shape of a funnel and, below, another receptacle contains the liquid representing the elapsed time. <<if not $full>>It's empty. [[Pour water into clepsydra->llenar]] <<else>>Water is now slowly dripping. <</if>>\ [[Back->mesa de piedra]]
You pour some water into the clepsydra. It starts to drip down from the narrow lower end of the funnel. Suddenly, the [[stone altar->mesa de piedra]] starts vibrating. With a low rumble that resounds throughout the space, a [[void->hueco]] opens on its upper surface. <<set $full to true>>\
A void has opened on the stone surface. Inside, you can see several stacks of inscribed wooden tablets, and another stack of blank tablets. <<if not $password>>\ In the middle of the void there is a slot, into which it seems tablets can be [[inserted->insertar]]. <<else>>\ The slot where you inserted the tablets is now closed. <</if>> <<return "Back">>
A large wooden desk. On it sits an enormous piece of [[parchment->pergamino]]. [[Back->past]]
On the desk there's a large piece of parchment. <<if not $password>>It's totally blank<<else>>On it is written, in a mysterious hand: $password<</if>>. <<return "Back">>
<<set _roman to $event.roman >>\ <<set _cards to ["C", "D", "I", "L", "M", "V", "X", "_"] >>\ <<set _buffer to "" >>\ <<set _s1 to ["AR","AL","GAR","GAL","ASH", "AS", "EL", "BAS", "HA", "AE", "GHA"] >>\ <<set _s2 to ["BA","GA","THOG","TA","AG", "DE", "BE", "DER", "EA", "DHA"] >>\ <<set _s3 to ["OTH", "THOTH", "AOTH", "OR", "ORTH", "ORG", "AAL"] >>\ <div id="button-panel"> <<for _c range _cards>>\ <<capture _c>>\ <<button _c>> <<if _c is "_">>\ <<replace "#status">>You insert a blank tablet, and feel the stone rumbling for an instant.\ <<if _buffer is _roman>>\ <<set $password to _s1.random() + _s2.random() + _s2.random() + _s3.random() >>\ A scratching sound comes from the [[desk->escritorio]]. <<addclass "#button-panel" "hidden">>\ <</if>>\ <</replace>>\ <<set _buffer to "">>\ <<else>> <<set _buffer to _buffer + _c>> <<replace "#status" t8n>>You insert a tablet inscribed with "_c".<</replace>> <</if>> <</button>>\ <</capture>>\ <</for>>\ </div>\ <div id="status"> </div> [[Back->mesa de piedra]]
The chairs have smooth, rounded shapes. Sitting on one, you find them surprisingly comfortable. On the right arm, the chair incorporates a computer [[terminal]]. You recall some pictures from the Cybersyn Project that you saw once. [[Back->future]]
The set of screens makes up a colossal dashboard displaying graphs, video and 3D images. Somehow the screens seem to react to your eye movements, and you can access any point in history on them. <<if not $solved>>\ There are multiple alert signs along the history lines. The flow of time seems [[unstable->historia]]. <<else>>\ The flow of time looks like it's stabilized. Every history line has returned to its familiar course. <</if>> [[Back->future]]
You review the control panel, following the main historical events backwards. Comparing with the history you know, you find the anomaly in <<print $event.year>>. In this timeline, <<print $event.desc>>, irreversibly changing all subsequent development. [[Back->pantallas]]
The terminal presents a menu: <div class="term"> 1. [[Status->term_diag]] 2. [[Reset conditions->term_reset]] </div> [[Back->sillas]]
<div class="term">You can use an encoded key as a seed to restore previous boundary conditions. Enter key below: <<textbox "$typed" "">> <<button "Accept" "verify_pass">><</button>> </div> [[Back->terminal]]
<div class="term"> Status:\ <<if not $solved>>\ UNSTABLE Anomalies found on the timeline. It's advised to restore a previous configuration. Please provide a code to reset the boundary conditions. <<else>>\ STABLE Anomalies were corrected. Timeline returning to original course. <</if>>\ </div>\ <<return "Back">>
<div class="term">\ <<if $password and $password.toLowerCase() == $typed.toLowerCase() >>\ Code accepted. Applying new conditions to timeline. <<set $solved to true>>\ [[Back->sillas]] <<else>>\ Invalid code. [[Back->term_reset]] <</if>>\ </div>\
<<set $eventNum to 0 >> <<set $events to [ { year: 1517, roman: "MDXVII", desc: "Martin Luther does not publish his ninety-five Theses" }, { year: 1783, roman: "MDCCLXXXIII", desc: "the United States loses the war of independence" }, { year: 1789, roman: "MDCCLXXXIX", desc: "the French Revolution is defeated" }, { year: 1812, roman: "MDCCCXII", desc: "Spain loses the War of Independence and the Constitution of Cádiz does not get written" }, { year: 1815, roman: "MDCCCXV", desc: "Napoleon wins at Waterloo", }, { year: 1917, roman: "MCMXVII", desc: "the Russian Revolution fails", }, { year: 1931, roman: "MCMXXXI", desc: "the Second Spanish Republic is not proclaimed", }, { year: 1943, roman: "MCMXLIII", desc: "Germany wins the Battle of Stalingrad and World War II", }, ].shuffle() >>\ <<set $event to $events[$eventNum] >>
You tear the pages of the notebook out, one by one, ripping them into small pieces, and then throw them into the wastepaper bin. You sigh and resign to living in the timeline you were given, despite all its problems. You can't help but think of Tiananmen, the threats against Salman Rushdie and... the Berlin Wall. [[END->credits]]
You usually keep a bottle full of water while you study or work at the computer. It's important to stay hydrated. <<return "Back">>
END OF HISTORY <<timed 1s>> Written by n-n in October 2023. <<next>> Originally developed for La Petite Mort of Spanish ECTOCOMP. <<next>> Tested and proofread by: Comely, Deborah Sherwood, and Christopher Merriner. <<next>> Thanks for playing! <<next>> <<link "Restart">><<run Engine.restart()>><</link>> <</timed>>