diff --git a/game.js b/game.js
index 103afcb..69bc785 100644
--- a/game.js
+++ b/game.js
@@ -284,7 +284,7 @@ var macro =
}
},
"orgasm": false,
- "afterglow": true,
+ "afterglow": false,
"arousalEnabled": true,
@@ -402,48 +402,12 @@ var macro =
}
}
if (this.maleParts) {
- state = "";
- if (!this.arousalEnabled) {
- state = "limp";
- } else if (this.orgasm) {
- state = "spurting";
- } else {
- if (this.arousal < 25) {
- state = "limp";
- } else if (this.arousal < 75) {
- state = "swelling";
- } else if (this.arousal < 100) {
- state = "erect";
- } else if (this.arousal < 150) {
- state = "erect, throbbing";
- } else if (this.arousal < 200) {
- state = "erect, throbbing, pre-soaked";
- }
- }
-
- line = "Your " + length(macro.dickLength, unit, true) + " long " + state + " " + macro.dickType + " cock hangs from your hips, with two " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + "-wide balls hanging beneath.";
+ line = "Your " + this.describeDick + " cock hangs from your hips, with two " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + "-wide balls hanging beneath.";
result.push(line);
}
if (this.femaleParts) {
- state = "";
- if (!this.arousalEnabled) {
- state = "unassuming";
- } else if (this.orgasm) {
- state = "gushing, quivering";
- } else {
- if (this.arousal < 25) {
- state = "unassuming";
- } else if (this.arousal < 75) {
- state = "moist";
- } else if (this.arousal < 100) {
- state = "glistening";
- } else if (this.arousal < 150) {
- state = "dripping";
- } else if (this.arousal < 200) {
- state = "dripping, quivering";
- }
- }
- line = "Your glistening " + length(macro.vaginaLength, unit, true) + " long " + state + " slit is oozing between your legs."
+
+ line = "Your glistening " + this.describeVagina + " slit peeks out from between your legs."
result.push(line);
line = "You have two " + length(macro.breastDiameter, unit, true) + "-wide breasts that weigh " + mass(macro.breastMass, unit) + " apiece.";
result.push(line);
@@ -452,6 +416,51 @@ var macro =
return result;
},
+ get describeDick() {
+ state = "";
+ if (!this.arousalEnabled) {
+ state = "limp";
+ } else if (this.orgasm) {
+ state = "spurting";
+ } else {
+ if (this.arousal < 25) {
+ state = "limp";
+ } else if (this.arousal < 75) {
+ state = "swelling";
+ } else if (this.arousal < 100) {
+ state = "erect";
+ } else if (this.arousal < 150) {
+ state = "erect, throbbing";
+ } else if (this.arousal < 200) {
+ state = "erect, throbbing, pre-soaked";
+ }
+ }
+ return length(macro.dickLength, unit, true) + " long " + state + " " + macro.dickType;
+ },
+
+ get describeVagina() {
+ state = "";
+ if (!this.arousalEnabled) {
+ state = "unassuming";
+ } else if (this.orgasm) {
+ state = "gushing, quivering";
+ } else {
+ if (this.arousal < 25) {
+ state = "unassuming";
+ } else if (this.arousal < 75) {
+ state = "moist";
+ } else if (this.arousal < 100) {
+ state = "glistening";
+ } else if (this.arousal < 150) {
+ state = "dripping";
+ } else if (this.arousal < 200) {
+ state = "dripping, quivering";
+ }
+ }
+
+ return length(macro.vaginaLength, unit, true) + " long " + state
+ },
+
"growthPoints": 0,
"addGrowthPoints": function(mass) {
@@ -777,6 +786,47 @@ function stomp()
update([sound,line,linesummary,newline]);
}
+function grind()
+{
+ var area = macro.assArea / 2;
+
+ if (macro.maleParts)
+ area += macro.dickArea
+ if (macro.femalePartS)
+ area += macro.vaginaArea;
+
+ var prey = getPrey(biome,area);
+
+ var line = describe("grind", prey, macro, verbose);
+ var linesummary = summarize(prey.sum(), true);
+
+ var people = get_living_prey(prey.sum());
+ var sound = "";
+
+ if (people < 3) {
+ sound = "Thump.";
+ } else if (people < 10) {
+ sound = "Crunch.";
+ } else if (people < 50) {
+ sound = "Crrrrunch.";
+ } else if (people < 500) {
+ sound = "SMASH!";
+ } else if (people < 5000) {
+ sound = "CCCRASH!!";
+ } else {
+ sound = "Oh the humanity!";
+ }
+
+ var preyMass = prey.sum_property("mass");
+
+ macro.addGrowthPoints(preyMass);
+
+ macro.arouse(20);
+
+ updateVictims("ground",prey);
+ update([sound,line,linesummary,newline]);
+}
+
function anal_vore()
{
var area = macro.analVoreArea;
@@ -1381,7 +1431,7 @@ function startGame(e) {
document.getElementById("option-panel").style.display = 'none';
document.getElementById("action-panel").style.display = 'flex';
- victimTypes = ["stomped","digested","stomach","bowels"];
+ victimTypes = ["stomped","digested","stomach","bowels","ground"];
if (macro.maleParts) {
victimTypes = victimTypes.concat(["cock","balls"]);
@@ -1476,6 +1526,7 @@ window.addEventListener('load', function(event) {
victims["balls"] = initVictims();
victims["smothered"] = initVictims();
victims["splooged"] = initVictims();
+ victims["ground"] = initVictims();
document.getElementById("button-look").addEventListener("click",look);
document.getElementById("button-feed").addEventListener("click",feed);
@@ -1485,6 +1536,7 @@ window.addEventListener('load', function(event) {
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);
diff --git a/recursive-desc.js b/recursive-desc.js
index f5cc050..0350013 100644
--- a/recursive-desc.js
+++ b/recursive-desc.js
@@ -12,6 +12,7 @@ rules["cockslap"] = [];
rules["ball-smother"] = [];
rules["male-orgasm"] = [];
rules["female-orgasm"] = [];
+rules["grind"] = [];
function hasNothing(container, thing, amount) {
for (var key in container.contents) {
@@ -90,6 +91,17 @@ function describeDefault(action, container, macro, verbose=true) {
case "ball-smother": return "Your weighty balls spread over " + container.describe(verbose) + ", smothering them in musk.";
case "male-orgasm": return "You're cumming! Your thick cock spurts out $VOLUME of seed, splooging " + container.describe(verbose) + ".";
case "female-orgasm": return "You're cumming! Your moist slit sprays $VOLUME of slick femcum, splooging " + container.describe(verbose) + ".";
+ case "grind":
+ var end = (macro.arousalEnabled ? ", smashing them to fuel your lust." : ", smashing them to bits.");
+ if (macro.maleParts && macro.femaleParts) {
+ return "You grind your " + macro.describeDick + " cock and " + macro.describeVagina + " slit against " + container.describe(verbose) + end;
+ } else if (macro.maleParts && !macro.femaleParts) {
+ return "You grind your " + macro.describeDick + " shaft against " + container.describe(verbose) + end;
+ } else if (!macro.maleParts && macro.femaleParts) {
+ return "You grind your " + macro.describeVagina + " slit against " + container.describe(verbose) + end;
+ } else if (!macro.maleParts && !macro.femaleParts) {
+ return "You grind your hips against " + container.describe(verbose) + end;
+ }
}
}
diff --git a/stroll.html b/stroll.html
index 8b7c605..40f0c19 100644
--- a/stroll.html
+++ b/stroll.html
@@ -72,6 +72,7 @@
+