From 4e14bdfe9bbcee0ef43b58e33fbd9c8ebe66eb11 Mon Sep 17 00:00:00 2001 From: Fen Dweller Date: Thu, 1 Mar 2018 10:26:08 -0500 Subject: [PATCH] Added stench and gas --- game.js | 186 +++++++++++++++++++++++++++++++++++++++++++++- recursive-desc.js | 48 ++++++++++-- stroll.html | 56 +++++++++++++- 3 files changed, 280 insertions(+), 10 deletions(-) diff --git a/game.js b/game.js index 985f162..b488b23 100644 --- a/game.js +++ b/game.js @@ -360,7 +360,7 @@ let macro = return describe("stomach",container,this.owner,verbose); }, "fill": function(owner,container) { - //no-op + owner.gasStorage.amount += container.sum_property("mass") * this.owner.gasDigestFactor / 1e4; }, get description() { let prey = new Container(); @@ -403,7 +403,7 @@ let macro = return describe("bowels",container,this.owner,verbose); }, "fill": function(owner,container) { - //no-op + owner.gasStorage.amount += container.sum_property("mass") * this.owner.gasDigestFactor / 1e3; }, get description() { let prey = new Container(); @@ -646,10 +646,12 @@ let macro = this.cumStorage.owner = this; this.femcumStorage.owner = this; this.milkStorage.owner = this; + this.gasStorage.owner = this; if (this.analVoreToStomach) { this.bowels.moves = this.stomach; } + if (this.maleParts) this.fillCum(this); if (this.femaleParts) @@ -659,6 +661,9 @@ let macro = if (this.arousalEnabled) { this.quenchExcess(this); } + if (this.gasEnabled) { + this.fillGas(this); + } }, "maleParts": true, @@ -693,6 +698,26 @@ let macro = update(); }, + "fillGas": function(self) { + self.gasStorage.amount += self.gasScale * self.gasStorage.limit / 3600; + + let ratio = self.gasStorage.amount / self.gasStorage.limit; + + if (ratio > 1 && Math.random()*100 < ratio || ratio > 2) { + let amount = self.gasStorage.amount - self.gasStorage.limit*3/4; + if (self.belchEnabled && self.fartEnabled) { + Math.random() < 0.5 ? belch(amount) : fart(amount); + } else if (self.belchEnabled) { + belch(amount); + } else if (self.fartEnabled) { + fart(amount); + } + self.gasStorage.amount = self.gasStorage.limit*3/4; + } + setTimeout(function () { self.fillGas(self); }, 100); + update(); + }, + "cumStorage": { "amount": 0, get limit() { @@ -714,6 +739,38 @@ let macro = } }, + "gasStorage": { + "amount": 0, + get limit() { + return Math.pow(this.owner.scale,3) / 1000; + } + }, + + "stenchEnabled": true, + "basePawStenchArea": 1, + get pawStenchArea() { + return this.pawArea * this.basePawStenchArea; + }, + "baseAssStenchArea": 1, + get assStenchArea() { + return this.assArea * this.baseAssStenchArea; + }, + + "gasEnabled": true, + "gasScale": 1, + "gasFactor": 1, + "baseGasDigestFactor": 1, + "gasScaleWithSize": true, + get gasDigestFactor() { + if (this.gasScaleWithSize) { + return this.baseGasDigestFactor * this.scale; + } else { + return this.baseGasDigestFactor; + } + }, + "belchEnabled": true, + "fartEnabled": true, + "orgasm": false, "afterglow": false, @@ -1340,6 +1397,32 @@ function stomp() update([sound,line,linesummary,newline]); macro.arouse(5); + + if (macro.stenchEnabled) { + paw_stench(); + } +} + +function paw_stench() { + + let area = macro.pawStenchArea; + let prey = getPrey(biome, area); + let line = describe("paw-stench", prey, macro, verbose); + let linesummary = summarize(prey.sum(), true); + + let people = get_living_prey(prey.sum()); + + if (prey.sum()["Person"] == undefined) + return; + + let preyMass = prey.sum_property("mass"); + + macro.addGrowthPoints(preyMass); + + updateVictims("stomped",prey); + update([line,linesummary,newline]); + + macro.arouse(5); } function grind() @@ -1457,6 +1540,32 @@ function sit() update([sound,line,linesummary,newline]); macro.arouse(5); + + if (macro.stenchEnabled) { + ass_stench(); + } +} + +function ass_stench() { + + let area = macro.assStenchArea; + let prey = getPrey(biome, area); + let line = describe("ass-stench", prey, macro, verbose); + let linesummary = summarize(prey.sum(), true); + + let people = get_living_prey(prey.sum()); + + if (prey.sum()["Person"] == undefined) + return; + + let preyMass = prey.sum_property("mass"); + + macro.addGrowthPoints(preyMass); + + updateVictims("stomped",prey); + update([line,linesummary,newline]); + + macro.arouse(5); } function cleavage_stuff() @@ -2403,6 +2512,74 @@ function soul_absorb_paw() macro.arouse(25); } +function belch(vol) +{ + let area = Math.pow(vol, 2/3); + + let prey = getPrey(biome, area); + let line = describe("belch", prey, macro, verbose).replace("$VOLUME",volume(vol,unit,false)); + let linesummary = summarize(prey.sum(), true); + + let people = get_living_prey(prey.sum()); + + let sound = "Urp."; + + if (people < 3) { + sound = "Burp."; + } else if (people < 10) { + sound = "Urph."; + } else if (people < 50) { + sound = "Urrrrrph."; + } else if (people < 500) { + sound = "UUURRP!"; + } else if (people < 5000) { + sound = "BUUUUURRRRRRRRRRPHHH!!"; + } else { + sound = "Oh the humanity!"; + } + + let preyMass = prey.sum_property("mass"); + + macro.addGrowthPoints(preyMass); + + updateVictims("splooged",prey); + update([sound,line,linesummary,newline]); +} + +function fart(vol) +{ + let area = Math.pow(vol, 2/3); + + let prey = getPrey(biome, area); + let line = describe("fart", prey, macro, verbose).replace("$VOLUME",volume(vol,unit,false)); + let linesummary = summarize(prey.sum(), true); + + let people = get_living_prey(prey.sum()); + + let sound = "Pft."; + + if (people < 3) { + sound = "Pft."; + } else if (people < 10) { + sound = "Pffft."; + } else if (people < 50) { + sound = "Pfffbt."; + } else if (people < 500) { + sound = "Pffffffbt."; + } else if (people < 5000) { + sound = "PFFFBT."; + } else { + sound = "Oh the humanity!"; + } + + let preyMass = prey.sum_property("mass"); + + macro.addGrowthPoints(preyMass); + + updateVictims("splooged",prey); + update([sound,line,linesummary,newline]); +} + function transformNumbers(line) { return line.toString().replace(/[0-9]+(\.[0-9]+)?(e\+[0-9]+)?/g, function(text) { return number(text, numbers); }); @@ -2432,6 +2609,8 @@ function update(lines = []) document.getElementById("femcumPercent").innerHTML = Math.round(macro.femcumStorage.amount / macro.femcumStorage.limit * 100) + "%"; document.getElementById("milk").innerHTML = "Milk: " + transformNumbers(volume(macro.milkStorage.amount,unit,false)); document.getElementById("milkPercent").innerHTML = Math.round(macro.milkStorage.amount / macro.milkStorage.limit * 100) + "%"; + document.getElementById("gas").innerHTML = "Gas: " + transformNumbers(volume(macro.gasStorage.amount,unit,false)); + document.getElementById("gasPercent").innerHTML = Math.round(macro.gasStorage.amount / macro.gasStorage.limit * 100) + "%"; for (let type in victims) { if (victims.hasOwnProperty(type)) { @@ -2905,6 +3084,9 @@ function startGame(e) { } + if (macro.gasEnabled) { + enable_stat("gas"); + } if (macro.brutality > 0) { enable_button("chew"); } diff --git a/recursive-desc.js b/recursive-desc.js index df9c5e3..943aa90 100644 --- a/recursive-desc.js +++ b/recursive-desc.js @@ -20,8 +20,8 @@ var actions = ["eat","chew","stomp","kick","anal-vore","ass-crush","tail-slap"," "cleavage-stuff","cleavage-crush","cleavage-drop","cleavage-absorb","breast-crush", "breast-vore","breast-milk","unbirth","sheath-stuff","sheath-squeeze","sheath-crush", "sheath-absorb","cock-vore","cockslap","ball-smother","male-spurt","male-orgasm","female-spurt", -"female-orgasm","grind","pouch-stuff","pouch-rub","pouch-eat","pouch-absorb","soul-vore","soul-absorb-paw","stomach","womb", -"balls","bowels","bowels-to-stomach","breasts","soul-digest"]; +"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","soul-digest"]; for (let i=0; i 1 ? sum + " people." : "a person."); + else + return "Your stinky " + macro.footDesc(true) + " overwhelm" + (sum > 1 ? sum + " people" : "a person") + " with your scent!"; +} + +function defaultAssStench(container, macro, verbose) { + let sum = container.sum()["Person"]; + if (isFatal(macro)) + return "Vile miasma from your bitter ass snuffs out " + (sum > 1 ? sum + " people" : "a person") + ", suffocating them in your stench."; + else + return "Your stinky ass sicens " + (sum > 1 ? sum + " people" : "a person") + " with your scent!"; +} + +function defaultBelch(container, macro, verbose) { + let sum = container.sum()["Person"]; + if (container.count == 0) + return "An ominous groan precedes a crass belch."; if (isFatal(macro)) - return "Your stomach gurgles as it digests " + container.describe(false); + return "A rancid belch flows from your " + macro.jawDesc(verbose) + ", corroding " + container.describe(verbose) + " with your vile fumes."; + else + return "You let out a loud burp, blowing over " + container.describe(verbose) + "!"; +} + +function defaultFart(container, macro, verbose) { + let sum = container.sum()["Person"]; + if (container.count == 0) + return "An ominous groan precedes a loud, pungent fart."; + if (isFatal(macro)) + return "An ominous groan precedes a loud, pungent fart, corroding " + container.describe(verbose) + " with truly vile vapors."; + else + return "You let out a crass fart, blowing over " + container.describe(verbose) + "!"; +} + +function defaultStomach(container, macro, verbose) { + if (isGory(macro)) + return "Your caustic stomach grinds " + container.describe(false) + " to a gory pulp."; + else if (isFatal(macro)) + return "Your stomach gurgles as it digests " + container.describe(false) + "."; else - return "Your stomach groans as it absorbs " + container.describe(false); + return "Your stomach groans and abosrbs " + container.describe(false) + "."; } function defaultBowels(container, macro, verbose) { diff --git a/stroll.html b/stroll.html index ec7942d..fe9c9ad 100644 --- a/stroll.html +++ b/stroll.html @@ -25,6 +25,8 @@
+
+
Growth
@@ -72,7 +74,7 @@
-
Welcome to Stroll 0.5.13
+
Welcome to Stroll 0.5.14
This game features 18+ content
Changelog
Telegram discussion group
@@ -98,6 +100,7 @@
+
@@ -105,6 +108,7 @@
+
@@ -114,9 +118,11 @@
+
+
@@ -125,10 +131,12 @@
+
+
@@ -138,7 +146,7 @@
-

Welcome to Stroll 0.5.13

+

Welcome to Stroll 0.5.14

This game features 18+ content

Changelog

Telegram discussion group

@@ -276,7 +284,7 @@
  • - +
  • @@ -482,6 +490,48 @@
  • + +
    + + +
    +
  • + + +
  • +
  • + + +
  • +
    +
    + +
    + + +
    +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
    +