| @@ -21,10 +21,12 @@ let strolling = false; | |||
| let unit = "metric"; | |||
| let numbers = "full"; | |||
| let numbers = "words"; | |||
| let verbose = true; | |||
| let autoVerbose = true; | |||
| let biome = "city"; | |||
| let newline = " "; | |||
| @@ -1052,7 +1054,7 @@ let macro = | |||
| if (self.cumStorage.amount > self.cumStorage.limit) | |||
| self.arouse(1 * (self.cumStorage.amount / self.cumStorage.limit - 1)); | |||
| setTimeout(function () { self.fillCum(self); }, 100); | |||
| update(); | |||
| `update`(); | |||
| }, | |||
| "fillFemcum": function(self) { | |||
| @@ -2796,14 +2798,35 @@ function tail_vore(count) | |||
| { | |||
| let lines = []; | |||
| let totalPrey = new Container(); | |||
| for (let i=0; i<count; i++) { | |||
| if (count <= 3) { | |||
| for (let i=0; i<count; i++) { | |||
| let area = macro.tailStretchGirth; | |||
| let prey = getPrey(biome, area, macro.sameSizeVore); | |||
| totalPrey = totalPrey.merge(prey); | |||
| let line = describe("tail-vore", prey, macro, verbose); | |||
| lines.push(line); | |||
| } | |||
| } else { | |||
| let area = macro.tailStretchGirth; | |||
| let prey = getPrey(biome, area, macro.sameSizeVore); | |||
| totalPrey = totalPrey.merge(prey); | |||
| let line = describe("tail-vore", prey, macro, verbose); | |||
| let i = 0; | |||
| for (i = 0; i < 10 && i < count; i++) { | |||
| let prey = getPrey(biome, area, macro.sameSizeVore); | |||
| for (var key in prey.contents) { | |||
| if (prey.contents.hasOwnProperty(key)) { | |||
| prey.contents[key].multiply(Math.ceil((count - i) / 10)); | |||
| } | |||
| } | |||
| totalPrey = totalPrey.merge(prey); | |||
| } | |||
| console.log(i + ", " + area + ", " + area * i); | |||
| let line = describe("tails-vore", totalPrey, macro, verbose).replace("$COUNT", number(count, numbers)); | |||
| lines.push(line); | |||
| } | |||
| let linesummary = summarize(totalPrey.sum(), false); | |||
| lines.push(linesummary); | |||
| @@ -3655,15 +3678,28 @@ function update(lines = []) | |||
| { | |||
| let log = document.getElementById("log"); | |||
| let oldHeight = log.scrollHeight; | |||
| lines.forEach(function (x) { | |||
| let line = document.createElement('div'); | |||
| line.innerHTML = transformNumbers(x); | |||
| log.appendChild(line); | |||
| }); | |||
| if (lines.length > 0) | |||
| if (lines.length > 0) { | |||
| log.scrollTop = log.scrollHeight; | |||
| let deltaHeight = log.scrollHeight - oldHeight; | |||
| if (deltaHeight / window.innerHeight >= 0.2 && verbose && autoVerbose) { | |||
| update(["Switching to simple text!", newline]); | |||
| autoVerbose = false; | |||
| toggle_verbose(); | |||
| } | |||
| } | |||
| document.getElementById("height").innerHTML = "Height: " + transformNumbers(length(macro.height, unit)); | |||
| document.getElementById("mass").innerHTML = "Mass: " + transformNumbers(mass(macro.totalMass, unit)); | |||
| @@ -20,7 +20,7 @@ function getDefault(name) { | |||
| return window[funcName]; | |||
| } | |||
| var actions = ["eat","chew","vomit","stomp","stomp-wedge","flex-toes","kick","anal-vore","ass-crush","tail-slap","tail-vore", | |||
| var actions = ["eat","chew","vomit","stomp","stomp-wedge","flex-toes","kick","anal-vore","ass-crush","tail-slap","tail-vore","tails-vore", | |||
| "cleavage-stuff","cleavage-crush","cleavage-drop","cleavage-absorb","breast-crush", | |||
| "breast-vore","breast-milk","unbirth","sheath-stuff","sheath-clench","sheath-crush", | |||
| "sheath-absorb","cock-vore","cockslap","ball-smother","male-spurt","male-orgasm","female-spurt", | |||
| @@ -255,6 +255,17 @@ function defaultTailVore(container, macro, verbose) { | |||
| ". It scarfs down everything in a second, gulping forcefully and pulling your prey inside."; | |||
| } | |||
| function defaultTailsVore(container, macro, verbose) { | |||
| if (container.count == 0) | |||
| return "Your drooling tails swing to and fro"; | |||
| else if (isFatal(macro)) | |||
| return "Your $COUNT tails lunge, maws agape, at " + container.describe(verbose) + | |||
| ". They scarf down everything in seconds, gulping forcefully to drag your prey into your sloppy confines."; | |||
| else | |||
| return "Your $COUNT tails lunge, maws agape, at " + container.describe(verbose) + | |||
| ". They scarf down your prey, gulping forcefully and pulling them deep inside."; | |||
| } | |||
| function defaultCleavageStuff(container, macro, verbose) { | |||
| if (container.count == 0) | |||
| return "You can't fit anything into your cleavage right now."; | |||
| @@ -384,6 +384,18 @@ function distribution(min, max, samples) { | |||
| return result; | |||
| } | |||
| function defaultMultiply(thing) { | |||
| return function(amount) { | |||
| thing.count *= amount; | |||
| for (var key in thing.contents) { | |||
| if (thing.contents.hasOwnProperty(key)) { | |||
| thing.contents[key].multiply(amount); | |||
| } | |||
| } | |||
| }; | |||
| } | |||
| function defaultArea(thing) { | |||
| return areas[thing.name]; | |||
| } | |||
| @@ -429,6 +441,7 @@ function listSum(sum) { | |||
| return merge_things(result); | |||
| } | |||
| function defaultSum(thing) { | |||
| return function() { | |||
| var counts = {}; | |||
| @@ -486,6 +499,7 @@ function DefaultEntity() { | |||
| this.mass = defaultMass; | |||
| this.sum_property = defaultSumProperty; | |||
| this.merge = defaultMerge; | |||
| this.multiply = defaultMultiply; | |||
| return this; | |||
| } | |||
| @@ -324,7 +324,7 @@ | |||
| <div class="action-tab" id="actions-options"> | |||
| <button class="stat-button" id="button-arousal">Arousal On</button> | |||
| <button class="stat-button" id="button-stroll">Status: Standing</button> | |||
| <button class="stat-button" id="button-numbers">Numbers: Full</button> | |||
| <button class="stat-button" id="button-numbers">Numbers: Words</button> | |||
| <button class="stat-button" id="button-units">Units: Metric</button> | |||
| <button class="stat-button" id="button-verbose">Verbose Text</button> | |||
| <button class="stat-button" id="button-dark-mode-game">Toggle Dark Mode</button> | |||