From cb0525121908f52d08f2b8a73e74b9632bf38c5e Mon Sep 17 00:00:00 2001 From: Fen Dweller Date: Thu, 22 Feb 2018 14:28:04 -0500 Subject: [PATCH] Added a system for controlling brutality. Added some stomps --- game.js | 14 ++++++++++++ recursive-desc.js | 55 +++++++++++++++++++++++++++++++++++++++++------ stroll.html | 19 ++++++++++++++++ 3 files changed, 82 insertions(+), 6 deletions(-) diff --git a/game.js b/game.js index 69bc785..89de0af 100644 --- a/game.js +++ b/game.js @@ -467,6 +467,12 @@ var macro = this.growthPoints += Math.round(50 * mass / (this.scale*this.scale)); }, + // 0 = entirely non-fatal + // 1 = fatal, but not specific + // 2 = gory + + "brutality": 1, + "scale": 1, } @@ -1423,6 +1429,14 @@ function startGame(e) { macro[form[i].name] = parseFloat(form[i].value); else if (form[i].type == "checkbox") { macro[form[i].name] = form[i].checked; + } else if (form[i].type == "radio") { + if (form[i].checked) { + switch(form[i].id) { + case "brutality-0": macro.brutality = 0; break; + case "brutality-1": macro.brutality = 1; break; + case "brutality-2": macro.brutality = 2; break; + } + } } } } diff --git a/recursive-desc.js b/recursive-desc.js index 0350013..36859fb 100644 --- a/recursive-desc.js +++ b/recursive-desc.js @@ -14,6 +14,14 @@ rules["male-orgasm"] = []; rules["female-orgasm"] = []; rules["grind"] = []; +function isFatal(macro) { + return macro.brutality >= 1; +} + +function isGory(macro) { + return macro.brutality >= 2; +} + function hasNothing(container, thing, amount) { for (var key in container.contents) { if (container.contents.hasOwnProperty(key)) @@ -61,6 +69,7 @@ function nothingLarger(container, thing) { return true; } + function describe(action, container, macro, verbose=true) { options = []; @@ -70,8 +79,10 @@ function describe(action, container, macro, verbose=true) { } } - if (options.length > 0) - return options[0](container, macro, verbose); + if (options.length > 0) { + let choice = Math.floor(Math.random() * options.length); + return options[choice](container, macro, verbose); + } else { return describeDefault(action, container, macro, verbose); } @@ -136,7 +147,7 @@ rules["eat"].push({ "desc": function(container, macro, verbose) { return "You grasp " + container.describe() + " and greedily wolf them down, swallowing forcefully to cram them into your bulging stomach. A crass belch escapes your lips as they curl up in your slimy gut."; } -}) +}); rules["eat"].push({ "test": function(container, macro) { @@ -147,7 +158,7 @@ rules["eat"].push({ "desc": function(container, macro, verbose) { return "You crush the " + container.contents["Car"].describe() + " with your tight throat, washing it down with " + container.contents["Person"].describe(); } -}) +}); rules["eat"].push({ "test": function(container, macro) { @@ -160,7 +171,7 @@ rules["eat"].push({ and you suckle on it for a long moment before twisting your head to snap it loose. The entire building and the " + describe_all(container.contents["Small Skyscraper"].contents, verbose) + "\ within plunge into your roiling guts, along with some delicious treats you slurped up along with it - " + describe_all(container.contents, verbose, ["Small Skyscraper"]) + "."; } -}) +}); rules["eat"].push({ "test": function(container, macro) { @@ -175,4 +186,36 @@ rules["eat"].push({ down your sultry throat. Your gut bubbles as " + describe_all(container.contents["Small Skyscraper"].contents, verbose) + " are crunched and crushed within, along with the \ " + describe_all(container.contents, verbose, ["Small Skyscraper"]) + " that were unfortunate enough to be caught up by your slimy tongue."; } -}) +}); + +// STOMPING + +rules["stomp"].push({ + "test": function(container, macro) { + return hasOnly(container, ["Person"]) + && hasExactly(container, "Person", 1) + && isFatal(macro); + }, "desc": function(container, macro, verbose) { + return "Your heavy paw slams down on " + container.describe(verbose) + ", smashing the poor thing like an insect."; + } +}); + +rules["stomp"].push({ + "test": function(container, macro) { + return hasOnly(container, ["Person"]) + && hasExactly(container, "Person", 1) + && isGory(macro); + }, "desc": function(container, macro, verbose) { + return "Your paw thumps " + container.describe(verbose) + ", shoving your victim to the ground and cracking them open like an egg."; + } +}); + +rules["stomp"].push({ + "test": function(container, macro) { + return hasOnly(container, ["Person"]) + && hasExactly(container, "Person", 1) + && isGory(macro); + }, "desc": function(container, macro, verbose) { + return "Your shadow falls over " + container.describe(verbose) + ", and your paw follows, crushing their soft body and reducing them to a heap of broken gore."; + } +}); diff --git a/stroll.html b/stroll.html index 40f0c19..f67ac9e 100644 --- a/stroll.html +++ b/stroll.html @@ -131,6 +131,25 @@

+ Brutality:
+
Arousal: