|
|
|
@@ -36,6 +36,32 @@ var macro = |
|
|
|
|
|
|
|
"assScale": 1, |
|
|
|
|
|
|
|
"tailType": "slinky", |
|
|
|
"tailCount": 1, |
|
|
|
"baseTailLength": 1, |
|
|
|
"baseTailDiameter": 0.1, |
|
|
|
"tailDensity": 250, |
|
|
|
"tailScale": 1, |
|
|
|
"tailMaw": false, |
|
|
|
|
|
|
|
get tailLength() { |
|
|
|
return this.scaling(this.baseTailLength * this.tailScale, this.scale, 1); |
|
|
|
}, |
|
|
|
get tailDiameter() { |
|
|
|
return this.scaling(this.baseTailDiameter * this.tailScale, this.scale, 1); |
|
|
|
}, |
|
|
|
get tailGirth() { |
|
|
|
return Math.pow(this.tailDiameter/2,2) * Math.PI; |
|
|
|
}, |
|
|
|
get tailArea() { |
|
|
|
return this.tailLength * this.tailDiameter; |
|
|
|
}, |
|
|
|
get tailVolume() { |
|
|
|
return this.tailGirth * this.tailLength; |
|
|
|
}, |
|
|
|
get tailMass() { |
|
|
|
return this.tailVolume * this.tailDensity; |
|
|
|
}, |
|
|
|
"dickType": "canine", |
|
|
|
"baseDickLength": 0.3, |
|
|
|
"baseDickDiameter": 0.08, |
|
|
|
@@ -434,6 +460,11 @@ var macro = |
|
|
|
return result; |
|
|
|
}, |
|
|
|
|
|
|
|
get describeTail() { |
|
|
|
return (this.tailCount > 1 ? this.tailCount + " " : "") + length(this.tailLength, unit, true) + "-long " + this.tailType; |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
get describeDick() { |
|
|
|
state = ""; |
|
|
|
if (!this.arousalEnabled) { |
|
|
|
@@ -453,7 +484,7 @@ var macro = |
|
|
|
state = "erect, throbbing, pre-soaked"; |
|
|
|
} |
|
|
|
} |
|
|
|
return length(macro.dickLength, unit, true) + " long " + state + " " + macro.dickType; |
|
|
|
return length(this.dickLength, unit, true) + " long " + state + " " + this.dickType; |
|
|
|
}, |
|
|
|
|
|
|
|
get describeVagina() { |
|
|
|
@@ -476,7 +507,7 @@ var macro = |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return length(macro.vaginaLength, unit, true) + " long " + state |
|
|
|
return length(this.vaginaLength, unit, true) + " long " + state |
|
|
|
}, |
|
|
|
|
|
|
|
"growthPoints": 0, |
|
|
|
@@ -1230,6 +1261,77 @@ function female_orgasm(vol) |
|
|
|
update([sound,line,linesummary,newline]); |
|
|
|
} |
|
|
|
|
|
|
|
function tail_slap() |
|
|
|
{ |
|
|
|
var area = macro.tailArea * macro.tailCount; |
|
|
|
var prey = getPrey(biome, area); |
|
|
|
var line = describe("tail-slap", prey, macro, verbose) |
|
|
|
var linesummary = summarize(prey.sum(), true); |
|
|
|
|
|
|
|
var people = get_living_prey(prey.sum()); |
|
|
|
|
|
|
|
var sound = "Thump"; |
|
|
|
|
|
|
|
if (people < 3) { |
|
|
|
sound = "Thump!"; |
|
|
|
} else if (people < 10) { |
|
|
|
sound = "Squish!"; |
|
|
|
} else if (people < 50) { |
|
|
|
sound = "Crunch!"; |
|
|
|
} else if (people < 500) { |
|
|
|
sound = "CRUNCH!"; |
|
|
|
} else if (people < 5000) { |
|
|
|
sound = "CRRUUUNCH!!"; |
|
|
|
} else { |
|
|
|
sound = "Oh the humanity!"; |
|
|
|
} |
|
|
|
var preyMass = prey.sum_property("mass"); |
|
|
|
|
|
|
|
macro.addGrowthPoints(preyMass); |
|
|
|
|
|
|
|
macro.arouse(5); |
|
|
|
|
|
|
|
updateVictims("tailslapped",prey); |
|
|
|
update([sound,line,linesummary,newline]); |
|
|
|
} |
|
|
|
|
|
|
|
function tail_vore() |
|
|
|
{ |
|
|
|
var area = macro.tailGirth * macro.tailCount; |
|
|
|
var prey = getPrey(biome, area); |
|
|
|
var line = describe("tail-vore", prey, macro, verbose) |
|
|
|
var linesummary = summarize(prey.sum(), true); |
|
|
|
|
|
|
|
var people = get_living_prey(prey.sum()); |
|
|
|
|
|
|
|
var sound = ""; |
|
|
|
if (people == 0) { |
|
|
|
sound = ""; |
|
|
|
} else if (people < 3) { |
|
|
|
sound = "Ulp."; |
|
|
|
} else if (people < 10) { |
|
|
|
sound = "Gulp."; |
|
|
|
} else if (people < 50) { |
|
|
|
sound = "Glrrp."; |
|
|
|
} else if (people < 500) { |
|
|
|
sound = "Glrrrpkh!"; |
|
|
|
} else if (people < 5000) { |
|
|
|
sound = "GLRRKPKH!"; |
|
|
|
} else { |
|
|
|
sound = "Oh the humanity!"; |
|
|
|
} |
|
|
|
var preyMass = prey.sum_property("mass"); |
|
|
|
|
|
|
|
macro.addGrowthPoints(preyMass); |
|
|
|
|
|
|
|
macro.arouse(5); |
|
|
|
|
|
|
|
macro.stomach.feed(prey); |
|
|
|
|
|
|
|
updateVictims("tailmaw'd",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); }); |
|
|
|
@@ -1540,12 +1642,28 @@ function startGame(e) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (!macro.hasTail) { |
|
|
|
macro.tailCount = 0; |
|
|
|
} |
|
|
|
|
|
|
|
document.getElementById("log-area").style.display = 'inline'; |
|
|
|
document.getElementById("option-panel").style.display = 'none'; |
|
|
|
document.getElementById("action-panel").style.display = 'flex'; |
|
|
|
|
|
|
|
victimTypes = ["stomped","digested","stomach","bowels","ground"]; |
|
|
|
|
|
|
|
if (macro.tailCount > 0) { |
|
|
|
victimTypes = victimTypes.concat(["tailslapped"]); |
|
|
|
if (macro.tailMaw) { |
|
|
|
victimTypes = victimTypes.concat(["tailmaw'd"]); |
|
|
|
} else { |
|
|
|
document.getElementById("button-tail_vore").style.display = 'none'; |
|
|
|
} |
|
|
|
} else { |
|
|
|
document.getElementById("button-tail_slap").style.display = 'none'; |
|
|
|
document.getElementById("button-tail_vore").style.display = 'none'; |
|
|
|
} |
|
|
|
|
|
|
|
if (macro.maleParts) { |
|
|
|
victimTypes = victimTypes.concat(["cock","balls"]); |
|
|
|
} else { |
|
|
|
@@ -1630,9 +1748,11 @@ function startGame(e) { |
|
|
|
window.addEventListener('load', function(event) { |
|
|
|
|
|
|
|
victims["stomped"] = initVictims(); |
|
|
|
victims["tailslapped"] = initVictims(); |
|
|
|
victims["tailmaw'd"] = initVictims(); |
|
|
|
victims["bowels"] = initVictims(); |
|
|
|
victims["digested"] = initVictims(); |
|
|
|
victims["stomach"] = initVictims(); |
|
|
|
victims["bowels"] = initVictims(); |
|
|
|
victims["breasts"] = initVictims(); |
|
|
|
victims["womb"] = initVictims(); |
|
|
|
victims["cock"] = initVictims(); |
|
|
|
@@ -1644,13 +1764,15 @@ window.addEventListener('load', function(event) { |
|
|
|
document.getElementById("button-look").addEventListener("click",look); |
|
|
|
document.getElementById("button-feed").addEventListener("click",feed); |
|
|
|
document.getElementById("button-stomp").addEventListener("click",stomp); |
|
|
|
document.getElementById("button-anal_vore").addEventListener("click",anal_vore); |
|
|
|
document.getElementById("button-tail_slap").addEventListener("click",tail_slap); |
|
|
|
document.getElementById("button-tail_vore").addEventListener("click",tail_vore); |
|
|
|
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-grind").addEventListener("click",grind); |
|
|
|
document.getElementById("button-anal_vore").addEventListener("click",anal_vore); |
|
|
|
document.getElementById("button-stroll").addEventListener("click",toggle_auto); |
|
|
|
document.getElementById("button-location").addEventListener("click",change_location); |
|
|
|
document.getElementById("button-numbers").addEventListener("click",toggle_numbers); |
|
|
|
|