added TADS 1 and 2

This commit is contained in:
2025-04-04 20:28:38 +02:00
parent a02224cdc8
commit 3d894c54fc
45 changed files with 492 additions and 16 deletions

View File

@@ -13,7 +13,7 @@
<div class="text-container">
<p> 20232025 <i>denizk0461</i></p>
</div>
<img onclick={playSound} title="the bottom rat" class="bottom-rat clickable" src="common/rat/spookyrat.webp">
<img onclick={playSound} title="the bottom rat" class="bottom-rat clickable" src="/common/rat/spookyrat.webp">
</footer>
<style>

2
src/routes/+layout.js Normal file
View File

@@ -0,0 +1,2 @@
export const prerender = true;
export const trailingSlash = 'always';

View File

@@ -2,8 +2,6 @@
import Header from "$lib/header.svelte";
import Footer from "$lib/footer.svelte";
export const prerender = true;
let { children } = $props();
</script>

View File

@@ -20,7 +20,7 @@
<title>Projects | denizk0461</title>
</svelte:head>
<BannerTitle title="My Disordered Projects" banner="projects/banner.webp" />
<BannerTitle title="My Disordered Projects" banner="/projects/banner.webp" />
<p>This is a listing of some of my more noteworthy projects that can be found on the web.</p>

View File

@@ -7,9 +7,9 @@
<title>Daisy FM Synth | denizk0461</title>
</svelte:head>
<BannerTitle title="Daisy FM Synth" banner="daisyfm/banner.webp" />
<BannerTitle title="Daisy FM Synth" banner="/projects/daisyfm/banner.webp" />
<img src="daisyfm/fullview.webp">
<img src="/projects/daisyfm/fullview.webp">
<p>A friend showed me the <a href="https://electro-smith.com/products/daisy-seed">Daisy Seed</a>, an Arduino-compatible microcontroller made for developing audio equipment. With a little bit of motivation and absolutely no experience in either programming synthesisers or electronics in general, I quickly got my hands on one and started to toy around.</p>
@@ -45,8 +45,8 @@
<p>I split the PCB into four layers, separating power, ground, digital signals (switches and toggle), and analogue signals (potentiometers, audio out). I made some exceptions, such as for the waveform buttons, since they cross the playing key traces.</p>
<div class="horizontally-centre-aligned">
<img src="daisyfm/pcb-sketch.webp">
<img src="daisyfm/pcb-empty.webp">
<img src="/projects/daisyfm/pcb-sketch.webp">
<img src="/projects/daisyfm/pcb-empty.webp">
</div>
<p>The PCB was manufactured by <a href="https://jlcpcb.com/">JLCPCB</a>.</p>
@@ -59,8 +59,8 @@
<p>Alternatively, if your USB-C breakout board does not have CC pins exposed, there's a chance you could still connect pulldown resistors to make it compatible. On <a href="https://www.amazon.de/dp/B09FPZDDD9">this breakout board</a> I purchased on Amazon, I discovered that the third pin from the right exposes a CC connection. Wiring a resistor between this pin and ground enabled C-to-C functionality. If you want to test the functionality before soldering, you can hold a resistor between this pin and either the ground connector on the board or the USB port's outer shell, since that one's grounded as well.</p>
<div class="horizontally-centre-aligned">
<img src="daisyfm/usbc-breakout-small.webp">
<img src="daisyfm/hand.webp">
<img src="/projects/daisyfm/usbc-breakout-small.webp">
<img src="/projects/daisyfm/hand.webp">
</div>
<p>Do keep in mind that this type of connector does not have mounting holes and requires either a more sophisticated mounting mechanism in the chassis, hot glue, or both. Also, soldering to this pin is insanely finicky, since it is VERY small, so I strongly recommend a breakout board such as <a href="https://www.reichelt.de/entwicklerboards-usb-typ-c-adapterboard-buchse-debo-usb-c-f-p376522.html">this one by Soldered</a> that exposes the CC pins.</p>

View File

