@@ -37,6 +37,9 @@ var macro =
"dickScale": 1,
get dickLength() { return this.scaling(this.baseDickLength * this.dickScale, this.scale, 1); },
get dickDiameter() { return this.scaling(this.baseDickDiameter * this.dickScale, this.scale, 1); },
get dickGirth() {
return Math.pow((this.dickDiameter / 2),2) * Math.PI;
},
get dickArea() {
return this.dickLength * this.dickDiameter * Math.PI / 2;
},
@@ -84,6 +87,110 @@ var macro =
return volume * this.breastDensity;
},
"digest": function(organ) {
var count = Math.min(organ.contents.length, organ.maxDigest);
var container = new Container();
while (count > 0) {
var victim = organ.contents.shift();
if (victim.name != "Container")
victim = new Container([victim]);
container = container.merge(victim);
--count;
}
var digested = container.sum();
for (var key in victims[organ.name]) {
if (victims[organ.name].hasOwnProperty(key) && digested.hasOwnProperty(key) ) {
victims["digested"][key] += digested[key];
victims[organ.name][key] -= digested[key];
}
}
var line = organ.describeDigestion(container);
var summary = summarize(container.sum());
update([line,summary,newline]);
},
"stomach": {
"name": "stomach",
"feed": function(prey) {
this.feedFunc(prey,this,this.owner);
},
"feedFunc": function(prey,self,owner) {
if (self.contents.length == 0)
setTimeout(function() { owner.digest(self) }, 15000);
this.contents.push(prey);
},
"describeDigestion": function(container) {
return "Your stomach gurgles as it digests " + container.describe(false);
},
"contents": [],
"maxDigest": 5
},
"bowels": {
"name" : "bowels",
"feed": function(prey) {
this.feedFunc(prey,this,this.owner);
},
"feedFunc": function(prey,self,owner) {
if (self.contents.length == 0)
setTimeout(function() { owner.digest(self) }, 15000);
this.contents.push(prey);
},
"describeDigestion" : function(container) {
return "Your bowels churn as they absorb " + container.describe(false);
},
"contents" : [],
"maxDigest" : 3
},
"womb": {
"name" : "womb",
"feed": function(prey) {
this.feedFunc(prey,this,this.owner);
},
"feedFunc": function(prey,self,owner) {
if (self.contents.length == 0)
setTimeout(function() { owner.digest(self) }, 15000);
this.contents.push(prey);
},
"describeDigestion" : function(container) {
return "Your womb squeezes as it dissolves " + container.describe(false);
},
"contents" : [],
"maxDigest" : 1
},
"balls": {
"name" : "balls",
"feed": function(prey) {
this.feedFunc(prey,this,this.owner);
},
"feedFunc": function(prey,self,owner) {
if (self.contents.length == 0)
setTimeout(function() { owner.digest(self) }, 15000);
this.contents.push(prey);
},
"describeDigestion" : function(container) {
return "Your balls slosh as they transform " + container.describe(false) + " into cum";
},
"contents" : [],
"maxDigest" : 1
},
"init": function() {
this.stomach.owner = this;
this.bowels.owner = this;
this.womb.owner = this;
this.balls.owner = this;
},
"maleParts": true,
"femaleParts": true,
@@ -211,9 +318,6 @@ function summarize(sum, fatal = true)
return "<b>(" + count + " " + (fatal ? (count > 1 ? "kills" : "kill") : (count > 1 ? "prey" : "prey")) + ")</b>";
}
var stomach = []
var bowels = []
function getOnePrey(biome,area)
{
var potential = ["Person"];
@@ -325,10 +429,7 @@ function feed()
macro.scaleWithMass(preyMass);
stomach.push(prey);
if (stomach.length == 1)
setTimeout(function() { doDigest("stomach"); }, 15000);
macro.stomach.feed(prey);
updateVictims("stomach",prey);
update([sound,line,linesummary,newline]);
@@ -420,10 +521,7 @@ function anal_vore()
macro.scaleWithMass(preyMass);
macro.scaleWithMass(crushedMass);
bowels.push(prey);
if (bowels.length == 1)
setTimeout(function() { doDigest("bowels"); }, 15000);
macro.bowels.feed(prey);
updateVictims("bowels",prey);
updateVictims("stomped",crushed);
@@ -467,7 +565,7 @@ function unbirth()
var area = macro.vaginaArea;
var prey = getPrey(biome, area);
var line = prey.unbirth(verbose)
var linesummary = summarize(prey.sum(), tru e);
var linesummary = summarize(prey.sum(), fals e);
var people = get_living_prey(prey.sum());
@@ -491,6 +589,8 @@ function unbirth()
macro.scaleWithMass(preyMass);
macro.womb.feed(prey);
updateVictims("womb",prey);
update([sound,line,linesummary,newline]);
}
@@ -519,6 +619,7 @@ function cockslap()
} else {
sound = "Oh the humanity!";
}
var preyMass = prey.sum_property("mass");
macro.scaleWithMass(preyMass);
@@ -527,6 +628,40 @@ function cockslap()
update([sound,line,linesummary,newline]);
}
function cock_vore()
{
var area = macro.dickGirth;
var prey = getPrey(biome, area);
var line = prey.cock_vore(verbose)
var linesummary = summarize(prey.sum(), true);
var people = get_living_prey(prey.sum());
var sound = "lp";
if (people < 3) {
sound = "Shlp.";
} else if (people < 10) {
sound = "Squelch.";
} else if (people < 50) {
sound = "Shlurrp.";
} else if (people < 500) {
sound = "SHLRP!";
} else if (people < 5000) {
sound = "SQLCH!!";
} else {
sound = "Oh the humanity!";
}
var preyMass = prey.sum_property("mass");
macro.scaleWithMass(preyMass);
macro.balls.feed(prey);
updateVictims("balls",prey);
update([sound,line,linesummary,newline]);
}
function ball_smother()
{
var area = macro.ballArea * 2;
@@ -630,51 +765,6 @@ function grow()
update(["Power surges through you as you grow " + heightStr + " taller and gain " + massStr + " of mass",newline]);
}
// pop the list and digest that object
function doDigest(containerName)
{
var digestType = containerName == "stomach" ? stomach : bowels;
var count = 0
if (containerName == "stomach") {
count = stomach.length;
count = Math.min(count,maxStomachDigest);
} else if (containerName == "bowels") {
count = bowels.length;
count = Math.min(count,maxBowelsDigest);
}
var container = new Container();
while (count > 0) {
--count;
var toDigest = digestType.shift();
if (toDigest.name != "Container")
toDigest = new Container([toDigest]);
container = container.merge(toDigest);
}
var digested = container.sum();
for (var key in victims[containerName]) {
if (victims[containerName].hasOwnProperty(key) && digested.hasOwnProperty(key) ) {
victims["digested"][key] += digested[key];
victims[containerName][key] -= digested[key];
}
}
if (containerName == "stomach")
update(["Your stomach gurgles as it digests " + container.describe(false),summarize(container.sum()),newline]);
else if (containerName == "bowels")
update(["Your bowels churn as they absorb " + container.describe(false),summarize(container.sum()),newline]);
if (digestType.length > 0) {
setTimeout(function() {
doDigest(containerName);
}, 15000);
}
}
window.addEventListener('load', function(event) {
victims["stomped"] = initVictims();
@@ -685,6 +775,9 @@ window.addEventListener('load', function(event) {
victims["womb"] = initVictims();
victims["cock"] = initVictims();
victims["balls"] = initVictims();
victims["smothered"] = initVictims();
macro.init();
document.getElementById("button-look").addEventListener("click",look);
document.getElementById("button-grow").addEventListener("click",grow);
@@ -693,6 +786,7 @@ window.addEventListener('load', function(event) {
document.getElementById("button-breast_crush").addEventListener("click",breast_crush);
document.getElementById("button-unbirth").addEventListener("click",unbirth);
document.getElementById("button-cockslap").addEventListener("click",cockslap);
document.getElementById("button-cock_vore").addEventListener("click",cock_vore);
document.getElementById("button-ball_smother").addEventListener("click",ball_smother);
document.getElementById("button-anal_vore").addEventListener("click",anal_vore);
document.getElementById("button-stroll").addEventListener("click",toggle_auto);