Compare commits

...

5 Commits

Author SHA1 Message Date
BodgeMaster 2ac3e76a4f many chapters: minor revisions - mostly wording fixes, some small gaps filled
Yeah I just wanna get rid of that list of red files in my `git status` but many of these aren't worth pushing on their own.
2026-01-15 08:33:23 +01:00
BodgeMaster 750ea92067 style: make background darker and adjust other colors as needed
The background is now even more gray than it was before to make it easier on the eyes.
2026-01-14 20:41:34 +01:00
BodgeMaster 2686f6cb5e 'zz' <End> -> One Step For A Child: rename chapter
Yes, this is a reference to the first moon landing :)
2026-01-14 20:25:19 +01:00
BodgeMaster e20d53e4ad 'pk' <Lena first contact> -> First Contact: rename chapter, revise two sentences 2026-01-14 20:25:19 +01:00
BodgeMaster 1b2a0d7c54 layout: add next/previous buttons to chapters, update copyright notice for 2026 2026-01-14 20:24:55 +01:00
43 changed files with 224 additions and 145 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
/index.html
*.swp
/chapters.json

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Wake Up! </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Wake Up! </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1> Wake Up! </h1>
<!-- perspective: Jack -->
@ -174,4 +174,4 @@ $ &#9608;
<span class="quote speech">Welp, that&apos;s that.</span>
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Unlikely Encounter </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Unlikely Encounter </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1> Unlikely Encounter </h1>
<!-- perspective: Annie -->
@ -371,4 +371,4 @@ AgriWorks Login: &#9608;
listening.
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> A Simple Errand </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> A Simple Errand </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1> A Simple Errand</h1>
<!-- perspective: Annie -->
@ -75,8 +75,8 @@
She hurries up the stairs and gets on. The doors close and it begins to
move. Annie catches her breath and takes her library card out to look at
it. The note written on it reads:
<span class="quote non-speech">&lt;metro station&gt; 10:30PM
<span class="quote non-speech">Metro Crystal Park 10:30PM
tonight</span>.
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Rerturn Null </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Rerturn Null </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1> Return Null </h1>
<!-- perspective: Jack -->
@ -143,4 +143,4 @@ o&#215;&#183; o ,&#215; ., * o &#183; '+, '* o '+, . ..
</ul>
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Internet Saboteur </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Internet Saboteur </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1> Internet Saboteur </h1>
<!--
Outline:
@ -85,4 +85,4 @@ AgriWorks Login: f&#9608;
- something started cooking off underground like Centralia
- ??? (need more options to decide)</span>
</pre>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Eventful Evening </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Eventful Evening </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1> Eventful Evening</h1>
<!-- perspective: Annie -->
@ -143,4 +143,4 @@
<span class="quote speech">I could go. Anyone want to help me with
this?</span>
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Library At Night </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Library At Night </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1> Library At Night</h1>
<!-- perspective: Annie -->
@ -174,4 +174,4 @@
<span class="quote speech">I don&apos;t think he expects us to have a
getaway vehicle...</span>
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -11,8 +11,21 @@ function genlinks {
done
}
function genjson {
echo -n '{"pages":['
{ for FILE in $(find . -maxdepth 1 -type f -name "??-*.html" | sort); do
echo "$FILE" >&2
echo -n "\"$FILE\","
done } | sed -e 's/.$//'
echo "]}"
}
echo "Generating landing page..." >&2
sed -ne '/ <!-- chapter_list_here -->/q;p' html_resources/index_template.html > index.html
# for some fucking reason, there is no way to tell wc to only print the number so we do cat abuse to get rid of the filename
LINE_NUMBER=$(("$(cat index.html | wc -l)"+2))
genlinks >> index.html
tail -n+$LINE_NUMBER html_resources/index_template.html >> index.html
echo "Generating chapters JSON..." >&2
genjson > chapters.json

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> RTFM </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> RTFM </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1>RTFM</h1>
<!-- perspective: Annie -->
@ -167,4 +167,4 @@ Loading FPU Test...
Result: FAIL <!-- because memory error -->
</pre>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Open Up! </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Open Up! </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1> Open Up! </h1>
<!-- perspective: Jack -->
<p class="comment">
@ -62,4 +62,4 @@
overgrown with large bushes. He pushes the leaves aside and
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Who died today? </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Who died today? </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1> Who Died Today?</h1>
<!-- perspective: Emily -->
@ -52,4 +52,4 @@
They place the coffin on the ground and start digging away at its sides,
slowly sinking it into the ground.
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -0,0 +1 @@
{"pages":["./prev.html","./layout.html","./next.html"]}

