layout: add next/previous buttons to chapters, update copyright notice for 2026

master
BodgeMaster 2026-01-12 04:00:12 +01:00
parent a23edfedcd
commit 1b2a0d7c54
43 changed files with 160 additions and 83 deletions

1
.gitignore vendored
View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -233,14 +233,34 @@ span.blur {
display: inline-block;
}
div.home {
div.home, div.next, div.prev {
font-size: 2.8em;
width: 1.3em;
height: 1.3em;
position: fixed;
top: 0.4em;
}
div.home a {
div.home {
width: 1.3em;
}
div.prev {
width:0.6em;
left: calc(100% - 1.3em);
}
div.next {
width:0.6em;
left: calc(100% - 0.6em);
}
@media screen and (min-width: 48rem) {
div.prev {
width:0.6em;
left: calc(95% - 1.3em);
}
div.next {
width:0.6em;
left: calc(95% - 0.6em);
}
}
div.home a, div.next a, div.prev a {
color: black;
text-decoration: none;
text-align: center;
@ -248,12 +268,23 @@ div.home a {
height: 100%;
display: block;
border-radius: 0.3rem;
border: 1.2px solid #97979a;
outline: 1.2px solid #97979a;
background: #e9e9ed;
}
div.home a:hover {
div.home p, div.next p, div.prev p {
color: #f3f0f8;
text-decoration: none;
text-align: center;
width: 100%;
height: 100%;
display: block;
border-radius: 0.3rem;
outline: 1.2px solid #97979a;
background: #ced0d6;
}
div.home a:hover, div.next a:hover, div.prev a:hover {
background: #d0d0d7;
border: 1.2px solid #86868f;
outline: 1.2px solid #86868f;
}
.comment {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,4 +1,4 @@
<!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> &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">&#8962;</a></div>
<h1>&lt;Lena first contact&gt;</h1>
<!-- perspective: Michelle -->
@ -186,4 +186,4 @@
something along the lines of &quot;everyone is dead&quot;</span>
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,4 +1,4 @@
<!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> &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">&#8962;</a></div>
<h1> &lt;End&gt;</h1>
<!-- perspective: Jack -->
@ -90,4 +90,4 @@
anything to happen after this though I have managed to somehow already
write about an event after this in <a href="./%3F%3F.txt">??.txt</a>.
</p>
<p class="copyright">Copyright &#169; 2023-2025 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans = ["<span class=\"paper green\">", "<span>"]; let pre_texts = document.getElementsByTagName("pre"); for (let i = 0; i < pre_texts.length; i++) {if (pre_texts[i].className != "paper") continue; let lines = pre_texts[i].innerHTML.split("\n"); let result = ""; for (let j = 0; j < lines.length; j++) {if (lines[j].length >= 80) result = result + spans[j%2] + lines[j] + "</span>\n"; else result = result + spans[j%2] + lines[j] + " ".repeat(80-lines[j].length) + "</span>\n";} pre_texts[i].innerHTML = result;}</script></body></html>
<p class="copyright">Copyright &#169; 2023-2026 Jan Danielzick (aka. BodgeMaster) &ndash; All rights reserved.</p><script>let spans=["<span class=\"paper green\">","<span>"];let pre_texts=document.getElementsByTagName("pre");for(let i=0;i<pre_texts.length;i++){if(pre_texts[i].className!="paper")continue;let lines=pre_texts[i].innerHTML.split("\n");let result="";for(let j=0;j<lines.length;j++){if(lines[j].length>=80)result=result+spans[j%2]+lines[j]+"</span>\n";else result=result+spans[j%2]+lines[j]+" ".repeat(80-lines[j].length)+"</span>\n";}pre_texts[i].innerHTML=result;}fetch("./chapters.json").then(function(result){return result.json();}).then(function(json){let chapters=json.pages;for(let i=0;i<chapters.length;i++){if(chapters[i]===document.URL.replace(/^.*\//,"./")){let prevdiv=document.createElement("div");prevdiv.className="prev";if(i>0){prevdiv.innerHTML="<a href=\""+chapters[i-1]+"\">&#9667;</a>";}else{prevdiv.innerHTML="<p>&#9667;</p>";}document.body.appendChild(prevdiv);let nextdiv=document.createElement("div");nextdiv.className="next";if(i<chapters.length-1){nextdiv.innerHTML="<a href=\""+chapters[i+1]+"\">&#9657;</a>";}else{nextdiv.innerHTML="<p>&#9657;</p>";}document.body.appendChild(nextdiv);}}});</script></body></html>