|  |  | @@ -66,7 +66,7 @@ var macro = | 
		
	
		
			
			|  |  |  | "baseCumRatio": 0.25, | 
		
	
		
			
			|  |  |  | "cumScale": 1, | 
		
	
		
			
			|  |  |  | get cumVolume() { | 
		
	
		
			
			|  |  |  | return this.ballVolume * this.baseCumRatio * this.cumScale; | 
		
	
		
			
			|  |  |  | return this.ballVolume * this.baseCumRatio * this.cumScale + Math.max(0,this.cumStorage.amount - this.cumStorage.limit); | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | "baseVaginaLength": 0.1, | 
		
	
	
		
			
				|  |  | @@ -76,11 +76,11 @@ var macro = | 
		
	
		
			
			|  |  |  | get vaginaLength() { return this.scaling(this.baseVaginaLength * this.vaginaScale, this.scale, 1); }, | 
		
	
		
			
			|  |  |  | get vaginaWidth() { return this.scaling(this.baseVaginaWidth * this.vaginaScale, this.scale, 1); }, | 
		
	
		
			
			|  |  |  | get vaginaArea() { return this.vaginaLength * this.vaginaWidth }, | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | get vaginaVolume() { return this.vaginaArea * this.vaginaLength }, | 
		
	
		
			
			|  |  |  | "femcumRatio": 0.1, | 
		
	
		
			
			|  |  |  | "femcumScale": 1, | 
		
	
		
			
			|  |  |  | get femcumVolume() { | 
		
	
		
			
			|  |  |  | return this.vaginaArea * this.vaginaLength * this.femcumRatio * this.femcumScale; | 
		
	
		
			
			|  |  |  | return this.vaginaVolume * this.femcumRatio * this.femcumScale + Math.max(0,this.femcumStorage.amount - this.femcumStorage.limit); | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | "baseBreastDiameter": 0.1, | 
		
	
	
		
			
				|  |  | @@ -122,7 +122,7 @@ var macro = | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var line = organ.describeDigestion(container); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | organ.fill(this,container); | 
		
	
		
			
			|  |  |  | var summary = summarize(container.sum()); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | update([line,summary,newline]); | 
		
	
	
		
			
				|  |  | @@ -141,6 +141,9 @@ var macro = | 
		
	
		
			
			|  |  |  | "describeDigestion": function(container) { | 
		
	
		
			
			|  |  |  | return "Your stomach gurgles as it digests " + container.describe(false); | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | "fill": function(owner,container) { | 
		
	
		
			
			|  |  |  | //no-op | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | "contents": [], | 
		
	
		
			
			|  |  |  | "maxDigest": 5 | 
		
	
		
			
			|  |  |  | }, | 
		
	
	
		
			
				|  |  | @@ -158,6 +161,9 @@ var macro = | 
		
	
		
			
			|  |  |  | "describeDigestion" : function(container) { | 
		
	
		
			
			|  |  |  | return "Your bowels churn as they absorb " + container.describe(false); | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | "fill": function(owner,container) { | 
		
	
		
			
			|  |  |  | //no-op | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | "contents" : [], | 
		
	
		
			
			|  |  |  | "maxDigest" : 3 | 
		
	
		
			
			|  |  |  | }, | 
		
	
	
		
			
				|  |  | @@ -175,6 +181,9 @@ var macro = | 
		
	
		
			
			|  |  |  | "describeDigestion" : function(container) { | 
		
	
		
			
			|  |  |  | return "Your womb squeezes as it dissolves " + container.describe(false); | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | "fill": function(owner,container) { | 
		
	
		
			
			|  |  |  | owner.femcumStorage.amount += container.sum_property("mass") / 1e3; | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | "contents" : [], | 
		
	
		
			
			|  |  |  | "maxDigest" : 1 | 
		
	
		
			
			|  |  |  | }, | 
		
	
	
		
			
				|  |  | @@ -189,9 +198,12 @@ var macro = | 
		
	
		
			
			|  |  |  | setTimeout(function() { owner.digest(self) }, 15000); | 
		
	
		
			
			|  |  |  | this.contents.push(prey); | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | "describeDigestion" : function(container) { | 
		
	
		
			
			|  |  |  | "describeDigestion": function(container) { | 
		
	
		
			
			|  |  |  | return "Your balls slosh as they transform " + container.describe(false) + " into cum"; | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | "fill": function(owner,container) { | 
		
	
		
			
			|  |  |  | owner.cumStorage.amount += container.sum_property("mass") / 1e3; | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | "contents" : [], | 
		
	
		
			
			|  |  |  | "maxDigest" : 1 | 
		
	
		
			
			|  |  |  | }, | 
		
	
	
		
			
				|  |  | @@ -201,11 +213,46 @@ var macro = | 
		
	
		
			
			|  |  |  | this.bowels.owner = this; | 
		
	
		
			
			|  |  |  | this.womb.owner = this; | 
		
	
		
			
			|  |  |  | this.balls.owner = this; | 
		
	
		
			
			|  |  |  | this.cumStorage.owner = this; | 
		
	
		
			
			|  |  |  | this.femcumStorage.owner = this; | 
		
	
		
			
			|  |  |  | if (this.maleParts) | 
		
	
		
			
			|  |  |  | this.fillCum(this) | 
		
	
		
			
			|  |  |  | if (this.femaleParts) | 
		
	
		
			
			|  |  |  | this.fillFemcum(this) | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | "maleParts": true, | 
		
	
		
			
			|  |  |  | "femaleParts": true, | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | "fillCum": function(self) { | 
		
	
		
			
			|  |  |  | self.cumStorage.amount += self.ballVolume / 30; | 
		
	
		
			
			|  |  |  | if (self.cumStorage.amount > self.cumStorage.limit) | 
		
	
		
			
			|  |  |  | self.arouse(10 * (1 - self.cumStorage.amount / self.cumStorage.limit)); | 
		
	
		
			
			|  |  |  | setTimeout(function () { self.fillCum(self) }, 1000); | 
		
	
		
			
			|  |  |  | update(); | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | "fillFemcum": function(self) { | 
		
	
		
			
			|  |  |  | self.femcumStorage.amount += self.vaginaVolume / 30; | 
		
	
		
			
			|  |  |  | if (self.femcumStorage.amount > self.femcumStorage.limit) | 
		
	
		
			
			|  |  |  | self.arouse(10 * (self.femcumStorage.amount / self.femcumStorage.limit)); | 
		
	
		
			
			|  |  |  | setTimeout(function () { self.fillFemcum(self) }, 1000); | 
		
	
		
			
			|  |  |  | update(); | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | "cumStorage": { | 
		
	
		
			
			|  |  |  | "amount": 0, | 
		
	
		
			
			|  |  |  | get limit() { | 
		
	
		
			
			|  |  |  | return this.owner.ballVolume; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | "femcumStorage": { | 
		
	
		
			
			|  |  |  | "amount": 0, | 
		
	
		
			
			|  |  |  | get limit() { | 
		
	
		
			
			|  |  |  | return this.owner.vaginaVolume; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | "orgasm": false, | 
		
	
		
			
			|  |  |  | "arousal": 0, | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -241,7 +288,9 @@ var macro = | 
		
	
		
			
			|  |  |  | "maleOrgasm": function(self) { | 
		
	
		
			
			|  |  |  | if (self.orgasm) { | 
		
	
		
			
			|  |  |  | self.quench(10); | 
		
	
		
			
			|  |  |  | male_orgasm(); | 
		
	
		
			
			|  |  |  | var amount = Math.min(this.cumVolume, this.cumStorage.amount); | 
		
	
		
			
			|  |  |  | this.cumStorage.amount -= amount; | 
		
	
		
			
			|  |  |  | male_orgasm(amount); | 
		
	
		
			
			|  |  |  | setTimeout(function() { self.maleOrgasm(self) }, 2000); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }, | 
		
	
	
		
			
				|  |  | @@ -249,7 +298,9 @@ var macro = | 
		
	
		
			
			|  |  |  | "femaleOrgasm": function(self) { | 
		
	
		
			
			|  |  |  | if (this.orgasm) { | 
		
	
		
			
			|  |  |  | this.quench(10); | 
		
	
		
			
			|  |  |  | female_orgasm(); | 
		
	
		
			
			|  |  |  | var amount = Math.min(this.femcumVolume, this.femcumStorage.amount); | 
		
	
		
			
			|  |  |  | this.femcumStorage.amount -= amount; | 
		
	
		
			
			|  |  |  | female_orgasm(amount); | 
		
	
		
			
			|  |  |  | setTimeout(function() { self.femaleOrgasm(self) }, 2000); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }, | 
		
	
	
		
			
				|  |  | @@ -770,10 +821,8 @@ function ball_smother() | 
		
	
		
			
			|  |  |  | update([sound,line,linesummary,newline]); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function male_orgasm() | 
		
	
		
			
			|  |  |  | function male_orgasm(vol) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | var vol = macro.cumVolume; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | // let's make it 10cm thick | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var area = vol * 10; | 
		
	
	
		
			
				|  |  | @@ -807,10 +856,8 @@ function male_orgasm() | 
		
	
		
			
			|  |  |  | update([sound,line,linesummary,newline]); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function female_orgasm() | 
		
	
		
			
			|  |  |  | function female_orgasm(vol) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | var vol = macro.femcumVolume; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | // let's make it 10cm thick | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var area = vol * 10; | 
		
	
	
		
			
				|  |  | @@ -858,7 +905,9 @@ function update(lines = []) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | document.getElementById("height").innerHTML = "Height: " + length(macro.height, unit); | 
		
	
		
			
			|  |  |  | document.getElementById("mass").innerHTML = "Mass: " + mass(macro.mass, unit); | 
		
	
		
			
			|  |  |  | document.getElementById("arousal").innerHTML = "Arousal: " + macro.arousal + "%"; | 
		
	
		
			
			|  |  |  | document.getElementById("arousal").innerHTML = "Arousal: " + round(macro.arousal,0) + "%"; | 
		
	
		
			
			|  |  |  | document.getElementById("cum").innerHTML = "Cum: " + volume(macro.cumStorage.amount,unit,false) + "/" + volume(macro.cumStorage.limit,unit,false); | 
		
	
		
			
			|  |  |  | document.getElementById("femcum").innerHTML = "Femcum: " + volume(macro.femcumStorage.amount,unit,false) + "/" + volume(macro.femcumStorage.limit,unit,false); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | for (var type in victims) { | 
		
	
		
			
			|  |  |  | if (victims.hasOwnProperty(type)) { | 
		
	
	
		
			
				|  |  | @@ -938,7 +987,7 @@ function startGame() { | 
		
	
		
			
			|  |  |  | document.getElementById("button-ball_smother").style.display = 'none'; | 
		
	
		
			
			|  |  |  | document.getElementById("stats-balls").style.display = 'none'; | 
		
	
		
			
			|  |  |  | document.getElementById("stats-cock").style.display = 'none'; | 
		
	
		
			
			|  |  |  | document.getElementById("stats-smothered").style.display = 'none'; | 
		
	
		
			
			|  |  |  | document.getElementById("cum").style.display = 'none'; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (!macro.femaleParts) { | 
		
	
	
		
			
				|  |  | @@ -946,6 +995,7 @@ function startGame() { | 
		
	
		
			
			|  |  |  | document.getElementById("button-unbirth").style.display = 'none'; | 
		
	
		
			
			|  |  |  | document.getElementById("stats-womb").style.display = 'none'; | 
		
	
		
			
			|  |  |  | document.getElementById("stats-breasts").style.display = 'none'; | 
		
	
		
			
			|  |  |  | document.getElementById("femcum").style.display = 'none'; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (!macro.maleParts && !macro.femaleParts) { | 
		
	
	
		
			
				|  |  | @@ -960,10 +1010,15 @@ function startGame() { | 
		
	
		
			
			|  |  |  | macro.species = species; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | macro.init(); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | update(); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | document.getElementById("stat-container").style.display = 'flex'; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | window.addEventListener('load', function(event) { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | victims["stomped"] = initVictims(); | 
		
	
		
			
			|  |  |  | victims["digested"] = initVictims(); | 
		
	
		
			
			|  |  |  | victims["stomach"] = initVictims(); | 
		
	
	
		
			
				|  |  | @@ -975,8 +1030,6 @@ window.addEventListener('load', function(event) { | 
		
	
		
			
			|  |  |  | victims["smothered"] = initVictims(); | 
		
	
		
			
			|  |  |  | victims["splooged"] = initVictims(); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | macro.init(); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | document.getElementById("button-look").addEventListener("click",look); | 
		
	
		
			
			|  |  |  | document.getElementById("button-grow").addEventListener("click",grow); | 
		
	
		
			
			|  |  |  | document.getElementById("button-feed").addEventListener("click",feed); | 
		
	
	
		
			
				|  |  | @@ -996,6 +1049,4 @@ window.addEventListener('load', function(event) { | 
		
	
		
			
			|  |  |  | document.getElementById("button-female-genitals").addEventListener("click",option_female); | 
		
	
		
			
			|  |  |  | document.getElementById("button-start").addEventListener("click",startGame); | 
		
	
		
			
			|  |  |  | setTimeout(pick_move, 2000); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | update(); | 
		
	
		
			
			|  |  |  | }); |