From 6f8c69eff2db709b8cbb6a02bcb9931b96bf0d26 Mon Sep 17 00:00:00 2001 From: Fen Dweller Date: Mon, 19 Mar 2018 00:34:35 -0400 Subject: [PATCH] Added sadistic piss and scat. Added a way to roughly represent a number (millions of people) --- recursive-desc.js | 15 ++++++++++++++- units.js | 25 +++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/recursive-desc.js b/recursive-desc.js index ad269eb..1f177bf 100644 --- a/recursive-desc.js +++ b/recursive-desc.js @@ -681,18 +681,24 @@ function defaultPiss(container, macro, verbose) { if (macro.maleParts) { if (container.count == 0) { return "You sigh with relief as $VOLUME of piss erupts from your " + macro.describeDick + " cock."; + } else if (isSadistic(macro)) { + return "You sigh with relief as $VOLUME of hot, rancid piss erupts from your " + macro.describeDick + " cock, inundating " + container.describe(verbose) + " in a disgusting tide of yellow death." } else { return "You sigh with relief as $VOLUME of piss erupts from your " + macro.describeDick + " cock, spraying down " + container.describe(verbose) + " in a shower of golden, musky fluid."; } } else if (macro.femaleParts) { if (container.count == 0) { return "You sigh with relief as $VOLUME of piss erupts from your " + macro.describeVagina + " slit."; + } else if (isSadistic(macro)) { + return "You sigh with relief as $VOLUME of hot, rancid piss erupts from your " + macro.describeVagina + " slit, inundating " + container.describe(verbose) + " in a disgusting tide of yellow death." } else { return "You sigh with relief as $VOLUME of piss erupts from your " + macro.describeVagina + " slit, spraying down " + container.describe(verbose) + " in a shower of golden, musky fluid."; } } else { if (container.count == 0) { return "You sigh with relief as $VOLUME of piss erupts from between your legs."; + } else if (isSadistic(macro)) { + return "You sigh with relief as $VOLUME of hot, rancid piss erupts from between your legs, inundating " + container.describe(verbose) + " in a disgusting tide of yellow death." } else { return "You sigh with relief as $VOLUME of piss erupts from between your legs, spraying down " + container.describe(verbose) + " in a shower of golden, musky fluid."; } @@ -715,9 +721,16 @@ function defaultBladderVore(container, macro, verbose) { } function defaultScat(container, macro, verbose) { + let sum = get_living_prey(container.sum()); if (macro.scatStorage.amount == 0) { return "Your bowels are empty."; - } else if (macro.brutality > 0 && macro.scatStorage.victims.amount > 0) { + } else if (isSadistic(macro)) { + let line = "You squat down, letting out a grunt as your rancid bowels force out a $MASS, $LENGTH-long heap of shit. The fatally-pungent scat buries " + container.describe(verbose) + ", ending " + numberRough(sum,"of") + " lives and entombing them in your shit."; + if (macro.scatStorage.victims.count > 0) { + line += " Embedded in the vomit-inducing heap are the mangled, crushed remains of " + listSum(macro.scatStorage.victims.sum()) + ", " + numberRough(get_living_prey(macro.scatStorage.victims.sum()), "of") + " living creatures converted to noxious scat by your disgusting depths."; + } + return line; + } else if (macro.brutality > 0 && macro.scatStorage.victims.count > 0) { return "You squat down, grunting as your lower guts squeeze out a $MASS, $LENGTH-long log of scat that smothers " + container.describe(verbose) + ". Embedded in the thick, chunky waste are the remains of " + listSum(macro.scatStorage.victims.sum()) + ", now little more than bones and wreckage in your shit."; } else { return "You squat down, grunting as your lower guts squeeze out a $MASS, $LENGTH-long log of scat that smothers " + container.describe(verbose); diff --git a/units.js b/units.js index 3201348..85ea806 100644 --- a/units.js +++ b/units.js @@ -4,6 +4,31 @@ function round(number,precision=3) { return Math.round(number*Math.pow(10,precision)) / Math.pow(10,precision); } +function numberRough(value,suffix="") { + var scale = Math.floor(Math.log10(value)); + switch(scale) { + case 0: return "a single"; + case 1: return "dozens " + suffix; + case 2: return "hundreds " + suffix; + default: + let prefix = ""; + + if (scale % 3 == 1) + prefix = "tens of "; + else if (scale % 3 == 2) + prefix = "hundreds of "; + + let order = Math.floor(scale/3); + + switch(order) { + case 1: return prefix + "thousands " + suffix; + case 2: return prefix + "millions " + suffix; + case 3: return prefix + "billions " + suffix; + case 4: return prefix + "trillions " + suffix; + case 5: return "uncountably many"; + } + } +} function number(value, type="full", precision=3) { var val = parseFloat(value); switch(type) {