diff --git a/game.js b/game.js index 6357da3..8205df1 100644 --- a/game.js +++ b/game.js @@ -787,14 +787,21 @@ let macro = "gooEnabled": true, "gooMolten": false, + "gooDigestion": true, "goo": { "name" : "goo", "setup": function(owner) { this.owner = owner; + for (let i = 0; i < this.stages; i++) this.contents.push(new Container()); - owner.digest(owner,this); + + if (owner.gooDigestion) { + owner.digest(owner,this); + } + + }, "feed": function(prey) { this.feedFunc(prey,this,this.owner); @@ -803,7 +810,8 @@ let macro = this.contents[0] = this.contents[0].merge(prey); }, "describeDigestion": function(container) { - return describe("goo",container,this.owner,verbose); + add_victim_people("goo", container); + return describe("goo-digest",container,this.owner,verbose); }, "fill": function(owner,container) { @@ -817,7 +825,7 @@ let macro = if (prey.count == 0) { return "You contain no prey."; } else { - if (macro.gooDigestion > 0) { + if (macro.gooDigestion) { return "Your gooey body contains " + prey.describe(false) + ", gradually absorbing them into your bulk."; } else { return "Your gooey body contains " + prey.describe(false) + "."; @@ -928,6 +936,7 @@ let macro = this.breasts.setup(this); this.bladder.setup(this); this.souls.setup(this); + this.goo.setup(this); this.cumStorage.owner = this; this.femcumStorage.owner = this; this.milkStorage.owner = this; @@ -1358,6 +1367,10 @@ let macro = result.push(line); + if (this.gooMolten) { + result.push(this.goo.description); + } + return result; }, @@ -1530,11 +1543,11 @@ function summarize(sum, fatal = true) let word; let count = get_living_prey(sum); if (fatal && macro.brutality > 0) - word = count == 1 ? "kills" : "kill"; + word = count != 1 ? "kills" : "kill"; else if (!fatal && macro.brutality > 0) word = "prey"; else - word = count == 1 ? "victims" : "victim"; + word = count != 1 ? "victims" : "victim"; return "(" + count + " " + word + ")"; } @@ -1713,10 +1726,15 @@ function chew() function stomp() { + if (macro.gooMolten) { + stomp_goo(); + return; + } + let area = macro.pawArea; let prey = getPrey(biome, area, macro.sameSizeStomp); let line = describe("stomp", prey, macro, verbose); - let linesummary = summarize(prey.sum(), true); + let linesummary = summarize(prey.sum(), false); let people = get_living_prey(prey.sum()); @@ -1773,6 +1791,31 @@ function stomp_wedge() { update([sound,line,linesummary,newline]); } +function stomp_goo() { + let area = macro.pawArea; + let prey = getPrey(biome, area, macro.sameSizeStomp); + let line = describe("stomp-goo", prey, macro, verbose); + let linesummary = summarize(prey.sum(), true); + + let people = get_living_prey(prey.sum()); + + let preyMass = prey.sum_property("mass"); + + let sound = getSound("goo",preyMass); + + macro.addGrowthPoints(preyMass); + + macro.goo.feed(prey); + + update([sound,line,linesummary,newline]); + + macro.arouse(5); + + if (macro.stenchEnabled) { + paw_stench(); + } +} + function flex_toes() { let prey = new Container(); @@ -1894,6 +1937,11 @@ function anal_vore() function sit() { + if (macro.gooMolten) { + sit_goo(); + return; + } + let area = macro.assArea; let crushed = getPrey(biome, area, macro.sameSizeStomp); @@ -1919,6 +1967,33 @@ function sit() } } +function sit_goo() +{ + let area = macro.assArea; + let prey = getPrey(biome, area, macro.sameSizeStomp); + + let line = describe("ass-goo", prey, macro, verbose); + let linesummary = summarize(prey.sum(), false); + + let people = get_living_prey(prey.sum()); + + let crushedMass = prey.sum_property("mass"); + + let sound = getSound("goo",crushedMass); + + macro.goo.feed(prey); + + macro.addGrowthPoints(crushedMass); + + update([sound,line,linesummary,newline]); + + macro.arouse(15); + + if (macro.stenchEnabled) { + ass_stench(); + } +} + function ass_stench() { let area = macro.assStenchArea; @@ -2863,10 +2938,27 @@ function scat(vol) { macro.arouse(50); } +function setButton(button, state) { + if (state) { + enable_button(button); + } else { + disable_button(button); + } +} + +function gooButtons(molten) { + setButton("melt", !molten); + setButton("solidify", molten); + setButton("push-stomach", molten); + setButton("pull-stomach", molten); +} + function melt() { macro.gooMolten = true; + gooButtons(macro.gooMolten); + let line = describe("melt", new Container(), macro, verbose); update([line, newline]); @@ -2874,6 +2966,10 @@ function melt() function solidify() { + macro.gooMolten = false; + + gooButtons(macro.gooMolten); + let prey = new Container(); macro.goo.contents.forEach(function(x) { prey = prey.merge(x); @@ -2889,10 +2985,9 @@ function solidify() let sound = getSound("insert",preyMass); - macro.gooMolten = false; - - if (macro.gooDigest) { + if (macro.gooDigestion) { update([sound, line, linesummary, newline]); + add_victim_people("goo", prey); } else { update([sound, line, newline]); } @@ -3456,6 +3551,16 @@ function startGame(e) { enable_victim("scat","Shat on"); } + if (macro.gooEnabled) { + enable_panel("goo"); + + enable_button("melt"); + + if (macro.gooDigestion) { + enable_victim("goo","Absorbed into the goo"); + } + } + document.getElementById("button-arousal").innerHTML = (macro.arousalEnabled ? "Arousal On" : "Arousal Off"); if (!macro.arousalEnabled) { document.getElementById("arousal").style.display = "none"; diff --git a/recursive-desc.js b/recursive-desc.js index 5179897..e569f16 100644 --- a/recursive-desc.js +++ b/recursive-desc.js @@ -23,7 +23,7 @@ var actions = ["eat","chew","stomp","stomp-wedge","flex-toes","kick","anal-vore" "female-orgasm","grind","pouch-stuff","pouch-rub","pouch-eat","pouch-absorb","soul-vore","soul-absorb-paw", "paw-stench","ass-stench","belch","fart","stomach","womb","balls","bowels","bowels-to-stomach","breasts","bladder","soul-digest", "wear-shoe","remove-shoe","wear-sock","remove-sock","stuff-shoe","dump-shoe","stuff-sock","dump-sock","piss","bladder-vore","scat", -"sheath-toy","slit-toy","breast-toy","melt","solidify"]; +"sheath-toy","slit-toy","breast-toy","melt","solidify","stomp-goo","goo-digest","ass-goo"]; for (let i=0; i 0) { - return "Your body turns solid, pushing out " + container.describe(verbose); + return "Your body turns solid, pushing out " + container.describe(verbose) + "."; } else { - return "Your body turns solid, swiftly absorbing" + container.describe(verbose); + return "Your body turns solid, swiftly absorbing " + container.describe(verbose) + "."; } } +function defaultStompGoo(container, macro, verbose) { + if (container.count == 0) { + return "Your gooey paw hits the ground."; + } else { + return "Your gooey paws falls over " + container.describe(verbose) + ", smothering them in goo and pulling them into your body."; + } +} + +function defaultAssGoo(container, macro, verbose) { + if (container.count == 0) { + return "Your gooey ass sits down on the ground."; + } else { + return "You sit your gooey ass down on " + container.describe(verbose) + ", pulling them right into your body."; + } +} + +function defaultGooDigest(container, macro, verbose) { + return "Your goopy depths dissolve " + container.describe(false) + "."; +} // EATING diff --git a/sounds.js b/sounds.js index ab020ba..1665453 100644 --- a/sounds.js +++ b/sounds.js @@ -11,6 +11,8 @@ let sounds = { ["Clench.","Squeeeeeze.","Squeeeeeeeeeeeze.","Sqlllllch.","SQLLLLLLCH!"], "digest": ["Grrgle.","Grrrrgle","Grrrrlglorp.","GrrrrGLRRRLPH!","GRRRRRLGPRLHK!"], + "goo": + ["Splat.", "Squish.", "Squish!", "SQLCH!", "SQLLLLRCH!", "SQQQQUEEEEELLCH!"] }; function pickByMass(list, mass) { diff --git a/stroll.html b/stroll.html index 4e438a7..50a114b 100644 --- a/stroll.html +++ b/stroll.html @@ -182,6 +182,7 @@ Souls Shoes Waste + Goo Misc @@ -253,6 +254,13 @@ Scat + + Solidify + Melt + Push to Stomach + Pull from Stomach + + Stuff Pouch Rub Pouch @@ -880,8 +888,8 @@ Goo - - Digestion + + Digestion