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 /index.html
*.swp *.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> <h1> Wake Up! </h1>
<!-- perspective: Jack --> <!-- perspective: Jack -->
@ -174,4 +174,4 @@ $ &#9608;
<span class="quote speech">Welp, that&apos;s that.</span> <span class="quote speech">Welp, that&apos;s that.</span>
</p> </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> <h1> Unlikely Encounter </h1>
<!-- perspective: Annie --> <!-- perspective: Annie -->
@ -371,4 +371,4 @@ AgriWorks Login: &#9608;
listening. listening.
</p> </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> <h1> A Simple Errand</h1>
<!-- perspective: Annie --> <!-- perspective: Annie -->
@ -75,8 +75,8 @@
She hurries up the stairs and gets on. The doors close and it begins to 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 move. Annie catches her breath and takes her library card out to look at
it. The note written on it reads: 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>. tonight</span>.
</p> </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> <h1> Return Null </h1>
<!-- perspective: Jack --> <!-- perspective: Jack -->
@ -143,4 +143,4 @@ o&#215;&#183; o ,&#215; ., * o &#183; '+, '* o '+, . ..
</ul> </ul>
</p> </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> <h1> Internet Saboteur </h1>
<!-- <!--
Outline: Outline:
@ -85,4 +85,4 @@ AgriWorks Login: f&#9608;
- something started cooking off underground like Centralia - something started cooking off underground like Centralia
- ??? (need more options to decide)</span> - ??? (need more options to decide)</span>
</pre> </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> <h1> Eventful Evening</h1>
<!-- perspective: Annie --> <!-- perspective: Annie -->
@ -143,4 +143,4 @@
<span class="quote speech">I could go. Anyone want to help me with <span class="quote speech">I could go. Anyone want to help me with
this?</span> this?</span>
</p> </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> <h1> Library At Night</h1>
<!-- perspective: Annie --> <!-- perspective: Annie -->
@ -174,4 +174,4 @@
<span class="quote speech">I don&apos;t think he expects us to have a <span class="quote speech">I don&apos;t think he expects us to have a
getaway vehicle...</span> getaway vehicle...</span>
</p> </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 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 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 # 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)) LINE_NUMBER=$(("$(cat index.html | wc -l)"+2))
genlinks >> index.html genlinks >> index.html
tail -n+$LINE_NUMBER html_resources/index_template.html >> 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> <h1>RTFM</h1>
<!-- perspective: Annie --> <!-- perspective: Annie -->
@ -167,4 +167,4 @@ Loading FPU Test...
Result: FAIL <!-- because memory error --> Result: FAIL <!-- because memory error -->
</pre> </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> <h1> Open Up! </h1>
<!-- perspective: Jack --> <!-- perspective: Jack -->
<p class="comment"> <p class="comment">
@ -62,4 +62,4 @@
overgrown with large bushes. He pushes the leaves aside and overgrown with large bushes. He pushes the leaves aside and
</p> </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> <h1> Who Died Today?</h1>
<!-- perspective: Emily --> <!-- perspective: Emily -->
@ -52,4 +52,4 @@
They place the coffin on the ground and start digging away at its sides, They place the coffin on the ground and start digging away at its sides,
slowly sinking it into the ground. slowly sinking it into the ground.
</p> </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> <ul>
<!-- chapter_list_here --> <!-- chapter_list_here -->
</ul> </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> </filter>
</svg> </svg>
<div class="home"> <div class="home">
<a href="index.html">&lt;</a> <a href="index.html">&#8962;</a>
</div> </div>
<h1> Layout Test Page </h1> <h1> Layout Test Page </h1>
<p> <p>
@ -151,7 +151,7 @@ o &#183; , o . &#183; &#183; . * , . .
o&#215;&#183; o ,&#215; ., * o &#183; '+, '* o '+, . .. &#183;' &#183; &#183; o&#215;&#183; o ,&#215; ., * o &#183; '+, '* o '+, . .. &#183;' &#183; &#183;
. + . . ' . . . + &#183; +* ' &#183;' + . .+</pre> . + . . ' . . . + &#183; +* ' &#183;' + . .+</pre>
<p class="copyright"> <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> </p>
<script> <script>
let spans = ["<span class=\"paper green\">", "<span>"]; let spans = ["<span class=\"paper green\">", "<span>"];
@ -167,6 +167,37 @@ o&#215;&#183; o ,&#215; ., * o &#183; '+, '* o '+, . ..
} }
pre_texts[i].innerHTML = result; 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> </script>
</body> </body>
</html> </html>

