diff --git a/recursive-desc.js b/recursive-desc.js index 1aff9fe..b6f4a56 100644 --- a/recursive-desc.js +++ b/recursive-desc.js @@ -1203,21 +1203,6 @@ rules["chew"].push({ caught between two fingers and popped back in to be crunched between molars and swallowed."; } }); - -rules["chew"].push({ - "test": function(container, macro) { - return hasOnly(container, ["Person"]) && - hasExactly(container, "Person", 2) && - isGory(macro); - }, "desc": function(container, macro, verbose) { - var prey1 = macro.victimsHuman ? new Human(1).describe(verbose) : new Person(1).describe(verbose); - var prey2 = macro.victimsHuman ? new Human(1).describe(verbose) : new Person(1).describe(verbose); - return "Powerful " + macro.jawDesc(true) + " obliterate " + prey1 +"'s body. You toss your head back and swallow their gory remains, your free hand slowly crushing " + prey2 + " like a nut \ - in a vice. A heartbeat later, their face is jammed into your bloody throat. A squeeze of your " + macro.jawDesc(true) + " snaps their spine with ease, and their limp body plunges down into \ - your churning depths to be destroyed."; - } -}); - // STOMPING rules["stomp"].push({ @@ -1260,6 +1245,38 @@ rules["stomp"].push({ } }); +rules["stomp"].push({ + "test": function(container, macro) { + return hasOnly(container, ["Person"]) && + hasExactly(container, "Person", 1) && + isFatal(macro); + }, "desc": function(container, macro, verbose) { + return "Your heavy " + macro.footDesc() + " slams down on " + container.describe(verbose) + ", smashing the poor thing like an insect."; + } +}); + +rules["stomp"].push({ + "test": function(container, macro) { + return hasOnly(container, ["Bus"]) && + hasExactly(container, "Bus", 1) && + isFatal(macro); + }, "desc": function(container, macro, verbose) { + return "Your heavy " + macro.footDesc() + " slams down on " + container.describe(verbose) + ", smashing the poor thing like an insect."; + } +}); + + +rules["stomp"].push({ + "test": function(container, macro) { + return hasOnly(container, ["Person","Car", "Bus"]) && + hasExactly(container, "Bus", 1) && + hasLessThan(container, "Car", 10); + }, "desc": function(container, macro, verbose) { + return "You punt a " + container.contents["Bus"].describe(verbose) + ", sending it tumbling down the road into a " + describe_all(container.contents, verbose, ["Bus"]); + } +}); + + // ANAL VORE rules["anal-vore"].push({ diff --git a/recursive-macro.js b/recursive-macro.js index 1f11d37..29e6a8e 100644 --- a/recursive-macro.js +++ b/recursive-macro.js @@ -137,6 +137,40 @@ var clusters = "Macro": 0, }; +var cluster_chances = +{ + "Container": 0, + "Person": 0.8, + "Human": 0.8, + "Cow": 0.5, + "Car": 0.5, + "Bus": 0.25, + "Tram": 0.2, + "House": 0.5, + "Barn": 0.1, + "Small Skyscraper": 0.25, + "Large Skyscraper": 0.25, + "Train": 0.1, + "Train Car": 0.05, + "Parking Garage": 0.1, + "Town": 0.1, + "City": 0.2, + "Continent": 0.5, + "Planet": 1, + "Star": 1, + "Solar System": 1, + "Galaxy": 1, + "Cluster": 1, + "Universe": 1, + "Multiverse": 1, + "Soldier": 0, + "Tank": 0, + "Artillery": 0, + "Helicopter": 0, + "Micro": 10, + "Macro": 0, +}; + var contents = { "Container": [], @@ -273,10 +307,10 @@ function fill_area(area, weights, variance=0.15) // the first few ones get a much better shot while (loopvar > 0) { - if (loopvar <= clusters[candidate.name] && loopvar == 1) + if (loopvar <= clusters[candidate.name] && loopvar == 1 && Math.random() < cluster_chances[candidate.name]) count += 1; else if (loopvar <= clusters[candidate.name]) { - if (Math.random() < candidate.weight ? 1 : 0 || Math.random() < 0.75) { + if (Math.random() < candidate.weight ? 1 : 0 || Math.random() < 0.75 * cluster_chances[candidate.name]) { count += 1; } }