@@ -22,7 +22,7 @@
{#snippet devlogPost({post}: {post: DevlogPost})}
<a href="devlog/{post.date}/" class="post">
<a href="/projects/projectn5/devlog/{post.date}/" class="post">
{#if post.banner}
<img class="post-img notched" src="/projects/projectn5/devlog/{post.date}/{post.banner}">
{:else}

View File

@@ -49,7 +49,7 @@
<img src="/projects/projectn5/devlog/202311/2023-11-02_01.webp">
<h2>A Star is Born</h2>
<p>I begun modelling my protagonist! I didn't progress far, as I currently lack a vision for where I really want my character to go in detail. I have slight ideas inspirations are, for example, <a href="https://hero.fandom.com/wiki/Merc_and_Green">Merc & Green from Ratchet: Gladiator</a>, and <a href="denholm.webp">Denholm Reynholm</a>. I quite liked the idea of having glowing tubes on the character's back; I got the inspiration from a Blender tutorial that was randomly recommended to me one morning.</p>
<p>I begun modelling my protagonist! I didn't progress far, as I currently lack a vision for where I really want my character to go in detail. I have slight ideas inspirations are, for example, <a href="https://hero.fandom.com/wiki/Merc_and_Green">Merc & Green from Ratchet: Gladiator</a>, and <a href="/projects/projectn5/devlog/202311/denholm.webp">Denholm Reynholm</a>. I quite liked the idea of having glowing tubes on the character's back; I got the inspiration from a Blender tutorial that was randomly recommended to me one morning.</p>
<div class="horizontally-centre-aligned">
<img src="/projects/projectn5/devlog/202311/2023-11-11_05.webp">
<img src="/projects/projectn5/devlog/202311/2023-11-12_01.webp">

View File

@@ -78,7 +78,7 @@ for enemy_resource in enemies &lbrace;
<img alt="A crude sketch of a blaster resembling the 3D model shown above." src="/projects/projectn5/devlog/20240401/venom_sketch.webp">
</div>
<p>The bolt visible in the first sketch actually makes me consider using <a href="../20240323/#new-weapon">the model I showed off recently</a> as the v2 for the Venom (which I would call Antidote by the way, in reference to <a href="https://youtu.be/fbafd6UV3w4">this song</a>).</p>
<p>The bolt visible in the first sketch actually makes me consider using <a href="/projects/projectn5/devlog/20240323/#new-weapon">the model I showed off recently</a> as the v2 for the Venom (which I would call Antidote by the way, in reference to <a href="https://youtu.be/fbafd6UV3w4">this song</a>).</p>
<h2 id="n5-glow">N5 Blaster glow!</h2>

View File

@@ -140,7 +140,7 @@
<h2 id="retro">Retrospective</h2>
<p>It's been almost 14 months of working on Project N5 sometimes actively, with occasional breaks in-between. Can you believe that this game started from <i>this?</i> (video from <a href="/projects/projectn5/devlog/2023/09/#header-0">2023-09-16</a>)</p>
<p>It's been almost 14 months of working on Project N5 sometimes actively, with occasional breaks in-between. Can you believe that this game started from <i>this?</i> (video from <a href="/projects/projectn5/devlog/202309/#header-0">2023-09-16</a>)</p>
<Video src="/projects/projectn5/devlog/202309/2023-09-16_00.mp4" />

View File

@@ -42,7 +42,7 @@
<p>Laura's hair is now separate from her main mesh. The main mesh is rigged using a metarig generated through Rigify, whereas the hair has a manually-created armature. Also, the hair is split into the front part and the back part, separated by the hair band (which is part of the main mesh). This allows me to replace the flowing back hair with a ponytail easily in-engine without swapping out the entire character.</p>
<p>This is pretty cool, because I can now create scenes for each hairstyle, set them up with <a href="../20241222/#hair-animation">jiggle bones</a> to create flowing hair, and essentially add a toggle to switch between them in-game!</p>
<p>This is pretty cool, because I can now create scenes for each hairstyle, set them up with <a href="/projects/projectn5/devlog/20241222/#hair-animation">jiggle bones</a> to create flowing hair, and essentially add a toggle to switch between them in-game!</p>
<h2 id="rigify">Rigging and Using Blender's Rigify</h2>

View File

@@ -42,7 +42,7 @@
<p>I think Laura (being born in the 28th century) should look more futuristic, more interesting, and just overall more unique! I also want to make changes to aspects such as her hair, because while I have found out how to animate it in-game, it looks pretty unappealing. Plus, laying the back hair was kind of difficult; making it follow the flow of her shoulders meant that it would not deform properly when running. Making it straight would mean it clips through her torso when standing still. I <i>do</i> have an idea for how to fix that by modelling it straight and then placing a capsule as collision shape for the <code>SpringBoneSimulator3D</code> but this didn't even exist when I modelled Laura.</p>
<p>Also, I think I want to go with <a href="../20250203/#hair">tied-up hair</a> instead. Not only does it animate much easier without clipping, but it'll give Laura a more unique silhouette, I believe!</p>
<p>Also, I think I want to go with <a href="/projects/projectn5/devlog/20250203/#hair">tied-up hair</a> instead. Not only does it animate much easier without clipping, but it'll give Laura a more unique silhouette, I believe!</p>
<p>I've been doing some sketching in a new B5-sized (much better size than A5 for sketches, I reckon) notebook, and I'm quite excited for this.</p>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 861 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 615 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

View File

@@ -0,0 +1,99 @@
@import url('https://fonts.upset.dev/css2?family=Bricolage+Grotesque&family=Lato&family=Borel&family=Kanit:ital@1&display=swap');
html {
scroll-behavior: smooth;
}
* {
font-family: 'Lato', sans-serif;
}
h1, h2, h3, h4, h5, h6 {
color: var(--color-on-primary);
font-family: 'Kanit', sans-serif;
}
.fancy-header {
font-family: 'Borel', serif;
}
:root {
--text-color: #212121;
--color-on-primary: #e0e0e0;
--primary: #3a433c;
--secondary: #819688;
--tertiary: #7296a4;
--neutral: #8f918e;
--color-background: #121212;
--color-text: #e3e3e3;
--color-button-border: #24c76c;
}
body {
background-color: var(--color-background);
max-width: 35cm;
margin: auto;
}
p {
color: var(--color-on-primary);
}
span {
color: var(--color-on-primary);
}
.styled-button {
padding: 8px;
font-size: 0.9em;
font-family: 'Lato', sans-serif;
border-radius: 12px;
color: var(--color-text);
border-color: var(--color-button-border);
background-color: var(--color-background);
}
.page-header-div {
position: relative;
text-align: center;
}
.page-header-text {
margin: 12px 24px;
font-size: 3em;
/* display: flex; */
margin-left: auto;
margin-right: auto;
width: fit-content;
text-align: center;
}
.page-header {
margin: 8px 0px 0px 0px;
}
.page-subheader {
margin: 0px 0px 8px 0px;
}
.page-header-banner {
background-color: #24c76c;
}
.page-header-image {
width: 100%;
filter: brightness(70%);
}
.clickable {
cursor: pointer;
}
/* unvisited link */
a:link {
color: #c2e8ff;
}
/* visited link */
a:visited {
color: #ffd7f0;
}
/* mouse over link */
a:hover {
color: #ffdad5;
}
.centered {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.page-content {
margin: 0px 32px;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -0,0 +1,63 @@
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<meta name='viewport' content='width=device-width'>
<title>Totally Accurate Dating Simulator</title>
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/projects/tads/pagestyle.css">
<script>
let playerNameEmptyError = "Your name cannot be nothing, silly.";
let promisingButtonText = "Find hot girls";
let disillusionedButtonText = "Continue being sad";
let loserText = "There are hot girls around, but they are not interested in ";
var isButtonClicked = false;
var playerName;
window.onload = function() {
document.getElementById("button").innerText = promisingButtonText;
document.getElementById("datingsim").style.display = "none";
}
function finishPrep() {
let name = document.getElementById("playerName").value;
if (name.trim() === "") {
document.getElementById("error").innerText = playerNameEmptyError;
return;
}
playerName = name;
document.getElementById("prep").style.display = "none";
document.getElementById("datingsim").style.display = "block";
}
function datingSimButton() {
if (isButtonClicked) {
document.getElementById("text").innerText = "";
document.getElementById("button").innerText = promisingButtonText;
} else {
document.getElementById("text").innerText = loserText + playerName + ".";
document.getElementById("button").innerText = disillusionedButtonText;
}
isButtonClicked = !isButtonClicked;
}
</script>
</head>
<body>
<h1 class="fancy-header">Totally Accurate Dating Simulator</h1>
<div id="prep">
<input id="playerName"/>
<p id="error"></p>
<button onclick="finishPrep()">Get dating!</button>
</div>
<div id="datingsim">
<p id="text"></p>
<button id="button" onclick="datingSimButton()">Find hot girls</button>
</div>
</body>
</html>

View File

@@ -0,0 +1,302 @@
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<meta name='viewport' content='width=device-width'>
<title>Totally Accurate Dating Simulator 2</title>
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/projects/tads/pagestyle.css">
<script>
let playerNameEmptyError = "Your name cannot be nothing, silly.";
let promisingButtonText = "Find hot girls";
let disillusionedButtonText = "Continue being sad";
let baldiImages = [
"baldicampertalk.webp", // 1
"baldiwaveparty.webp",
"baldifarmerspank.webp",
"baldicrying.webp",
"spacerat.png", // 5
"red.webp",
"cena.jpeg",
"vaso1.png",
"vaso2.png",
"dannyass.png", // 10
"batman.jpeg",
"homersweet.jpg",
"california.jpg",
"dream.gif",
"frax.png", // 15
"sandwich.png",
"sonicgood.png",
"sonicbad.png",
"toilet.jpg",
"nook.png", // 20
"garry.jpg",
"bigsmoke.png",
"biden.png",
"burn.jpg",
"reigns.png", // 25
"helga.png",
"deniz.gif",
"isa.png"
];
let baldiTexts;
function initBaldiTexts() {
baldiTexts = [
`${playerName} just met Baldi as he returned from a camping trip! Baldi is eager to talk to ${playerName} and they form a lasting friendship`,
`${playerName} just met Baldi after he went to a party and he is drunk as fuck, he touches ${playerName}'s bum and ${playerName} reports Baldi to the police for sexual assault`,
`${playerName} meets Baldi, and he is horny as fuck. Fortunately, ${playerName} is also in the mood for it. Baldi has a stick ready to spank ${playerName}`,
`${playerName} meets Baldi as he is having an existential crisis. Baldi doesn't know what to do with his life and neither does ${playerName} so they cry together`,
`${playerName} meets a space rat from 3000 years into the future. The space rat does not speak ${playerName}'s language. The space rat pulls out a rocket launcher and ${playerName} runs away`,
`${playerName} meets red\n\nthat's kinda sus`,
`${playerName} meets John Cena. Or at least ${playerName} thinks so, because ${playerName} cannot see him`,
`${playerName} encounters Vaso, but he doesn't look too well. ${playerName} calls an ambulance and Vaso dies in the hospital, holding ${playerName}'s hand, sharing his last moments with ${playerName}`,
`${playerName} meets Vaso! He is excited to tell ${playerName} all about how Outer Wilds has changed his life, and how it will change ${playerName}'s life as well`,
`${playerName} bears witness to a weird couple doing fetish things in public. They ask ${playerName} if they would like to join, but ${playerName} declines and dies alone`,
`${playerName} encounters plagiarism Batman and Robin. They discover that ${playerName} didn't correctly cite Karl Marx in an essay ${playerName} submitted 4 years ago, and they run over ${playerName} with the Batmobile`,
`${playerName} sees Homer Simpson wielding a bat. Homer wants to protect ${playerName}. ${playerName} and Homer live happily ever after`,
`${playerName} meets the US state California. It is on fire due to climate change and ${playerName} suffocates from smoke inhalation`,
`${playerName} approaches Vaso's dream girl. Vaso notices and punches ${playerName} to death`,
`${playerName} meets Fraxiom at a rave. Fraxiom wants to fantasize about being or kissing Skrillex. Rejected, ${playerName} walks away and drowns their sadness in alcohol`,
`${playerName} sees a sandwich lying on the floor. ${playerName} picks it up and begins to eat it. ${playerName} realizes that they just ate a potential lover, and that they will be forever alone`,
`${playerName} meets Sonic from the Sonic the Hedgehog series! Sonic takes one look at ${playerName} and proceeds to run away as far as possible at top speed`,
`${playerName} meets Sonic from the Sonic the Hedgehog series! But it's the original design from the movie, so ${playerName} decides to pretend they don't speak Sonic's language and walks away`,
`${playerName} sees a cool toilet. ${playerName} realizes that the toilet is a metaphor for how ${playerName}'s life is going down the shitter, so ${playerName} goes to cry in the shower`,
`${playerName} meets Tom Nook. Tom Nook is here to collect the 2,498,000 bell debt that ${playerName} has not paid off in 28 months. Tom Nook shoots ${playerName}`,
`${playerName} meets Garry! But Garry is too busy with creating the base game groundwork for renowned fantasy shooter Team Fortress 2`,
`${playerName} meets up with Big Smoke from Grand Theft Auto: San Andreas, and they go out for a meal at the Cluckin' Bell. Big Smoke orders two number 9s, a number 9 large, a number 6 with extra dip, a number 7, two number 45s, one with cheese, and a large soda. ${playerName} is embarrassed, runs away, and gets caught in the crossfire of a drive-by shooting`,
`${playerName} gets invited to the White House and has the pleasure of meeting Joe Biden. ${playerName} tells Joe Biden their name, and Joe Biden responds: "nice to meet you ${playerName.shuffle()}!" ${playerName} decides to leave the state of Washington`,
`Unable to find a lover, ${playerName} travels towards the sun and burns to death`,
`${playerName} meets Roman Reigns! ${playerName} boos him and quickly regrets it, as Roman Reigns is filled with hatred and all members of the Bloodline body slam ${playerName} out of existence`,
`${playerName} meets Helga von Streissenburgen! She tells ${playerName} that they are too weak, weak, weak, and that they could eat them for breakfast, so Helga fries up some robot bacon alongside ${playerName} and eats them`,
`${playerName} meets Deniz! Unfortunately, Deniz is busy creating a dating simulator and has no time for ${playerName}`,
`${playerName} meets Isabel! She is lonely and watches all the cool kids from her window. ${playerName} joins Isabel and they are lonely together`
];
}
let viewPrep, viewButtons, viewAnswer, text;
var userPreference;
var playerName;
window.onload = function() {
viewPrep = document.getElementById("viewPrep");
viewButtons = document.getElementById("viewButtons");
viewAnswer = document.getElementById("viewAnswer");
text = document.getElementById("text");
viewPrep.style.display = "block";
viewButtons.style.display = "none";
viewAnswer.style.display = "none";
document.getElementById("viewCheater").style.display = "none";
document.getElementById("buttonHotGirls").style.display = "block";
document.getElementById("buttonHotGuys").style.display = "block";
document.getElementById("buttonCuteGirls").style.display = "none";
document.getElementById("buttonCuteGuys").style.display = "none";
document.getElementById("buttonNormalGirls").style.display = "none";
document.getElementById("buttonNormalGuys").style.display = "none";
document.getElementById("buttonAnyGirl").style.display = "none";
document.getElementById("buttonAnyGuy").style.display = "none";
document.getElementById("buttonLiterallyAny").style.display = "none";
}
String.prototype.shuffle = function () {
var a = this.split(""),
n = a.length;
for(var i = n - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
return a.join("");
}
function finishPrep() {
let name = document.getElementById("playerName").value;
if (name.trim() === "") {
document.getElementById("error").innerText = playerNameEmptyError;
return;
}
if (name.trim() === "cheater") {
showCheaterMenu();
return;
}
playerName = name.trim();
viewPrep.style.display = "none";
viewButtons.style.display = "block";
document.getElementById("cheaterDescription").innerText = `Pick a number from 1-${baldiImages.length + 1}`;
initBaldiTexts();
}
function hotGirls() {
document.getElementById("buttonHotGirls").onclick = alreadyTried;
userPreference = "girl";
document.getElementById("buttonHotGuys").style.display = "none";
document.getElementById("buttonCuteGirls").style.display = "block";
showAnswer(
`There are hot girls around, but they are not interested in ${playerName}`,
"Look around some more"
);
}
function hotGuys() {
document.getElementById("buttonHotGuys").onclick = alreadyTried;
userPreference = "guy";
document.getElementById("buttonHotGirls").style.display = "none";
document.getElementById("buttonCuteGuys").style.display = "block";
showAnswer(
`There are hot guys around, but they are not interested in ${playerName}`,
"Look around some more"
);
}
function cute() {
document.getElementById("buttonCuteGirls").onclick = alreadyTried;
document.getElementById("buttonCuteGuys").onclick = alreadyTried;
if (userPreference == "girl") {
document.getElementById("buttonNormalGirls").style.display = "block";
} else {
document.getElementById("buttonNormalGuys").style.display = "block";
}
showAnswer(
`A cute ${userPreference} walks by, ${playerName} waves at them but the ${userPreference} pretends they didn't see that`,
":("
);
}
function normal() {
document.getElementById("buttonNormalGirls").onclick = alreadyTried;
document.getElementById("buttonNormalGuys").onclick = alreadyTried;
if (userPreference == "girl") {
document.getElementById("buttonAnyGirl").style.display = "block";
} else {
document.getElementById("buttonAnyGuy").style.display = "block";
}
showAnswer(
`${playerName} sees a group of ${userPreference}s but ${playerName} is too scared to talk to any of them`,
"maybe another time"
);
}
function any() {
document.getElementById("buttonAnyGirl").onclick = alreadyTried;
document.getElementById("buttonAnyGuy").onclick = alreadyTried;
document.getElementById("buttonLiterallyAny").style.display = "block";
showAnswer(
`Losing patience, ${playerName} approaches a ${userPreference} but they already have a partner and tell ${playerName} to leave`,
"oof really?"
);
}
function random(min,max) {
return Math.floor((Math.random())*(max-min+1))+min;
}
function literallyany(i) {
document.getElementById("answerButton").onclick = null;
showAnswer(
baldiTexts[i],
`Ending ${i + 1} of ${baldiImages.length}`
);
document.getElementById("baldiImage").src = `/projects/tads/${baldiImages[i]}`;
}
function literallyanyButton() {
literallyany(random(0, baldiImages.length - 1));
}
function returnToOverview() {
viewButtons.style.display = "block";
viewAnswer.style.display = "none";
}
function alreadyTried() {
showAnswer(
`${playerName} considers it but then decides against it, because it would only end in disappointment`,
"depressing but ok"
);
}
function showAnswer(answer, buttonText) {
text.innerText = answer;
document.getElementById("answerButton").innerText = buttonText;
viewButtons.style.display = "none";
viewAnswer.style.display = "block";
}
function showCheaterMenu() {
viewPrep.style.display = "none";
document.getElementById("viewCheater").style.display = "block";
}
function buttonCheater() {
let index = document.getElementById("cheater").value;
if (baldiImages[index - 1] == undefined) {
document.getElementById("cheaterError").innerText = `'${index}' does not exist`;
return;
}
playerName = "cheater";
initBaldiTexts();
document.getElementById("viewCheater").style.display = "none";
literallyany(index - 1);
}
</script>
</head>
<body>
<h1 class="fancy-header">Totally Accurate Dating Simulator 2</h1>
<div id="viewPrep">
<p>Enter your name, dating padawan:</p>
<input id="playerName"/>
<p id="error"></p>
<button onclick="finishPrep()">Get dating!</button>
</div>
<div id="viewButtons">
<button id="buttonHotGirls" onclick="hotGirls()">Find hot girls</button>
<button id="buttonHotGuys" onclick="hotGuys()">Find hot guys</button>
<button id="buttonCuteGirls" onclick="cute()">Find cute girls</button>
<button id="buttonCuteGuys" onclick="cute()">Find cute guys</button>
<button id="buttonNormalGirls" onclick="normal()">Find normal girls</button>
<button id="buttonNormalGuys" onclick="normal()">Find normal guys</button>
<button id="buttonAnyGirl" onclick="any()">Find any girl</button>
<button id="buttonAnyGuy" onclick="any()">Find any guy</button>
<button id="buttonLiterallyAny" onclick="literallyanyButton()">Really, no one??</button>
</div>
<div id="viewAnswer">
<p id="text"></p>
<img id="baldiImage"/>
<button id="answerButton" onclick="returnToOverview()"></button>
</div>
<div id="viewCheater">
<h3>CHEATER CHEATER CHEATER</h3>
<p id="cheaterDescription"></p>
<input id="cheater"/>
<p id="cheaterError"></p>
<button onclick="buttonCheater()">THAT'S RIGHT WE'RE GONNA CHEAT</button>
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -12,6 +12,18 @@ const config = {
preprocess: false,
strict: true,
}),
prerender: {
handleHttpError: ({ path, referrer, message }) => {
// ignore deliberate link to shiny 404 page
if (path === '/swordsnstuff' || path === '/projects/tads/tads1' || path === '/projects/tads/tads2') {
return;
}
// otherwise fail the build
throw new Error(message);
},
handleMissingId: 'ignore',
},
},
};