View File

@ -3,14 +3,14 @@
} }
a { a {
color: #1515A0; color: #051390;
} }
a:visited { a:visited {
color: #185113; color: #134709;
} }
html { html {
background-color: #e5e3e0; background-color: #d7d6d1;
} }
body { body {
@ -89,7 +89,7 @@ p.copyright {
margin-bottom: 0; margin-bottom: 0;
text-align: center; text-align: center;
font-size: 0.8em; font-size: 0.8em;
color: gray; color: #606a76;
bottom: 2px; bottom: 2px;
} }
@ -121,7 +121,7 @@ pre {
pre.terminal { pre.terminal {
color: #B5E550; color: #B5E550;
background-color: #3F3F3F; background-color: #3b3b3b;
border: 1px solid #101030; border: 1px solid #101030;
padding: 1em; padding: 1em;
@ -139,7 +139,7 @@ pre.terminal span.blur {
pre.paper { pre.paper {
/* TODO: typewriter-look? */ /* TODO: typewriter-look? */
/* TODO: tractor feed ribbons? */ /* TODO: tractor feed ribbons? */
background-color: #F0E6CE; background-color: #f0e8d6;
border: 1px solid #101030; border: 1px solid #101030;
padding: 1em; padding: 1em;
@ -147,7 +147,7 @@ pre.paper {
} }
span.paper.green { span.paper.green {
background-color: #D0DBA6; background-color: #d4deae;
} }
span.quote.speech { span.quote.speech {
@ -201,30 +201,30 @@ However, Chromium apparently doesn't apply the a:visted color to children of <a>
*/ */
span.chapter { span.chapter {
color: #1515A0; color: #051390;
} }
a:visited>span.chapter { a:visited>span.chapter {
color: #185113; color: #134709;
} }
span.chapter::before { span.chapter::before {
content: "\25b9"; content: "\25b9";
font-size: 0.75em; font-size: 0.75em;
position: relative; position: relative;
bottom: 0.15em; bottom: 0.15em;
color: #090944; color: #08083e;
} }
a:visited>span.chapter::before { a:visited>span.chapter::before {
color: #0f320c; color: #0e310b;
} }
span.chapter::after { span.chapter::after {
content: "\25c3"; content: "\25c3";
font-size: 0.75em; font-size: 0.75em;
position: relative; position: relative;
bottom: 0.15em; bottom: 0.15em;
color: #090944; color: #08083e;
} }
a:visited>span.chapter::after { a:visited>span.chapter::after {
color: #0f320c; color: #0e310b;
} }
span.blur { span.blur {
@ -233,14 +233,34 @@ span.blur {
display: inline-block; display: inline-block;
} }
div.home { div.home, div.next, div.prev {
font-size: 2.8em; font-size: 2.8em;
width: 1.3em;
height: 1.3em; height: 1.3em;
position: fixed; position: fixed;
top: 0.4em; 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; color: black;
text-decoration: none; text-decoration: none;
text-align: center; text-align: center;
@ -248,17 +268,28 @@ div.home a {
height: 100%; height: 100%;
display: block; display: block;
border-radius: 0.3rem; border-radius: 0.3rem;
border: 1.2px solid #97979a; outline: 1.2px solid #97979a;
background: #e9e9ed; 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; background: #d0d0d7;
border: 1.2px solid #86868f; outline: 1.2px solid #86868f;
} }
.comment { .comment {
font-style: italic; font-style: italic;
color: gray !important; color: #606a76 !important;
} }
svg.hidden_filter { 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> <!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-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> 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> <h1>Erosion</h1>
<!-- perspective: Michelle --> <!-- perspective: Michelle -->
@ -153,4 +153,4 @@
in pieces down below. in pieces down below.
</p> </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> <h1>
Night Watch Night Watch
</h1> </h1>
@ -103,4 +103,4 @@
<span class="comment"> which is not part of the story. <span class="comment"> which is not part of the story.
--> -->
</p> </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> <h1>I Like Trains</h1>
<!-- perspective: Michelle --> <!-- perspective: Michelle -->
@ -130,4 +130,4 @@
well planned, Mr infrastructure guy.</span><br /> well planned, Mr infrastructure guy.</span><br />
<span class="quote speech">Let&apos;s go find a truck.</span> <span class="quote speech">Let&apos;s go find a truck.</span>
</p> </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> <h1>Ran When Parked</h1>
<!-- perspective: Jack --> <!-- 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 is met with a lot of hissing from underneath the train, but nothing else
happens. happens.
</p> </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> <h1> Escape</h1>
<!-- perspective: Annie --> <!-- perspective: Annie -->
@ -59,8 +59,8 @@
<p> <p>
Looking outside again, Annie realizes:<br /> Looking outside again, Annie realizes:<br />
<span class="quote speech">I have never seen one of these</span> &ndash; <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 she taps her hand on the control panel &ndash;
this fast.</span><br /> <span class="quote speech">go this fast.</span><br />
<span class="quote speech">Me neither</span>, says Jack. He adds: <span class="quote speech">Me neither</span>, says Jack. He adds:
<span class="quote speech">There used to be trains that could go faster <span class="quote speech">There used to be trains that could go faster
&ndash; a lot faster &ndash; but not the metro.</span> &ndash; a lot faster &ndash; but not the metro.</span>
@ -213,4 +213,4 @@
operations.</span><br /> operations.</span><br />
The train rolls out of the second tunnel and they find themselves in a The train rolls out of the second tunnel and they find themselves in a
station.</p> 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> <h1> First Steps Outside</h1>
<!-- perspective: Annie --> <!-- perspective: Annie -->
@ -133,4 +133,4 @@
They make their way across the fast-flowing river by stepping on large 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. stones in the water, and continue through the bushes towards the bunker.
</p> </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> <h1>Welcome Home</h1>
<!-- perspective: Annie --> <!-- perspective: Annie -->
@ -140,4 +140,4 @@
While eating, they discuss their mission. While eating, they discuss their mission.
</p> </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> <h1>Telescope</h1>
<!-- perspective: unknown/neutral? --> <!-- perspective: unknown/neutral? -->
@ -113,4 +113,4 @@
too much time there. Then, they go into the radome. too much time there. Then, they go into the radome.
</p> </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> <h1> Lab Rat </h1>
<!-- perspective: Emily --> <!-- perspective: Emily -->
@ -71,4 +71,4 @@
dark again. The next time she regains awareness is while throwing up dark again. The next time she regains awareness is while throwing up
in her bed. She gasps for air, and drifts away into unconsciousness. in her bed. She gasps for air, and drifts away into unconsciousness.
</p> </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> <h1> Bare Necessities </h1>
<!-- perspective: Annie --> <!-- perspective: Annie -->
@ -155,7 +155,6 @@
<br /> <br />
<span class="quote speech">Uhh... yes.</span><br /> <span class="quote speech">Uhh... yes.</span><br />
He seems to be taken aback by her sudden excitement.<br /> He seems to be taken aback by her sudden excitement.<br />
<span class="comment">Missing: explanation, they go to car, Mary sits in <span class="comment">Missing: explanation, they go to car</span>
the front with Jack</span>
</p> </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> <h1>Fine Print</h1>
<!-- perspective: Jack --> <!-- perspective: Jack -->
<p> <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"> 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 river name</span>. The road is in pretty poor condition and they get
shaken thoroughly.<br /> shaken thoroughly. Mary sits in the front with Jack, showing him the way.
Mary appears to be having a blast: <br />
She appears to be having a blast:
<span class="quote speech">Faster! Faster!</span><br /> <span class="quote speech">Faster! Faster!</span><br />
<span class="quote speech">I don&apos;t think Annie would appreciate <span class="quote speech">I don&apos;t think Annie would appreciate
that.</span><br /> that.</span><br />
<span class="quote speech">Aww.</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>
<p> <p>
<!-- <!--
@ -61,17 +62,15 @@
with a few walls that pertrude into the river and two with a few walls that pertrude into the river and two
<span class="comment">weers? translate: Stauwehre / Wehre</span>, one for <span class="comment">weers? translate: Stauwehre / Wehre</span>, one for
controlling the <span class="comment">inflow? tanslate: Zufluss</span>, controlling the <span class="comment">inflow? tanslate: Zufluss</span>,
one for a bypass. The floor of the tunnel sits significantly beneath one for a bypass <span class="comment"> can be adjusted with large
the river bed and, while the river bed is completely dry, there is still 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. some water inside.
<span class="comment"><br />
<!-- TBD:<br />
- trockenes Wehr am Einlass - look at the large buried tank / branching point<br />
- water in the tunnel
- bridge nearby
- look at the large buried tank / branching point
- go upstream to see where the river has gone - go upstream to see where the river has gone
--> </span>
</p> </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> <h1> Diesel Creek </h1>
<!-- perspective: neutral / (weak) Jack --> <!-- perspective: neutral / (weak) Jack -->
@ -120,4 +120,4 @@
</span> </span>
</p> </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> <!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>&lt;Lena first contact&gt;</h1> <h1>First Contact</h1>
<!-- perspective: Michelle --> <!-- perspective: Michelle -->
<p> <p>
@ -7,9 +7,9 @@
inside. Jack grabs a large box filled with all sorts of cables and spare 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 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 thick binders of documentation. They walk up the stairs and set their
things down somewhere off to the side. Then, they go for round things down somewhere off to the side. Then, they go for round two,
two, fetching a generator, two fuel canisters, a toolbox, fetching a generator, two fuel canisters, a toolbox, and a box of random
<span class="comment">something else</span> from the truck. nuts and bolts and other metal parts from the truck.
<!-- <!--
Things they will need later: Things they will need later:
- oscilloscope - oscilloscope
@ -46,7 +46,7 @@
With some effort, she manages to wrangle it to the other side of the With some effort, she manages to wrangle it to the other side of the
cable.<br /> cable.<br />
<span class="quote speech">James, Annie, can you catch this? Careful, <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 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 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 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> something along the lines of &quot;everyone is dead&quot;</span>
</p> </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> <h1>&lt;Emily wake up again&gt;</h1>
<!-- perspective: Emily --> <!-- perspective: Emily -->
@ -46,4 +46,4 @@
<span class="quote speech"></span> <span class="quote speech"></span>
</p> </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> <h1> Overdue Maintenance </h1>
<!-- perspective: Annie --> <!-- perspective: Annie -->
<p> <p>
@ -219,4 +219,4 @@
&ndash;<br /> &ndash;<br />
<span class="quote speech">Thanks.</span> <span class="quote speech">Thanks.</span>
</p> </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> <h1>Banished</h1>
<!-- Perspective: Isabelle --> <!-- Perspective: Isabelle -->
@ -56,8 +56,9 @@
told to fill in the rest. told to fill in the rest.
</p> </p>
<p> <p>
<span class="comment">something is missing here, maybe add a Not much later, she finds herself at trial. As laid out in the paperwork,
paragraph about the trial itself</span> she gets banished. She is almost kinda surprised it wasn&apos;t
a trick, but also relieved.
</p> </p>
<p> <p>
Isabelle is taken to a cell with no bed or toilet, just a bench. 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. 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. 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 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 a faint shimmer on the dome ceiling, reflecting the light from other
the city. parts of the city.
</p> </p>
<p> <p>
A train is waiting at the platform. Rather than the usual metro, this one A train is waiting at the platform. Rather than the usual metro, this one
is made up of a battery locomotive and a few flat bed 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. 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 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>
<p> <p>
A few minutes later, the same repeats with Lucas. He sits down next to A few minutes later, the same repeats with Lucas. He sits down next to
@ -121,4 +122,4 @@
into account. into account.
</p> </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> <h1>The Floor Is Water</h1>
<!-- perspective: Annie --> <!-- perspective: Annie -->
@ -94,4 +94,4 @@
exploring the warehouse, they find a forklift and a railroad in the back exploring the warehouse, they find a forklift and a railroad in the back
</p> </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> <h1> &lt;Emily First Contact&gt;</h1>
<!-- perspective: Emily --> <!-- perspective: Emily -->
@ -86,4 +86,4 @@
</li> </li>
</ul> </ul>
</p> </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> <h1> Consulting </h1>
<!-- perspective: Jack --> <!-- perspective: Jack -->
@ -134,4 +134,4 @@
with parts harvested from the IV train yard with parts harvested from the IV train yard
--> -->
</p> </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> <h1> Alone</h1>
<!-- perspective: Emily --> <!-- perspective: Emily -->
@ -9,26 +9,29 @@
bench next to the airlock. Emily helps her all the way into the 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. suit. Lena sits there for a moment, heavily breathing, while Emily waits.
<br /> <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>
<p> <p>
Emily takes their helmets and brings them into the airlock. She returns She takes their helmets and brings them into the airlock. Then, she
for a life support unit, pulls it out of the rack in the wall, and sets returns for a life support unit, pulls it out of the rack in the wall,
it down on the floor. Following a mental checklist, she makes sure that and sets it down on the floor. Following a mental checklist, she makes
the oxygen bottle is connected properly and the gauges read what they sure that the oxygen bottle is connected properly and the gauges read
should. Everything okay... or is it? She double-checks with the check what they should. Everything okay... or is it? She double-checks with
list on the wall. Yes, this unit is ready. She triple-checks everything the check list on the wall. Yes, this unit is ready. She triple-checks
&ndash; first time it actually matters. Reasonably satisfied with her everything &ndash; first time it actually matters. Reasonably satisfied
findings, she carries it over to the airlock. Then, she repeats this with her findings, she carries it over to the airlock. Then, she repeats
procedure for the second unit. Finally, she helps Lena up and they get this procedure for another unit. Finally, she helps Lena up and they
into the airlock. get into the airlock.
</p> </p>
<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 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 unit next to her on a short tether. Emily puts it on her back and helps
helps her up. The outer door of the airlock silently swings aside and her up. The outer door of the airlock silently swings aside and they
they start walking, Lena leaning on Emily. start walking, Lena leaning on her.
</p> </p>
<p> <p>
They reach the graveyard and walk over to the recent graves. The entire 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 <span class="quote speech">Ultimately, you were right.</span> She is
interrupted by coughing. <span class="quote speech">If more had taken interrupted by coughing. <span class="quote speech">If more had taken
Tony&apos;s cure &ndash; no matter what risk it posed ... &ndash; maybe 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 <span class="quote speech">What about you?</span> Emily asks with a
slither of hope in her voice.<br /> slither of hope in her voice.<br />
<span class="quote speech">No &ndash; no cure can save me, it&apos;s too <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 before this. It has panorama windows to all sides and a ceiling of large
glass panels.</span> glass panels.</span>
</p> </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> <h1> &lt;Emily incoming call&gt; </h1>
<!-- perspective: Emily --> <!-- perspective: Emily -->
@ -87,4 +87,4 @@ Ding!
MICHELLE @ EARTH-53 <b>&gt;</b> Hello again. MICHELLE @ EARTH-53 <b>&gt;</b> Hello again.
</pre> </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> <h1>&lt;Story End Outline&gt;</h1>
<p class="comment"> <p class="comment">
This is not intended to be a chapter. It&apos;s more of an overview for 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 the events of zz*.html
</li> </li>
</ul> </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> <h1>
Pancakes Pancakes
</h1> </h1>
@ -76,4 +76,4 @@
The engine roars as she accelerates the bus and they continue their way. The engine roars as she accelerates the bus and they continue their way.
</p> </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> <h1>Nova Metropolis</h1>
<!-- perspective: Annie --> <!-- perspective: Annie -->
<p> <p>
@ -104,4 +104,4 @@
<span class="comment">Yes, it is. Make this clear when Jack picks it <span class="comment">Yes, it is. Make this clear when Jack picks it
up.</span> up.</span>
</p> </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> <h1>Landing Troubles</h1>
<!-- perspective: Emily --> <!-- perspective: Emily -->
<p> <p>
@ -31,4 +31,4 @@
flips the switch off and on again. flips the switch off and on again.
<span class="quote speech">Nononononooo...</span> <span class="quote speech">Nononononooo...</span>
</p> </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 --> <!-- perspective: Jack -->
<p> <p>
@ -90,4 +90,4 @@
anything to happen after this though I have managed to somehow already 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>. write about an event after this in <a href="./%3F%3F.txt">??.txt</a>.
</p> </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>