| @@ -166,7 +166,7 @@ var macro = | |||||
| this.contents.push(prey); | this.contents.push(prey); | ||||
| }, | }, | ||||
| "describeDigestion": function(container) { | "describeDigestion": function(container) { | ||||
| return "Your stomach gurgles as it digests " + container.describe(false); | |||||
| return describe("stomach",container,verbose); | |||||
| }, | }, | ||||
| "fill": function(owner,container) { | "fill": function(owner,container) { | ||||
| //no-op | //no-op | ||||
| @@ -186,7 +186,7 @@ var macro = | |||||
| this.contents.push(prey); | this.contents.push(prey); | ||||
| }, | }, | ||||
| "describeDigestion" : function(container) { | "describeDigestion" : function(container) { | ||||
| return "Your bowels churn as they absorb " + container.describe(false); | |||||
| return describe("bowels",container,verbose); | |||||
| }, | }, | ||||
| "fill": function(owner,container) { | "fill": function(owner,container) { | ||||
| //no-op | //no-op | ||||
| @@ -206,7 +206,7 @@ var macro = | |||||
| this.contents.push(prey); | this.contents.push(prey); | ||||
| }, | }, | ||||
| "describeDigestion" : function(container) { | "describeDigestion" : function(container) { | ||||
| return "Your womb squeezes as it dissolves " + container.describe(false); | |||||
| return describe("womb",container,verbose); | |||||
| }, | }, | ||||
| "fill": function(owner,container) { | "fill": function(owner,container) { | ||||
| owner.femcumStorage.amount += container.sum_property("mass") / 1e3; | owner.femcumStorage.amount += container.sum_property("mass") / 1e3; | ||||
| @@ -226,7 +226,7 @@ var macro = | |||||
| this.contents.push(prey); | this.contents.push(prey); | ||||
| }, | }, | ||||
| "describeDigestion": function(container) { | "describeDigestion": function(container) { | ||||
| return "Your balls slosh as they transform " + container.describe(false) + " into cum"; | |||||
| return describe("balls",container,verbose); | |||||
| }, | }, | ||||
| "fill": function(owner,container) { | "fill": function(owner,container) { | ||||
| owner.cumStorage.amount += container.sum_property("mass") / 1e3; | owner.cumStorage.amount += container.sum_property("mass") / 1e3; | ||||
| @@ -14,6 +14,11 @@ rules["male-orgasm"] = []; | |||||
| rules["female-orgasm"] = []; | rules["female-orgasm"] = []; | ||||
| rules["grind"] = []; | rules["grind"] = []; | ||||
| rules["stomach"] = []; | |||||
| rules["balls"] = []; | |||||
| rules["womb"] = []; | |||||
| rules["ass"] = []; | |||||
| function isFatal(macro) { | function isFatal(macro) { | ||||
| return macro.brutality >= 1; | return macro.brutality >= 1; | ||||
| } | } | ||||
| @@ -110,9 +115,13 @@ function describeDefault(action, container, macro, verbose=true) { | |||||
| return "You grind your " + macro.describeDick + " shaft against " + container.describe(verbose) + end; | return "You grind your " + macro.describeDick + " shaft against " + container.describe(verbose) + end; | ||||
| } else if (!macro.maleParts && macro.femaleParts) { | } else if (!macro.maleParts && macro.femaleParts) { | ||||
| return "You grind your " + macro.describeVagina + " slit against " + container.describe(verbose) + end; | return "You grind your " + macro.describeVagina + " slit against " + container.describe(verbose) + end; | ||||
| } else if (!macro.maleParts && !macro.femaleParts) { | |||||
| } else { | |||||
| return "You grind your hips against " + container.describe(verbose) + end; | return "You grind your hips against " + container.describe(verbose) + end; | ||||
| } | } | ||||
| case "stomach": return "Your stomach gurgles as it digests " + container.describe(false); | |||||
| case "bowels": return "Your bowels churn as they absorb " + container.describe(false); | |||||
| case "womb": return "Your womb squeezes as it dissolves " + container.describe(false); | |||||
| case "balls": return "Your balls slosh as they transform " + container.describe(false) + " into cum"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -105,8 +105,9 @@ var clusters = | |||||
| // general logic: each step fills in a fraction of the remaining space | // general logic: each step fills in a fraction of the remaining space | ||||
| function fill_area(area, weights) | |||||
| function fill_area(area, weights, variance=0.15) | |||||
| { | { | ||||
| area = area + Math.random() * variance * 2 - variance; | |||||
| result = []; | result = []; | ||||
| candidates = []; | candidates = []; | ||||
| for (var key in weights) { | for (var key in weights) { | ||||