View File

@ -43,4 +43,4 @@
<ul>
<!-- chapter_list_here -->
</ul>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>

View File

@ -16,7 +16,7 @@
</filter>
</svg>
<div class="home">
<a href="index.html">&lt;</a>
<a href="index.html">&#8962;</a>
</div>
<h1> Layout Test Page </h1>
<p>
@ -151,7 +151,7 @@ o &#183; , o . &#183; &#183; . * , . .
o&#215;&#183; o ,&#215; ., * o &#183; '+, '* o '+, . .. &#183;' &#183; &#183;
. + . . ' . . . + &#183; +* ' &#183;' + . .+</pre>
<p class="copyright">
Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.
Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.
</p>
<script>
let spans = ["<span class=\"paper green\">", "<span>"];
@ -167,6 +167,37 @@ o&#215;&#183; o ,&#215; ., * o &#183; '+, '* o '+, . ..
}
pre_texts[i].innerHTML = result;
}
fetch("./chapters.json").then(function(result) { return result.json(); }).then(function(json) {
let chapters = json.pages;
for (let i=0; i<chapters.length; i++) {
if (chapters[i] === document.URL.replace(/^.*\//, "./")) {
//<div class="prev">
// <a href="./prev.html">&#9667;</a>
//</div>
let prevdiv = document.createElement("div");
prevdiv.className = "prev";
if (i > 0) {
prevdiv.innerHTML = "<a href=\"" + chapters[i-1] + "\">&#9667;</a>";
} else {
prevdiv.innerHTML = "<p>&#9667;</p>";
}
document.body.appendChild(prevdiv);
//<div class="next">
// <a href="./next.html">&#9657;</a>
//</div>
let nextdiv = document.createElement("div");
nextdiv.className = "next";
if (i < chapters.length-1) {
nextdiv.innerHTML = "<a href=\"" + chapters[i+1] + "\">&#9657;</a>";
} else {
nextdiv.innerHTML = "<p>&#9657;</p>";
}
document.body.appendChild(nextdiv);
}
}
});
</script>
</body>
</html>

View File

@ -3,14 +3,14 @@
}
a {
color: #1515A0;
color: #051390;
}
a:visited {
color: #185113;
color: #134709;
}
html {
background-color: #e5e3e0;
background-color: #d7d6d1;
}
body {
@ -89,7 +89,7 @@ p.copyright {
margin-bottom: 0;
text-align: center;
font-size: 0.8em;
color: gray;
color: #606a76;
bottom: 2px;
}
@ -121,7 +121,7 @@ pre {
pre.terminal {
color: #B5E550;
background-color: #3F3F3F;
background-color: #3b3b3b;
border: 1px solid #101030;
padding: 1em;
@ -139,7 +139,7 @@ pre.terminal span.blur {
pre.paper {
/* TODO: typewriter-look? */
/* TODO: tractor feed ribbons? */
background-color: #F0E6CE;
background-color: #f0e8d6;
border: 1px solid #101030;
padding: 1em;
@ -147,7 +147,7 @@ pre.paper {
}
span.paper.green {
background-color: #D0DBA6;
background-color: #d4deae;
}
span.quote.speech {
@ -201,30 +201,30 @@ However, Chromium apparently doesn't apply the a:visted color to children of <a>
*/
span.chapter {
color: #1515A0;
color: #051390;
}
a:visited>span.chapter {
color: #185113;
color: #134709;
}
span.chapter::before {
content: "\25b9";
font-size: 0.75em;
position: relative;
bottom: 0.15em;
color: #090944;
color: #08083e;
}
a:visited>span.chapter::before {
color: #0f320c;
color: #0e310b;
}
span.chapter::after {
content: "\25c3";
font-size: 0.75em;
position: relative;
bottom: 0.15em;
color: #090944;
color: #08083e;
}
a:visited>span.chapter::after {
color: #0f320c;
color: #0e310b;
}
span.blur {
@ -233,14 +233,34 @@ span.blur {
display: inline-block;
}
div.home {
div.home, div.next, div.prev {
font-size: 2.8em;
width: 1.3em;
height: 1.3em;
position: fixed;
top: 0.4em;
}
div.home a {
div.home {
width: 1.3em;
}
div.prev {
width:0.6em;
left: calc(100% - 1.3em);
}
div.next {
width:0.6em;
left: calc(100% - 0.6em);
}
@media screen and (min-width: 48rem) {
div.prev {
width:0.6em;
left: calc(95% - 1.3em);
}
div.next {
width:0.6em;
left: calc(95% - 0.6em);
}
}
div.home a, div.next a, div.prev a {
color: black;
text-decoration: none;
text-align: center;
@ -248,17 +268,28 @@ div.home a {
height: 100%;
display: block;
border-radius: 0.3rem;
border: 1.2px solid #97979a;
outline: 1.2px solid #97979a;
background: #e9e9ed;
}
div.home a:hover {
div.home p, div.next p, div.prev p {
color: #f3f0f8;
text-decoration: none;
text-align: center;
width: 100%;
height: 100%;
display: block;
border-radius: 0.3rem;
outline: 1.2px solid #97979a;
background: #ced0d6;
}
div.home a:hover, div.next a:hover, div.prev a:hover {
background: #d0d0d7;
border: 1.2px solid #86868f;
outline: 1.2px solid #86868f;
}
.comment {
font-style: italic;
color: gray !important;
color: #606a76 !important;
}
svg.hidden_filter {

View File

@ -1,2 +1,2 @@
<!DOCTYPE html><html><head><title> Chapter Name </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<!DOCTYPE html><html><head><title> Chapter Name </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Erosion </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Erosion </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1>Erosion</h1>
<!-- perspective: Michelle -->
@ -153,4 +153,4 @@
in pieces down below.
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Night Watch </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Night Watch </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1>
Night Watch
</h1>
@ -103,4 +103,4 @@
<span class="comment"> which is not part of the story.
-->
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> I Like Trains </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> I Like Trains </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1>I Like Trains</h1>
<!-- perspective: Michelle -->
@ -130,4 +130,4 @@
well planned, Mr infrastructure guy.</span><br />
<span class="quote speech">Let&apos;s go find a truck.</span>
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Ran When Parked </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Ran When Parked </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1>Ran When Parked</h1>
<!-- perspective: Jack -->
@ -148,4 +148,4 @@ going with this so I'll just leave it in here, commented out.
is met with a lot of hissing from underneath the train, but nothing else
happens.
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Escape </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Escape </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1> Escape</h1>
<!-- perspective: Annie -->
@ -59,8 +59,8 @@
<p>
Looking outside again, Annie realizes:<br />
<span class="quote speech">I have never seen one of these</span> &ndash;
she knocks on the control panel &ndash; <span class="quote speech">go
this fast.</span><br />
she taps her hand on the control panel &ndash;
<span class="quote speech">go this fast.</span><br />
<span class="quote speech">Me neither</span>, says Jack. He adds:
<span class="quote speech">There used to be trains that could go faster
&ndash; a lot faster &ndash; but not the metro.</span>
@ -213,4 +213,4 @@
operations.</span><br />
The train rolls out of the second tunnel and they find themselves in a
station.</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> First Steps Outside </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> First Steps Outside </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1> First Steps Outside</h1>
<!-- perspective: Annie -->
@ -133,4 +133,4 @@
They make their way across the fast-flowing river by stepping on large
stones in the water, and continue through the bushes towards the bunker.
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Welcome Home </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Welcome Home </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1>Welcome Home</h1>
<!-- perspective: Annie -->
@ -140,4 +140,4 @@
While eating, they discuss their mission.
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Telescope </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Telescope </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1>Telescope</h1>
<!-- perspective: unknown/neutral? -->
@ -113,4 +113,4 @@
too much time there. Then, they go into the radome.
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Lab Rat </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Lab Rat </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1> Lab Rat </h1>
<!-- perspective: Emily -->
@ -71,4 +71,4 @@
dark again. The next time she regains awareness is while throwing up
in her bed. She gasps for air, and drifts away into unconsciousness.
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Bare Necessities </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Bare Necessities </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1> Bare Necessities </h1>
<!-- perspective: Annie -->
@ -155,7 +155,6 @@
<br />
<span class="quote speech">Uhh... yes.</span><br />
He seems to be taken aback by her sudden excitement.<br />
<span class="comment">Missing: explanation, they go to car, Mary sits in
the front with Jack</span>
<span class="comment">Missing: explanation, they go to car</span>
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,21 +1,22 @@
<!DOCTYPE html><html><head><title> Fine Print </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Fine Print </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1>Fine Print</h1>
<!-- perspective: Jack -->
<p>
<!--
the fact that Mary sits in the front is already a given
-->
They drive on a dirt road alongside the dried-out <span class="comment">
river name</span>. The road is in pretty poor condition and they get
shaken thoroughly.<br />
Mary appears to be having a blast:
shaken thoroughly. Mary sits in the front with Jack, showing him the way.
<br />
She appears to be having a blast:
<span class="quote speech">Faster! Faster!</span><br />
<span class="quote speech">I don&apos;t think Annie would appreciate
that.</span><br />
<span class="quote speech">Aww.</span><br />
Annie says <span class="quote speech">thanks</span> from the rear seats.
They hear Annie say <span class="quote speech">thanks</span> from behind
Jack.<br />
<span class="comment">somezthing along the lines of &quot;You good back
there?&quot;</span>
</p>
<p>
<!--
@ -61,17 +62,15 @@
with a few walls that pertrude into the river and two
<span class="comment">weers? translate: Stauwehre / Wehre</span>, one for
controlling the <span class="comment">inflow? tanslate: Zufluss</span>,
one for a bypass. The floor of the tunnel sits significantly beneath
the river bed and, while the river bed is completely dry, there is still
one for a bypass <span class="comment"> can be adjusted with large
screws </span>. The floor of the tunnel sits significantly beneath the
river bed and, while the river bed is completely dry, there is still
some water inside.
<!--
- trockenes Wehr am Einlass
- water in the tunnel
- bridge nearby
- look at the large buried tank / branching point
<span class="comment"><br />
TBD:<br />
- look at the large buried tank / branching point<br />
- go upstream to see where the river has gone
-->
</span>
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Diesel Creek </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Diesel Creek </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1> Diesel Creek </h1>
<!-- perspective: neutral / (weak) Jack -->
@ -120,4 +120,4 @@
</span>
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><html><head><title> &lt;Lena first contact&gt; </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<h1>&lt;Lena first contact&gt;</h1>
<!DOCTYPE html><html><head><title> First Contact </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1>First Contact</h1>
<!-- perspective: Michelle -->
<p>
@ -7,9 +7,9 @@
inside. Jack grabs a large box filled with all sorts of cables and spare
parts and follows them. Annie follows not long after, carrying a stack of
thick binders of documentation. They walk up the stairs and set their
things down somewhere off to the side. Then, they go for round
two, fetching a generator, two fuel canisters, a toolbox,
<span class="comment">something else</span> from the truck.
things down somewhere off to the side. Then, they go for round two,
fetching a generator, two fuel canisters, a toolbox, and a box of random
nuts and bolts and other metal parts from the truck.
<!--
Things they will need later:
- oscilloscope
@ -46,7 +46,7 @@
With some effort, she manages to wrangle it to the other side of the
cable.<br />
<span class="quote speech">James, Annie, can you catch this? Careful,
it&apos;s heavy.</span><br />
heavy.</span><br />
The two stand across from each other and extend their arms. Michelle
lets go and they catch it. She turns her attention back to the gearbox
in front of her. It is completely dried out and the large gears appear
@ -186,4 +186,4 @@
something along the lines of &quot;everyone is dead&quot;</span>
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> &lt;Emily wake up again&gt; </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> &lt;Emily wake up again&gt; </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1>&lt;Emily wake up again&gt;</h1>
<!-- perspective: Emily -->
@ -46,4 +46,4 @@
<span class="quote speech"></span>
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Overdue Maintenence </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Overdue Maintenence </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1> Overdue Maintenance </h1>
<!-- perspective: Annie -->
<p>
@ -219,4 +219,4 @@
&ndash;<br />
<span class="quote speech">Thanks.</span>
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Banished </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Banished </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1>Banished</h1>
<!-- Perspective: Isabelle -->
@ -56,8 +56,9 @@
told to fill in the rest.
</p>
<p>
<span class="comment">something is missing here, maybe add a
paragraph about the trial itself</span>
Not much later, she finds herself at trial. As laid out in the paperwork,
she gets banished. She is almost kinda surprised it wasn&apos;t
a trick, but also relieved.
</p>
<p>
Isabelle is taken to a cell with no bed or toilet, just a bench.
@ -95,15 +96,15 @@
It&apos;s a short ride from the prison to the nearest train station.
Apart from a few cars moving around, the entire area is completely dark.
No steetlights, no lit-up windows. It is dark enough that she can see
a faint shimmer on the dome ceiling, reflecting from other parts of
the city.
a faint shimmer on the dome ceiling, reflecting the light from other
parts of the city.
</p>
<p>
A train is waiting at the platform. Rather than the usual metro, this one
is made up of a battery locomotive and a few flatbed cars. The guard
is made up of a battery locomotive and a few flat bed cars. The guard
hands the key to her handcuffs over to a guy who seems to be in charge.
They sign some paperwork. Then, the guard leaves and the guy tells her
to go sit on the last of the flatbed cars.
to go sit on the last car at the end of the train.
</p>
<p>
A few minutes later, the same repeats with Lucas. He sits down next to
@ -121,4 +122,4 @@
into account.
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> The Floor Is Water </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> The Floor Is Water </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1>The Floor Is Water</h1>
<!-- perspective: Annie -->
@ -94,4 +94,4 @@
exploring the warehouse, they find a forklift and a railroad in the back
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> &lt;Emily First Contact&gt; </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> &lt;Emily First Contact&gt; </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1> &lt;Emily First Contact&gt;</h1>
<!-- perspective: Emily -->
@ -86,4 +86,4 @@
</li>
</ul>
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Consulting </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Consulting </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1> Consulting </h1>
<!-- perspective: Jack -->
@ -134,4 +134,4 @@
with parts harvested from the IV train yard
-->
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Alone </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Alone </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1> Alone</h1>
<!-- perspective: Emily -->
@ -9,26 +9,29 @@
bench next to the airlock. Emily helps her all the way into the
suit. Lena sits there for a moment, heavily breathing, while Emily waits.
<br />
<span class="quote speech">Sorry, I can&apos;t... I feel exhausted.</span>
<span class="quote speech">Sorry, I can&apos;t... too exhausted...</span>
<br />
Emily nods and continues getting both of them ready.
</p>
<p>
Emily takes their helmets and brings them into the airlock. She returns
for a life support unit, pulls it out of the rack in the wall, and sets
it down on the floor. Following a mental checklist, she makes sure that
the oxygen bottle is connected properly and the gauges read what they
should. Everything okay... or is it? She double-checks with the check
list on the wall. Yes, this unit is ready. She triple-checks everything
&ndash; first time it actually matters. Reasonably satisfied with her
findings, she carries it over to the airlock. Then, she repeats this
procedure for the second unit. Finally, she helps Lena up and they get
into the airlock.
She takes their helmets and brings them into the airlock. Then, she
returns for a life support unit, pulls it out of the rack in the wall,
and sets it down on the floor. Following a mental checklist, she makes
sure that the oxygen bottle is connected properly and the gauges read
what they should. Everything okay... or is it? She double-checks with
the check list on the wall. Yes, this unit is ready. She triple-checks
everything &ndash; first time it actually matters. Reasonably satisfied
with her findings, she carries it over to the airlock. Then, she repeats
this procedure for another unit. Finally, she helps Lena up and they
get into the airlock.
</p>
<p>
The pumps are getting quieter and quieter. Lena kneels on the floor
Helmets on, inner door closed, airlock cycling. The pumps are getting
quieter and quieter as the pressure drops. Lena kneels on the floor
holding a bunch of flowers from the biotope module, her life support
unit next to her on a short tether. Emily puts it on her back and and
helps her up. The outer door of the airlock silently swings aside and
they start walking, Lena leaning on Emily.
unit next to her on a short tether. Emily puts it on her back and helps
her up. The outer door of the airlock silently swings aside and they
start walking, Lena leaning on her.
</p>
<p>
They reach the graveyard and walk over to the recent graves. The entire
@ -48,7 +51,7 @@
<span class="quote speech">Ultimately, you were right.</span> She is
interrupted by coughing. <span class="quote speech">If more had taken
Tony&apos;s cure &ndash; no matter what risk it posed ... &ndash; maybe
some of them would be alive now.</span><br />
some of them would have made it.</span><br />
<span class="quote speech">What about you?</span> Emily asks with a
slither of hope in her voice.<br />
<span class="quote speech">No &ndash; no cure can save me, it&apos;s too
@ -109,4 +112,4 @@
before this. It has panorama windows to all sides and a ceiling of large
glass panels.</span>
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> &lt;Emily incoming call&gt; </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> &lt;Emily incoming call&gt; </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1> &lt;Emily incoming call&gt; </h1>
<!-- perspective: Emily -->
@ -87,4 +87,4 @@ Ding!
MICHELLE @ EARTH-53 <b>&gt;</b> Hello again.
</pre>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> &lt;Story End Outline&gt; </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> &lt;Story End Outline&gt; </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1>&lt;Story End Outline&gt;</h1>
<p class="comment">
This is not intended to be a chapter. It&apos;s more of an overview for
@ -46,4 +46,4 @@
the events of zz*.html
</li>
</ul>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Pancakes </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Pancakes </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1>
Pancakes
</h1>
@ -76,4 +76,4 @@
The engine roars as she accelerates the bus and they continue their way.
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Nova Metropolis </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Nova Metropolis </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1>Nova Metropolis</h1>
<!-- perspective: Annie -->
<p>
@ -104,4 +104,4 @@
<span class="comment">Yes, it is. Make this clear when Jack picks it
up.</span>
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html><head><title> Landing Troubles </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> Landing Troubles </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1>Landing Troubles</h1>
<!-- perspective: Emily -->
<p>
@ -31,4 +31,4 @@
flips the switch off and on again.
<span class="quote speech">Nononononooo...</span>
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

@ -1,6 +1,6 @@
<!DOCTYPE html><html><head><title> &lt;End&gt; </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&lt;</a></div>
<!DOCTYPE html><html><head><title> One Step For A Child </title><link rel="stylesheet" type="text/css" href="html_resources/style.css"></head><body><svg class="hidden_filter"><filter id="crunchy_blur" x="0" y="0"><feFlood x="4" y="4" height="2" width="2"/><feComposite width="6" height="6" in2="SourceGraphic"/><feTile result="a"/><feComposite in="SourceGraphic" in2="a" operator="in"/><feMorphology operator="dilate" radius="1.4"/><feGaussianBlur stdDeviation="2.2"></feGaussianBlur></filter></svg><div class="home"><a href="index.html">&#8962;</a></div>
<h1> &lt;End&gt;</h1>
<h1> One Step For A Child </h1>
<!-- perspective: Jack -->
<p>
@ -90,4 +90,4 @@
anything to happen after this though I have managed to somehow already
write about an event after this in <a href="./%3F%3F.txt">??.txt</a>.
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>