From 7d947f67fc2db7ed401933a96ce7d83dd9acda3d Mon Sep 17 00:00:00 2001 From: jsb5468 Date: Sat, 19 Jan 2019 20:25:13 -0500 Subject: [PATCH 01/17] New Military Units/Some Building Desc improvements Added new military units [Squad, Platoon, Company,Battalion,,Brigade,Division,Tank Division, Army] changed the random desc of funct House to include home as a random option. changed random desc of fuct Barn to include color red, changed random desc of funct LargeSkyscraper to include glass --- game.js | 31 ++++++- recursive-macro.js | 224 ++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 245 insertions(+), 10 deletions(-) diff --git a/game.js b/game.js index 6bb6b5f..1fcd068 100644 --- a/game.js +++ b/game.js @@ -1873,12 +1873,33 @@ function getWeights(region, area) { } if (macro.victimsMilitary) { - weights["Soldier"] = 0.01; - weights["Tank"] = 0.0005; - weights["Artillery"] = 0.0001; - weights["Helicopter"] = 0.00005; + if (macro.height < 500){ + weights["Soldier"] = 0.08; + weights["Tank"] = 0.07; + weights["Artillery"] = 0.06; + weights["Helicopter"] = 0.05, + weights["Squad"]= .04; + weights["Platoon"]= .4, + weights["Company"]= .5, + weights["Battalion"]= .6, + weights["Brigade"]= .7; + } else if (macro.height < 5000){ + weights["Tank"] = 0.0002; + weights["Artillery"] = 0.001; + weights["Squad"]= .0001; + weights["Platoon"]= .005, + weights["Company"]= .01, + weights["Battalion"]= .02, + weights["Brigade"]= .03; + weights["Division"]= .02, + weights["Tank Division"]= .01, + weights["Army"]= .01; + } else { + weights["Division"]= .02, + weights["Tank Division"]= .01, + weights["Army"]= .01; + } } - if (macro.victimsMicros) { weights["Micro"] = 1; } diff --git a/recursive-macro.js b/recursive-macro.js index bba63aa..07b04d0 100644 --- a/recursive-macro.js +++ b/recursive-macro.js @@ -33,6 +33,14 @@ var things = "Helicopter": Helicopter, "Micro": Micro, "Macro": Macro, + "Squad": Squad, + "Platoon": Platoon, + "Company": Company, + "Battalion": Battalion, + "Brigade": Brigade, + "Division": Division, + "Tank Division": TankDivision, + "Army": Army, }; var areas = @@ -67,6 +75,14 @@ var areas = "Helicopter": 8, "Micro": 0.05, "Macro": 100, + "Squad": 20, + "Platoon": 100, + "Company": 500, + "Battalion": 3000, + "Brigade": 20000, + "Division": 80000, + "Tank Division": 100000, + "Army": 750000, }; var masses = @@ -101,6 +117,14 @@ var masses = "Helicopter": 1500, "Micro": 0.01, "Macro": 80000, + "Squad": 1, + "Platoon": 100, + "Company": 500, + "Battalion": 1000, + "Brigade": 1500, + "Division": 2000, + "Tank Division": 3000, + "Army": 5000, }; var clusters = @@ -135,6 +159,14 @@ var clusters = "Helicopter": 0, "Micro": 10, "Macro": 0, + "Squad": 20, + "Platoon": 2, + "Company": 2, + "Battalion": 2, + "Brigade": 2, + "Division": 3, + "Tank Division": 1, + "Army": 2, }; var cluster_chances = @@ -169,6 +201,14 @@ var cluster_chances = "Helicopter": 0, "Micro": 10, "Macro": 0, + "Squad": .1, + "Platoon": .1, + "Company": .1, + "Battalion": .1, + "Brigade": .1, + "Division": .1, + "Tank Division": 0.15, + "Army": .1, }; var contents = @@ -202,7 +242,24 @@ var contents = "Artillery": [["Soldier",4,6]], "Helicopter": [["Soldier",4,16]], "Micro": [[]], - "Macro": [[]] + "Macro": [[]], + //Alterante Army Structuring, may be used later + //"Squad": [["Soldier",6,9]], + // "Platoon": [["Squad",3,4]], + //"Company": [["Platoon",3,5],["Squad",0,2]], + //"Battalion": [["Company",4,6]], + //"Brigade": [["Battalion",2,5],["Company",0,3]], + //"Division": [["Brigade",2,4]], + //"Tank Division": [["Brigade",2,4],["Tank",250,500]], + //"Army": [["Division",3,8],["Tank Division",1,5]], + "Squad": [["Soldier",6,9]], + "Platoon": [["Soldier",16,44]], + "Company": [["Soldier",60,200]], + "Battalion": [["Soldier",300,1000]], + "Brigade": [["Soldier",1500,3200]], + "Division": [["Soldier",10000,16000]], + "Tank Division": [["Soldier",8000,1200],["Tank",250,500]], + "Army": [["Soldier",40000,75000]], }; // replace all instances of from with to @@ -798,7 +855,7 @@ function Bus(count = 1) { this.describeOne = function(verbose=true) { var adjective = random_desc(["rusty","brand-new"], (verbose ? 0.3 : 0)); var color = random_desc(["black","tan","gray"], (verbose ? 1 : 0)); - var type = random_desc(["bus","double-decker bus","articulating bus"]); + var type = random_desc(["bus","school bus","double-decker bus","articulating bus"]); return "a " + merge_desc([adjective,color,type]); }; @@ -924,7 +981,7 @@ function House(count = 1) { this.describeOne = function(verbose=true) { var size = random_desc(["little","two-story","large"], (verbose ? 0.5 : 0)); var color = random_desc(["blue","white","gray","tan","green"], (verbose ? 0.5 : 0)); - var name = random_desc(["house","house","house","house","house","trailer"], 1); + var name = random_desc(["house","home","house","house","house","trailer"], 1); return "a " + merge_desc([size,color,name]); }; @@ -953,7 +1010,7 @@ function Barn(count = 1) { this.describeOne = function(verbose=true) { var size = random_desc(["little","big","large"], (verbose ? 0.5 : 0)); - var color = random_desc(["blue","white","gray","tan","green"], (verbose ? 0.5 : 0)); + var color = random_desc(["blue","white","gray","tan","green","red"], (verbose ? 0.5 : 0)); var name = random_desc(["barn","barn","barn","barn","barn","farmhouse"], 1); return "a " + merge_desc([size,color,name]); }; @@ -1012,7 +1069,7 @@ function LargeSkyscraper(count = 1) { this.contents = initContents(this.name,this.count); this.describeOne = function(verbose=true) { - var color = random_desc(["blue","white","gray","tan","green"], (verbose ? 0.5 : 0)); + var color = random_desc(["blue","white","gray","tan","green","glass"], (verbose ? 0.5 : 0)); var name = random_desc(["skyscraper","office tower","office building"], 1); return "a " + merge_desc(["towering",color,name]); }; @@ -1291,3 +1348,160 @@ function Macro(count = 1) { return (this.count == 1 ? "a smaller macro" : this.count + " smaller macros"); }; } + +function Squad(count = 1) { + this.name = "Squad"; + copy_defaults(this,new DefaultEntity()); + this.count = count; + this.contents = initContents(this.name,this.count); + + this.describeOne = function(verbose=true) { + return "a squad"; + }; + + this.describe = function(verbose = true) { + if (verbose) { + return (this.count == 1 ? "a squad" : this.count + " squads") + " made up of " + describe_all(this.contents, verbose); + } else { + return (this.count == 1 ? "a squad" : this.count + " squads"); + } + }; + } + +function Platoon(count = 1) { + this.name = "Platoon"; + copy_defaults(this,new DefaultEntity()); + this.count = count; + this.contents = initContents(this.name,this.count); + + this.describeOne = function(verbose=true) { + return "a military platoon"; + }; + + this.describe = function(verbose = true) { + if (verbose) { + return (this.count == 1 ? "a platoon" : this.count + " platoons") + " consisting of " + describe_all(this.contents, verbose); + } else { + return (this.count == 1 ? "a platoon" : this.count + " platoons"); + } + }; + } + +function Company(count = 1) { + this.name = "Company"; + copy_defaults(this,new DefaultEntity()); + this.count = count; + this.contents = initContents(this.name,this.count); + + this.describeOne = function(verbose=true) { + return "a company of soldiers"; + }; + + this.describe = function(verbose = true) { + if (verbose) { + return (this.count == 1 ? "a company" : this.count + " companies") + " of " + describe_all(this.contents, verbose); + } else { + return (this.count == 1 ? "a company" : this.count + " companies"); + } + }; + } + +function Battalion(count = 1) { + this.name = "Battalion"; + copy_defaults(this,new DefaultEntity()); + this.count = count; + this.contents = initContents(this.name,this.count); + + this.describeOne = function(verbose=true) { + return "a battalion"; + }; + + this.describe = function(verbose = true) { + if (verbose) { + return (this.count == 1 ? "a battalion" : this.count + " battalions") + " containing " + describe_all(this.contents, verbose); + } else { + return (this.count == 1 ? "a battalion" : this.count + " battalions"); + } + }; + } + +function Brigade(count = 1) { + this.name = "Brigade"; + copy_defaults(this,new DefaultEntity()); + this.count = count; + this.contents = initContents(this.name,this.count); + + this.describeOne = function(verbose=true) { + return "a brigade"; + }; + + this.describe = function(verbose = true) { + if (verbose) { + return (this.count == 1 ? "a brigade" : this.count + " brigades") + " made up of " + describe_all(this.contents, verbose); + } else { + return (this.count == 1 ? "a brigade" : this.count + " brigades"); + } + }; + } + +function Division(count = 1) { + this.name = "Division"; + copy_defaults(this,new DefaultEntity()); + this.count = count; + this.contents = initContents(this.name,this.count); + + this.describeOne = function(verbose=true) { + return "a division"; + }; + + this.describe = function(verbose = true) { + if (verbose) { + return (this.count == 1 ? "a division" : this.count + " divisions") + " of " + describe_all(this.contents, verbose); + } else { + return (this.count == 1 ? "a division" : this.count + " divisions"); + } + }; + } + +function TankDivision(count = 1) { + this.name = "Tank Division"; + copy_defaults(this,new DefaultEntity()); + this.count = count; + this.contents = initContents(this.name,this.count); + + this.describeOne = function(verbose=true) { + return "a tank division"; + }; + + this.describe = function(verbose = true) { + if (verbose) { + return (this.count == 1 ? "a tank division" : this.count + " tank divisions") + " of " + describe_all(this.contents, verbose); + } else { + return (this.count == 1 ? "a tank division" : this.count + " tank divisions"); + } + }; + } + +function Army(count = 1) { + this.name = "Army"; + copy_defaults(this,new DefaultEntity()); + this.count = count; + this.contents = initContents(this.name,this.count); + + this.describeOne = function(verbose=true) { + return "an army"; + }; + + this.describe = function(verbose = true) { + if (verbose) { + return (this.count == 1 ? "an army" : this.count + " armies") + " made up of " + describe_all(this.contents, verbose); + } else { + return (this.count == 1 ? "an army" : this.count + " armies"); + } + }; + } + + //"Brigade": 20000, + //"Division": 80000, + //"Tank Division": 100000, + //"Army": 750000, \ No newline at end of file From ea5dd00007f19c8c3130056e35720375bd98aab0 Mon Sep 17 00:00:00 2001 From: jsb5468 Date: Sun, 20 Jan 2019 23:04:18 -0500 Subject: [PATCH 02/17] Fixed incorrect text on defaultScat --- recursive-desc.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recursive-desc.js b/recursive-desc.js index bcb54fb..96a9579 100644 --- a/recursive-desc.js +++ b/recursive-desc.js @@ -951,7 +951,7 @@ function defaultScat(container, macro, verbose, flat) { } else if (container.count == 0) { return "You squat down and let out a $MASS log of shit."; } else if (isSadistic(macro)) { - let line = "You squat down, letting out a grunt as your rancid bowels force out a $MASS, $LENGTH-long heap of shit. The fatally-pungent scat buries " + container.describe(verbose) + ", ending " + numberRough(sum,"of") + " lives and entombing them in your shit."; + let line = "You squat down, letting out a grunt as your rancid bowels force out a $MASS, $LENGTH-long heap of shit. The fatally-pungent scat buries " + container.describe(verbose) + ", ending " + numberRough(sum,"of") + (sum > 1 ? " lives" : " life") + " and entombing them in your shit."; if (macro.scatStorage.victims.count > 0) { line += " Embedded in the vomit-inducing heap are the mangled, crushed remains of " + listSum(macro.scatStorage.victims.sum()) + ", " + numberRough(get_living_prey(macro.scatStorage.victims.sum()), "of") + " living creatures converted to noxious scat by your disgusting depths."; } From 68c14d35da465264fa8bce12e4b04053f17d8b5b Mon Sep 17 00:00:00 2001 From: jsb5468 Date: Sun, 20 Jan 2019 23:09:42 -0500 Subject: [PATCH 03/17] More Adjectives/Tweak Squad|Platoon cluster chance halved cluster chance of squads and platoons, added new adj to people, humans, carempty, car, bus, tram, train, train car, house, barn Added new types to bus, skyscrapter Added new colors to train car, house --- recursive-macro.js | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/recursive-macro.js b/recursive-macro.js index 07b04d0..804f89f 100644 --- a/recursive-macro.js +++ b/recursive-macro.js @@ -201,8 +201,8 @@ var cluster_chances = "Helicopter": 0, "Micro": 10, "Macro": 0, - "Squad": .1, - "Platoon": .1, + "Squad": .05, + "Platoon": .05, "Company": .1, "Battalion": .1, "Brigade": .1, @@ -689,7 +689,7 @@ function Person(count = 1) { this.contents = initContents(this.name,this.count); this.describeOne = function (verbose=true) { - var body = random_desc(["skinny","fat","tall","short","stocky","spindly"], (verbose ? 0.6 : 0)); + var body = random_desc(["skinny","fat","tall","short","stocky","spindly","muscular","fit","multi-colored"], (verbose ? 0.6 : 0)); var sex = random_desc(["male", "female"], (verbose ? 1 : 0)); var species = ""; species = random_desc(["wolf","cat","dog","squirrel","horse","hyena","fox","jackal","crux","sergal"]); @@ -724,7 +724,7 @@ function Human(count = 1) { this.contents = initContents(this.name,this.count); this.describeOne = function (verbose=true) { - var body = random_desc(["skinny","fat","tall","short","stocky","spindly"], (verbose ? 0.6 : 0)); + var body = random_desc(["skinny","fat","tall","short","stocky","spindly","muscular","fit","tanned"], (verbose ? 0.6 : 0)); var sex = random_desc(["man", "woman"], 1); return "a " + merge_desc([body,sex]); }; @@ -790,7 +790,7 @@ function EmptyCar(count = 1) { this.describeOne = function(verbose=true) { var color = random_desc(["black","black","gray","gray","blue","red","tan","white","white"]); - var adjective = random_desc(["rusty","brand-new"],0.3); + var adjective = random_desc(["rusty","brand-new","luxury","beat-up","dented","restored","classic"],0.3); var type = random_desc(["SUV","coupe","sedan","truck","van","convertible"]); return "a parked " + merge_desc([adjective,color,type]); }; @@ -822,7 +822,7 @@ function Car(count = 1) { this.describeOne = function(verbose=true) { var color = random_desc(["black","black","gray","gray","blue","red","tan","white","white"], (verbose ? 1 : 0)); - var adjective = random_desc(["rusty","brand-new"], (verbose ? 0.3 : 0)); + var adjective = random_desc(["rusty","brand-new","luxury","beat-up","dented","restored","classic"], (verbose ? 0.3 : 0)); var type = random_desc(["SUV","coupe","sedan","truck","van","convertible"]); return "a " + merge_desc([adjective,color,type]); }; @@ -853,9 +853,9 @@ function Bus(count = 1) { this.contents = initContents(this.name,this.count); this.describeOne = function(verbose=true) { - var adjective = random_desc(["rusty","brand-new"], (verbose ? 0.3 : 0)); + var adjective = random_desc(["rusty","brand-new","aging","modern"], (verbose ? 0.3 : 0)); var color = random_desc(["black","tan","gray"], (verbose ? 1 : 0)); - var type = random_desc(["bus","school bus","double-decker bus","articulating bus"]); + var type = random_desc(["bus","school bus","double-decker bus","articulating bus","open-top bus","sleeper bus","intercity bus"]); return "a " + merge_desc([adjective,color,type]); }; @@ -885,7 +885,7 @@ function Tram(count = 1) { this.contents = initContents(this.name,this.count); this.describeOne = function(verbose=true) { - var adjective = random_desc(["rusty","weathered"], (verbose ? 0.3 : 0)); + var adjective = random_desc(["rusty","weathered","well-maintained",], (verbose ? 0.3 : 0)); var color = random_desc(["blue","brown","gray"], (verbose ? 1 : 0)); var type = random_desc(["tram"]); return "a " + merge_desc([adjective,color,type]); @@ -920,7 +920,7 @@ function Train(count = 1) { this.contents = initContents(this.name,this.count); this.describeOne = function(verbose=true) { - var adjective = random_desc(["rusty","brand-new"], (verbose ? 0.3 : 0)); + var adjective = random_desc(["rusty","brand-new","steam","freshly-painted"], (verbose ? 0.3 : 0)); var color = random_desc(["black","tan","gray"], (verbose ? 1 : 0)); var type = random_desc(["train","passenger train","freight train"]); return "a " + merge_desc([adjective,color,type]); @@ -957,8 +957,8 @@ function TrainCar(count = 1) { this.contents = initContents(this.name,this.count); this.describeOne = function(verbose=true) { - var adjective = random_desc(["rusty","brand-new"], (verbose ? 0.3 : 0)); - var color = random_desc(["black","tan","gray"], (verbose ? 1 : 0)); + var adjective = random_desc(["rusty","brand-new","vintage","graffitied","well-maintained"], (verbose ? 0.3 : 0)); + var color = random_desc(["black","tan","gray","yellow","steel","wooden"], (verbose ? 1 : 0)); var type = random_desc(["train car","passenger train car","freight train car"]); return "a " + merge_desc([adjective,color,type]); }; @@ -979,8 +979,8 @@ function House(count = 1) { this.contents = initContents(this.name,this.count); this.describeOne = function(verbose=true) { - var size = random_desc(["little","two-story","large"], (verbose ? 0.5 : 0)); - var color = random_desc(["blue","white","gray","tan","green"], (verbose ? 0.5 : 0)); + var size = random_desc(["little","two-story","large","well-built","run-down","cheap",], (verbose ? 0.5 : 0)); + var color = random_desc(["blue","white","gray","tan","green","wooden","brick"], (verbose ? 0.5 : 0)); var name = random_desc(["house","home","house","house","house","trailer"], 1); return "a " + merge_desc([size,color,name]); }; @@ -1009,7 +1009,7 @@ function Barn(count = 1) { this.contents = initContents(this.name,this.count); this.describeOne = function(verbose=true) { - var size = random_desc(["little","big","large"], (verbose ? 0.5 : 0)); + var size = random_desc(["little","big","large","weathered","rotted","new"], (verbose ? 0.5 : 0)); var color = random_desc(["blue","white","gray","tan","green","red"], (verbose ? 0.5 : 0)); var name = random_desc(["barn","barn","barn","barn","barn","farmhouse"], 1); return "a " + merge_desc([size,color,name]); @@ -1040,7 +1040,7 @@ function SmallSkyscraper(count = 1) { this.describeOne = function(verbose=true) { var color = random_desc(["blue","white","gray","tan","green"], (verbose ? 0.5 : 0)); - var name = random_desc(["skyscraper","office tower","office building"], 1); + var name = random_desc(["skyscraper","office tower","office building","high rise"], 1); return "a " + merge_desc([color,name]); }; From d33a0367213005c758f0f59b132200765eaf85e5 Mon Sep 17 00:00:00 2001 From: jsb5468 Date: Sun, 20 Jan 2019 23:11:31 -0500 Subject: [PATCH 04/17] Chnged Beds unit to people Using beds as a unit was originally to give something person scaled in the early game, however it was a clunky(non-intutive) unit, so I swapped it with people. --- units.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/units.js b/units.js index 9fbc3dd..6597395 100644 --- a/units.js +++ b/units.js @@ -204,7 +204,7 @@ function approxMass(kg, singular=false) { } else if (kg < 54431) { let mass = round(kg/6000,2); return (singular || mass == 1 ? "an elephant" : mass + " elephants"); - //this unit almos never gets used and is mostly redundant, perhaps remove it if units are cleaned up + //this unit almost never gets used and is mostly redundant, perhaps remove it if units are cleaned up } else if (kg < 10000000) { let mass = round(kg/54431.1,2); return (singular || mass == 1 ? "a tank" : mass + " tanks"); @@ -221,7 +221,7 @@ function approxMass(kg, singular=false) { } else if (kg < 6e23) { let mass = round(kg/4.6121304e20,3); return (singular || mass == 1 ? "Australia" : mass + " Australias"); - //this is a napkin math number based on the land area of Australia, 25km of height and rough desnity or rock + //this is a napkin math number based on the land area of Australia, 25km of height and rough density of rock } else if (kg < 2e27) { let mass = round(kg/5.972e24,4); return (singular || mass == 1 ? "the Earth" : mass + " Earths"); @@ -267,9 +267,9 @@ function customaryLength(m, singular=false) { } function approxLength(m, singular=false) { - if (m < 30) { - let length = round(m/1.905,1); - return length + (singular || length == 1 ? " bed" : " beds"); + if (m < 25) { + let length = round(m/1.9,1); + return length + (singular || length == 1 ? " person" : " people"); } else if (m < 350) { let length = round(m/49,1); return length + (singular || length == 1 ? " football field" : " football fields"); From af37c6d91ad1568bdcfbd09bc83904ebcac4e445 Mon Sep 17 00:00:00 2001 From: jsb5468 Date: Sun, 20 Jan 2019 23:14:16 -0500 Subject: [PATCH 05/17] New Unit [Business] added a new unit caleed business that slots between houses and skyscrapers. This unit is supposed to replicate small commercial builds one would find in towns and at the outskirts of cities. --- game.js | 1 + recursive-desc.js | 11 +++++++++++ recursive-macro.js | 42 +++++++++++++++++++++++++++++++++++++++--- 3 files changed, 51 insertions(+), 3 deletions(-) diff --git a/game.js b/game.js index 1fcd068..8b9d637 100644 --- a/game.js +++ b/game.js @@ -1856,6 +1856,7 @@ function getWeights(region, area) { "House": 0.1, "Car": 0.07, "Bus": 0.02, + "Business": 0.075, "Parking Garage": 0.003, "Small Skyscraper": 0.05, "Town": 0.00001, diff --git a/recursive-desc.js b/recursive-desc.js index 96a9579..a2ecd0e 100644 --- a/recursive-desc.js +++ b/recursive-desc.js @@ -2100,6 +2100,17 @@ rules["anal-vore"].push({ } }); +rules["anal-vore"].push({ + "test": function(container, macro) { + return hasExactly(container, "Business", 1) && + hasOnly(container, ["Business"]); + }, "desc": function(container, macro, verbose, flat) { + return "You set your weighty rump down on " + container.describe() + " and feel it penerate your hole. Once your weight has settled you clench your sphincter, seperating the building from its foundations with a crCraCHH \ +and pulling it off the groud and inside of your ass. You feel the immense pressure of your anal cavity slowly crushing the building, bringing newfound pleasure with every shift and temour within the structure."; + } +}); + + rules["anal-vore"].push({ "test": function(container, macro) { return hasExactly(container, "Train", 1) && diff --git a/recursive-macro.js b/recursive-macro.js index 804f89f..cd62d7e 100644 --- a/recursive-macro.js +++ b/recursive-macro.js @@ -11,6 +11,7 @@ var things = "Bus": Bus, "Tram": Tram, "House": House, + "Business": Business, "Barn": Barn, "Small Skyscraper": SmallSkyscraper, "Large Skyscraper": LargeSkyscraper, @@ -53,6 +54,7 @@ var areas = "Bus": 12, "Tram": 20, "House": 150, + "Business": 400, "Barn": 300, "Small Skyscraper": 1000, "Large Skyscraper": 2000, @@ -95,6 +97,7 @@ var masses = "Bus": 5000, "Tram": 10000, "House": 10000, + "Business": 50000, "Barn": 5000, "Small Skyscraper": 10000000, "Large Skyscraper": 80000000, @@ -137,6 +140,7 @@ var clusters = "Bus": 1, "Tram": 1, "House": 5, + "Business": 5, "Barn": 1, "Small Skyscraper": 2, "Large Skyscraper": 1, @@ -179,6 +183,7 @@ var cluster_chances = "Bus": 0.25, "Tram": 0.2, "House": 0.5, + "Business": .05, "Barn": 0.1, "Small Skyscraper": 0.25, "Large Skyscraper": 0.25, @@ -223,13 +228,14 @@ var contents = "Train": [["Person",1,4,"engine"],["Train Car",2,10]], "Train Car": [["Person",10,40]], "House": [["Person",0,8],["Empty Car",0,2]], + "Business": [["Person",0,30],["Car",0,20]], "Barn": [["Person",0,2],["Cow",30,70]], "Small Skyscraper": [["Person",150,750],["Empty Car",10,50]], "Large Skyscraper": [["Person",500,1500],["Empty Car",20,100]], "Parking Garage": [["Person",10,200],["Empty Car",100,300],["Car",5,30]], - "Town": [["Person",10000,100000],["House",5000,50000],["Empty Car",200,800],["Car",500,80000],["Bus",5,25],["Train",5,25]], - "City": [["Person",100000,1500000],["House",20000,200000],["Empty Car",10000,100000],["Car",7500,125000],["Bus",200,400],["Train",10,50],["Tram",25,100],["Small Skyscraper",50,300],["Large Skyscraper",10,75],["Parking Garage",5,10]], - "Continent": [["Person",1000000,15000000],["House",2500,10000],["Car",25000,375000],["Train",50,500],["Town",500,1000],["City",50,250]], + "Town": [["Person",10000,100000],["House",5000,50000],["Empty Car",200,800],["Car",500,80000],["Bus",5,25],["Train",5,25],["Business",500,5000]], + "City": [["Person",100000,1500000],["House",20000,200000],["Empty Car",10000,100000],["Car",7500,125000],["Bus",200,400],["Train",10,50],["Tram",25,100],["Small Skyscraper",50,300],["Large Skyscraper",10,75],["Parking Garage",5,10],["Business",2000,10000]], + "Continent": [["Person",1000000,15000000],["House",2500,10000],["Car",25000,375000],["Train",50,500],["Town",500,1000],["City",50,250],["Business",250,1000]], "Planet": [["Continent",4,9]], "Star": [], "Solar System": [["Star",1,1],["Planet",5,15]], @@ -1001,6 +1007,36 @@ function House(count = 1) { } }; } +//might split this into a general business and resutrant categories +function Business(count = 1) { + this.name = "Business"; + copy_defaults(this,new DefaultEntity()); + this.count = count; + this.contents = initContents(this.name,this.count); + + this.describeOne = function(verbose=true) { + var size = random_desc(["little","two-story","large","well-built","run-down","cheap","aging","corner"], (verbose ? 0.5 : 0)); + var color = random_desc(["blue","white","gray","tan","green","brick","concrete"], (verbose ? 0.5 : 0)); + var name = random_desc(["mall","resturant","bank","clinic","shop","post-office","tire shop","chain resturant","grocery store","barber shop","pizza resturant","hardware store","movie theather","gas station"], 1); + return "a " + merge_desc([size,color,name]); + }; + + this.describe = function(verbose = true) { + if (verbose) { + if (this.count <= 3) { + var list = []; + for (var i = 0; i < this.count; i++) { + list.push(this.describeOne(this.count < 2)); + } + return merge_things(list) + " with " + describe_all(this.contents,verbose); + } else { + return this.count + " local business with " + describe_all(this.contents,verbose) + "inside"; + } + } else { + return (this.count > 1 ? this.count + " buildings" : "a local business"); + } + }; +} function Barn(count = 1) { this.name = "Barn"; From f7dfed610344e6773a9ad46f0882ee150457aba5 Mon Sep 17 00:00:00 2001 From: jsb5468 Date: Tue, 22 Jan 2019 00:28:31 -0500 Subject: [PATCH 06/17] Minor Cleanup took a - of a post office, added a comment explaining weights --- game.js | 2 +- recursive-macro.js | 7 +------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/game.js b/game.js index 8b9d637..95c61f9 100644 --- a/game.js +++ b/game.js @@ -1829,7 +1829,7 @@ function getOnePrey(biome, area, sameSize = true) else return new Container(); } - +//set weights(how often a thing is encountered) function getWeights(region, area) { let weights = {}; diff --git a/recursive-macro.js b/recursive-macro.js index cd62d7e..d6548a8 100644 --- a/recursive-macro.js +++ b/recursive-macro.js @@ -1017,7 +1017,7 @@ function Business(count = 1) { this.describeOne = function(verbose=true) { var size = random_desc(["little","two-story","large","well-built","run-down","cheap","aging","corner"], (verbose ? 0.5 : 0)); var color = random_desc(["blue","white","gray","tan","green","brick","concrete"], (verbose ? 0.5 : 0)); - var name = random_desc(["mall","resturant","bank","clinic","shop","post-office","tire shop","chain resturant","grocery store","barber shop","pizza resturant","hardware store","movie theather","gas station"], 1); + var name = random_desc(["mall","resturant","bank","clinic","shop","post office","tire shop","chain resturant","grocery store","barber shop","pizza resturant","hardware store","movie theather","gas station"], 1); return "a " + merge_desc([size,color,name]); }; @@ -1536,8 +1536,3 @@ function Army(count = 1) { } }; } - - //"Brigade": 20000, - //"Division": 80000, - //"Tank Division": 100000, - //"Army": 750000, \ No newline at end of file From 2a4f2a377a57b4472c6617b2af6f3395d50f7b70 Mon Sep 17 00:00:00 2001 From: jsb5468 Date: Tue, 22 Jan 2019 00:37:44 -0500 Subject: [PATCH 07/17] Ball Smother Implementation #1 added ball-smother rules for following ball weights |0-1000kg|1000-50000kg|50000-5000000kg|5000000-1e9| different text for different brutality tiers --- recursive-desc.js | 171 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) diff --git a/recursive-desc.js b/recursive-desc.js index a2ecd0e..5c11abb 100644 --- a/recursive-desc.js +++ b/recursive-desc.js @@ -2129,3 +2129,174 @@ rules["anal-vore"].push({ return "Your enormous hands guide a planet towards your cheeks - pressing it firmly into your pucker with a dull, muffled shlph...and " + container.describe(verbose) + " sinks into your bowels, sealed away from the universe..."; } }); + + +//Ball Smother + //Balls weigh 1,000kg or less +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1000 && + isNonFatal(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your giant balls impact the ground with a thud pinning " + container.describe(verbose) + " between your weighty orbs."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1000 && + isFatal(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + mass(macro.ballMass, unit, true) + " balls impact the ground with a thud crushing " + container.describe(verbose) + "."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1000 && + isGory(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + mass(macro.ballMass, unit, true) + " balls impact the ground with a thud trapping " + container.describe(verbose) + " and grinding them into the pavement. They briefly struggle to escape before succumbing to the weight bearing down on them."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1000 && + isSadistic(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + mass(macro.ballMass, unit, true) + " balls impact the ground with a thud trapping " + container.describe(verbose) + " and grinding them into the pavement. They briefly struggle to escape before being crushed into a gory mess that leaves a slick of blood on your swinging sack."; + } +}); + +//Balls weigh 50,000kg or less + +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 50000 && + macro.ballMass > 1000 && + isNonFatal(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + length(macro.ballDiameter, unit, true) + " wide balls impact the ground with a thump. They spread over " + container.describe(verbose) + " and settle into the ground."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 50000 && + macro.ballMass > 1000 && + isFatal(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + length(macro.ballDiameter, unit, true) + " wide balls swing down and into " + container.describe(verbose) + " destroying everything in their path and leaving a gouge in the ground."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 50000 && + macro.ballMass > 1000 && + isGory(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + length(macro.ballDiameter, unit, true) + " wide balls swing down and into " + container.describe(verbose) + " with the force of a wrecking ball. The momentum of the swing destroying everything in their path and leaving a trail of destruction."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 50000 && + macro.ballMass > 1000 && + isSadistic(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + length(macro.ballDiameter, unit, true) + " wide balls swing down and into " + container.describe(verbose) + " with the force of a wrecking ball. The momentum of your mighty sack destroying everything in its path and leaving a trail of destruction. Your balls swing back through the remains of your prey, the massive weight converting everything remaining into unidentifiable detritus."; + } +}); + +//Balls weigh 5,000,000kg or less + +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 5000000 && + macro.ballMass > 50000 && + isNonFatal(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + length(macro.ballDiameter, unit, true) + " wide balls cast a shadow over " + container.describe(verbose) + " for a few seconds before coming to rest. You feel your sack shift as it settles into the landscape"; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 5000000 && + macro.ballMass > 50000 && + isFatal(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + length(macro.ballDiameter, unit, true) + " wide balls cast a shadow over " + container.describe(verbose) + " for a few seconds before slamming into the earth with the weight of " + mass(macro.ballMass, unit, false) + " each. You feel your sack shift as it slowly pulverizes everything unfortunate enough to be trapped beneath it. When you heave your weighty orbs off the ground, only rubble remains."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 5000000 && + macro.ballMass > 50000 && + isGory(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + length(macro.ballDiameter, unit, true) + " wide balls cast a shadow over " + container.describe(verbose) + " for a few seconds before slamming into the earth with the weight of " + mass(macro.ballMass, unit, false) + " each. You feel your sack shift and settle as it slowly pulverizes everything unfortunate enough to be trapped beneath it. After you heave your weighty orbs off the ground all that remains of your victims is gore streaked rubble and twisted steel."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 5000000 && + macro.ballMass > 50000 && + isSadistic(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + length(macro.ballDiameter, unit, true) + " wide balls cast a shadow over " + container.describe(verbose) + " for a few seconds before slamming into the earth with the weight of " + mass(macro.ballMass, unit, false) + " each. You feel your sack shift and settle as it slowly pulverizes everything unfortunate enough to be trapped beneath it. After you heave your weighty orbs off the ground you see that those that were trapped beneath your cum factories are nothing but crumpled bodies lying amist the rubble."; + } +}); + +//Balls Weigh 1e9 kg or less + +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e9 && + macro.ballMass > 5000000 && + isNonFatal(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + length(macro.ballDiameter, unit, true) + " thick balls briefly eclipse the sun before coming to rest on " + container.describe(verbose) + " with the weight of " + mass(macro.ballMass, unit, false) + " each. You feel your sack shift as it spreads over the terrain and forms two noticable indents."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e9 && + macro.ballMass > 5000000 && + isFatal(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + length(macro.ballDiameter, unit, true) + " thick balls briefly eclipse the sun before crushing " + container.describe(verbose) + " with the weight of " + mass(macro.ballMass, unit, false) + " each. You feel your sack shift as it slowly pulverizes everything unfortunate enough to be trapped beneath it. When you finally heave your mighty manhood off the ground, you notice 2 massive divots in the terrain; testimony of your immense power."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e9 && + macro.ballMass > 5000000 && + isGory(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + length(macro.ballDiameter, unit, true) + " thick balls briefly eclipse the sun before pulverizing " + container.describe(verbose) + " with the weight of " + mass(macro.ballMass, unit, false) + " each. You feel your sack shift and settle as it slowly pulverizes everything unfortunate enough to be trapped beneath it. When you finally heave your mighty manhood off the ground, you notice 2 massive divots filled with rubble and gore in the terrain; testimony of your immense power."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e9 && + macro.ballMass > 5000000 && + isSadistic(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + length(macro.ballDiameter, unit, true) + " thick balls briefly eclipse the sun before pulverizing " + container.describe(verbose) + " with the weight of " + mass(macro.ballMass, unit, false) + " each. You feel your sack move and shudder as it's immense bulk flattens everything unfortunate enough to be trapped beneath it. When you finally heave your mighty manhood off the ground, you notice 2 massive divots filled with rubble and gore in the terrain; a fitting grave for those lesser than you."; + } +}); + +//Balls Weigh 1e12 kg or less note:use craters \ No newline at end of file From 5069a9809ec7b649c877120309650de69b61968e Mon Sep 17 00:00:00 2001 From: jsb5468 Date: Tue, 22 Jan 2019 17:32:06 -0500 Subject: [PATCH 08/17] More Tooltips for start menu added tooltips to difficulty(not displayed for some reason) , human prey, military, and magic --- features.js | 15 +++++++++++---- game.js | 6 +++++- recursive-desc.js | 46 +++++++++++++++++++++++++++++++++++++++++++++- units.js | 38 +++++++++++++++++++------------------- 4 files changed, 80 insertions(+), 25 deletions(-) diff --git a/features.js b/features.js index 04e3aba..65d0ae4 100644 --- a/features.js +++ b/features.js @@ -618,15 +618,18 @@ options = [ "type": "radio", "id": "difficulty", "default": "0", + "tooltip": "Grow how you want, when you want.", "choices": [ { "name": "Sandbox", - "value": "0" + "value": "0", + "tooltip": "Grow how you want, when you want.", }, { "name": "Stompvival", - "value": "1" + "value": "1", + "tooltip": "Actions earn you growth points, which are used to grow bigger.", } ] } @@ -674,12 +677,14 @@ options = [ { "name": "Human prey", "id": "victimsHuman", - "type": "checkbox" + "type": "checkbox", + "tooltip": "When checked, your prey is humans. By default your prey is a wide array of anthros." }, { "name": "Military", "id": "victimsMilitary", - "type": "checkbox" + "type": "checkbox", + "tooltip": "When checked, you can prey on military units like soldiers, tanks, helicopeter, up to destroying entire armies." }, { "name": "Macros", @@ -1696,6 +1701,7 @@ options = [ "type": "checkbox", "buttons": ["magic_shrink"], "default": true, + "tooltip": "Allows you to shrink a wide area(relative to your size) into a smaller area, allowing you to devour prey much bigger than you are." }, { "name": "Fast digestion", @@ -1703,6 +1709,7 @@ options = [ "type": "checkbox", "buttons": ["magic_fast_digestion"], "default": true, + "tooltip": "Fast Digestion allows you to speed up your digestion for a short duration." }, ] }, diff --git a/game.js b/game.js index 95c61f9..79814b7 100644 --- a/game.js +++ b/game.js @@ -2908,7 +2908,11 @@ function male_orgasm(vol, active=true) let area = Math.pow(vol, 2/3); let prey = getPrey(biome, area); - let line = describe("male-orgasm", prey, macro, verbose, flat).replace("$VOLUME",volume(vol,unit,true)); + if (macro.verbose == true){ + let line = describe("male-orgasm", prey, macro, verbose, flat).replace("$VOLUME",volume(vol,unit,false)); + } else { + let line = describe("male-orgasm", prey, macro, verbose, flat).replace("$VOLUME",volume(vol,unit,true)); + } let linesummary = summarize(prey.sum(), true); let people = get_living_prey(prey.sum()); diff --git a/recursive-desc.js b/recursive-desc.js index 5c11abb..dcaaa39 100644 --- a/recursive-desc.js +++ b/recursive-desc.js @@ -2299,4 +2299,48 @@ rules["ball-smother"].push({ } }); -//Balls Weigh 1e12 kg or less note:use craters \ No newline at end of file +//Balls Weigh 1e12 kg or less note:use craters + +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e12 && + macro.ballMass > 1e9 && + isNonFatal(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + length(macro.ballDiameter, unit, true) + " diameter balls blot out the sky before coming to rest on " + container.describe() + " with the weight of " + mass(macro.ballMass, unit, false) + " each. You feel your sack push the ground aside to form two massive craters."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e12 && + macro.ballMass > 1e9 && + isFatal(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " diameter balls blot out the sky as they approach your target. The unstoppable force of your gigantic testicles CRASHES through " + container.describe() + " with little \ + resistance, pancaking them into the ground. The violent impact generates a shockwave that bowls over surrounding trees and buildings. As you you heave your sack off the ground, two massive craters have formed at the impact site."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e12 && + macro.ballMass > 1e9 && + isGory(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " diameter balls blot out the sky as they approach your target. The unstoppable force of your gigantic testicles CRASHES through " + container.describe() + " with little \ +resistance, pancaking them into the ground. The violent impact generates a shockwave that bowls over surrounding trees and buildings. As you heave your sack off the ground, two massive craters have formed at the impact site. A pool of blood and musk is rapidly forming at the bottom of each crater, with peices of debris floating in them."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e12 && + macro.ballMass > 1e9 && + isSadistic(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " diameter balls blot out the sky as they approach your target. The unstoppable force of your gigantic testicles CRASHES through " + container.describe() + " with little \ +resistance, pancaking them into the ground. The violent impact generates a shockwave that bowls over surrounding trees and buildings. As you heave your sack off the ground, two massive craters have formed at the impact site. A pool of blood and musk is rapidly forming at the bottom of each crater, with bones and peices of debris floating in them."; + } +}); \ No newline at end of file diff --git a/units.js b/units.js index 6597395..8d3068a 100644 --- a/units.js +++ b/units.js @@ -200,37 +200,37 @@ function customaryMass(kg, singular=false) { function approxMass(kg, singular=false) { if (kg < 4500) { let mass = round(kg/1000,2); - return (singular || mass == 1 ? "a car" : mass + " cars"); + return mass + (singular || mass == 1 ? "car" : " cars"); } else if (kg < 54431) { let mass = round(kg/6000,2); - return (singular || mass == 1 ? "an elephant" : mass + " elephants"); + return mass + (singular || mass == 1 ? " elephant" : " elephants"); //this unit almost never gets used and is mostly redundant, perhaps remove it if units are cleaned up } else if (kg < 10000000) { let mass = round(kg/54431.1,2); - return (singular || mass == 1 ? "a tank" : mass + " tanks"); + return mass + (singular || mass == 1 ? " tank" : " tanks"); } else if (kg < 5.2e10) { let mass = round(kg/9.7e7,2); - return (singular || mass == 1 ? "an aircraft carrier" : mass + " aircraft carriers"); + return mass + (singular || mass == 1 ? " aircraft carrier" : " aircraft carriers"); } else if (kg < 1.5e13) { let mass = round(kg/5.2e10,2); - return (singular || mass == 1 ? "the Great Wall of China" : mass + " Great Wall Of Chinas"); + return mass + (singular || mass == 1 ? " Great Wall of China" : " Great Wall Of Chinas"); } else if (kg < 5e21) { let mass = round(kg/1.5373768e15,3); - return (singular || mass == 1 ? "New York City" : mass + " New York Cities"); + return mass + (singular || mass == 1 ? " New York City" : mass + " New York Cities"); //this figure includes a lot of underlying bedrock, just the city itself is 1.13587210581190e11 but I needed a good figure to fit in this spot } else if (kg < 6e23) { let mass = round(kg/4.6121304e20,3); - return (singular || mass == 1 ? "Australia" : mass + " Australias"); + return mass +(singular || mass == 1 ? " Australia" : mass + " Australias"); //this is a napkin math number based on the land area of Australia, 25km of height and rough density of rock } else if (kg < 2e27) { let mass = round(kg/5.972e24,4); - return (singular || mass == 1 ? "the Earth" : mass + " Earths"); + return mass + (singular || mass == 1 ? " Earth" : mass + " Earths"); } else if (kg < 1.4e39) { let mass = round(kg/1.989e30,4); - return (singular || mass == 1 ? "the Sun" : mass + " Suns"); + return mass + (singular || mass == 1 ? " Sun" : mass + " Suns"); } else { let mass = round(kg/1.3923e42,4); - return (singular || mass == 1 ? "the Milky Way" : mass + " Milky Ways"); + return mass + (singular || mass == 1 ? " Milky Way" : mass + " Milky Ways"); } } @@ -373,30 +373,30 @@ function customaryVolume(m3, singular=false) { function approxVolume(m3, singular=false) { if (m3 < 2/10000) { let volume = round(m3*4e5,0); - return (singular || volume == 1 ? "a shot" : volume + " shots"); + return volume + (singular || volume == 1 ? " shot" : " shots"); } else if (m3 < .1) { let volume = round(m3*2254,1); - return (singular || volume == 1 ? "a glass" : volume + " glasses"); + return volume + (singular || volume == 1 ? " glass" : " glasses"); } else if (m3 < 100) { let volume = round(m3*2.64,1); - return(singular || volume == 1 ? "a bathtub" : volume + " bathtubs"); + return volume + (singular || volume == 1 ? " bathtub" : " bathtubs"); } else if (m3 < 1e5) { let volume = round(m3/1000,2); - return (singular || volume == 1 ? "an Olympic swimming pool" : volume + " Olympic swimming pools"); + return volume + (singular || volume == 1 ? " Olympic swimming pool" : " Olympic swimming pools"); } else if (m3 < 1e9) { let volume = round(m3/3.2e5,2); - return (singular || volume == 1 ? "an oil tanker" : volume + " oil tankers"); + return volume + (singular || volume == 1 ? " oil tanker" : " oil tankers"); } else if (m3 < 1e15) { let volume = round(m3/1.8919e10,3); - return (singular || volume == 1 ? "a Great Salt Lake" : volume + " Great Salt Lakes"); + return volume + (singular || volume == 1 ? " Great Salt Lake" : " Great Salt Lakes"); } else if (m3 < 1e20){ let volume = round(m3/3.547e17, 3); - return (singular || volume == 1 ? "an ocean" : volume + " oceans"); + return volume + (singular || volume == 1 ? " ocean" : " oceans"); } else if (m3 < 1e25){ let volume = round(m3/1e21, 3); - return (singular || volume == 1 ? "Earth's volume" : volume + " Earths"); + return volume + (singular || volume == 1 ? "Earth" : " Earths"); } else { let volume = round(m3/1.4e27, 3); - return (singular || volume == 1 ? "Sun's volume" : volume + " Suns"); + return volume + (singular || volume == 1 ? "Sun" : " Suns"); } } From af8b71d8362ee9aa84967c2cb0314da3094cf5aa Mon Sep 17 00:00:00 2001 From: jsb5468 Date: Tue, 22 Jan 2019 17:32:26 -0500 Subject: [PATCH 09/17] Revert "More Tooltips for start menu" This reverts commit 5069a9809ec7b649c877120309650de69b61968e. --- features.js | 15 ++++----------- game.js | 6 +----- recursive-desc.js | 46 +--------------------------------------------- units.js | 38 +++++++++++++++++++------------------- 4 files changed, 25 insertions(+), 80 deletions(-) diff --git a/features.js b/features.js index 65d0ae4..04e3aba 100644 --- a/features.js +++ b/features.js @@ -618,18 +618,15 @@ options = [ "type": "radio", "id": "difficulty", "default": "0", - "tooltip": "Grow how you want, when you want.", "choices": [ { "name": "Sandbox", - "value": "0", - "tooltip": "Grow how you want, when you want.", + "value": "0" }, { "name": "Stompvival", - "value": "1", - "tooltip": "Actions earn you growth points, which are used to grow bigger.", + "value": "1" } ] } @@ -677,14 +674,12 @@ options = [ { "name": "Human prey", "id": "victimsHuman", - "type": "checkbox", - "tooltip": "When checked, your prey is humans. By default your prey is a wide array of anthros." + "type": "checkbox" }, { "name": "Military", "id": "victimsMilitary", - "type": "checkbox", - "tooltip": "When checked, you can prey on military units like soldiers, tanks, helicopeter, up to destroying entire armies." + "type": "checkbox" }, { "name": "Macros", @@ -1701,7 +1696,6 @@ options = [ "type": "checkbox", "buttons": ["magic_shrink"], "default": true, - "tooltip": "Allows you to shrink a wide area(relative to your size) into a smaller area, allowing you to devour prey much bigger than you are." }, { "name": "Fast digestion", @@ -1709,7 +1703,6 @@ options = [ "type": "checkbox", "buttons": ["magic_fast_digestion"], "default": true, - "tooltip": "Fast Digestion allows you to speed up your digestion for a short duration." }, ] }, diff --git a/game.js b/game.js index 79814b7..95c61f9 100644 --- a/game.js +++ b/game.js @@ -2908,11 +2908,7 @@ function male_orgasm(vol, active=true) let area = Math.pow(vol, 2/3); let prey = getPrey(biome, area); - if (macro.verbose == true){ - let line = describe("male-orgasm", prey, macro, verbose, flat).replace("$VOLUME",volume(vol,unit,false)); - } else { - let line = describe("male-orgasm", prey, macro, verbose, flat).replace("$VOLUME",volume(vol,unit,true)); - } + let line = describe("male-orgasm", prey, macro, verbose, flat).replace("$VOLUME",volume(vol,unit,true)); let linesummary = summarize(prey.sum(), true); let people = get_living_prey(prey.sum()); diff --git a/recursive-desc.js b/recursive-desc.js index dcaaa39..5c11abb 100644 --- a/recursive-desc.js +++ b/recursive-desc.js @@ -2299,48 +2299,4 @@ rules["ball-smother"].push({ } }); -//Balls Weigh 1e12 kg or less note:use craters - -rules["ball-smother"].push({ - "test": function(container, macro) { - return macro.ballMass <= 1e12 && - macro.ballMass > 1e9 && - isNonFatal(macro); - - }, "desc": function(container, macro, verbose, flat) { - return "Your " + length(macro.ballDiameter, unit, true) + " diameter balls blot out the sky before coming to rest on " + container.describe() + " with the weight of " + mass(macro.ballMass, unit, false) + " each. You feel your sack push the ground aside to form two massive craters."; - } -}); -rules["ball-smother"].push({ - "test": function(container, macro) { - return macro.ballMass <= 1e12 && - macro.ballMass > 1e9 && - isFatal(macro); - - }, "desc": function(container, macro, verbose, flat) { - return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " diameter balls blot out the sky as they approach your target. The unstoppable force of your gigantic testicles CRASHES through " + container.describe() + " with little \ - resistance, pancaking them into the ground. The violent impact generates a shockwave that bowls over surrounding trees and buildings. As you you heave your sack off the ground, two massive craters have formed at the impact site."; - } -}); -rules["ball-smother"].push({ - "test": function(container, macro) { - return macro.ballMass <= 1e12 && - macro.ballMass > 1e9 && - isGory(macro); - - }, "desc": function(container, macro, verbose, flat) { - return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " diameter balls blot out the sky as they approach your target. The unstoppable force of your gigantic testicles CRASHES through " + container.describe() + " with little \ -resistance, pancaking them into the ground. The violent impact generates a shockwave that bowls over surrounding trees and buildings. As you heave your sack off the ground, two massive craters have formed at the impact site. A pool of blood and musk is rapidly forming at the bottom of each crater, with peices of debris floating in them."; - } -}); -rules["ball-smother"].push({ - "test": function(container, macro) { - return macro.ballMass <= 1e12 && - macro.ballMass > 1e9 && - isSadistic(macro); - - }, "desc": function(container, macro, verbose, flat) { - return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " diameter balls blot out the sky as they approach your target. The unstoppable force of your gigantic testicles CRASHES through " + container.describe() + " with little \ -resistance, pancaking them into the ground. The violent impact generates a shockwave that bowls over surrounding trees and buildings. As you heave your sack off the ground, two massive craters have formed at the impact site. A pool of blood and musk is rapidly forming at the bottom of each crater, with bones and peices of debris floating in them."; - } -}); \ No newline at end of file +//Balls Weigh 1e12 kg or less note:use craters \ No newline at end of file diff --git a/units.js b/units.js index 8d3068a..6597395 100644 --- a/units.js +++ b/units.js @@ -200,37 +200,37 @@ function customaryMass(kg, singular=false) { function approxMass(kg, singular=false) { if (kg < 4500) { let mass = round(kg/1000,2); - return mass + (singular || mass == 1 ? "car" : " cars"); + return (singular || mass == 1 ? "a car" : mass + " cars"); } else if (kg < 54431) { let mass = round(kg/6000,2); - return mass + (singular || mass == 1 ? " elephant" : " elephants"); + return (singular || mass == 1 ? "an elephant" : mass + " elephants"); //this unit almost never gets used and is mostly redundant, perhaps remove it if units are cleaned up } else if (kg < 10000000) { let mass = round(kg/54431.1,2); - return mass + (singular || mass == 1 ? " tank" : " tanks"); + return (singular || mass == 1 ? "a tank" : mass + " tanks"); } else if (kg < 5.2e10) { let mass = round(kg/9.7e7,2); - return mass + (singular || mass == 1 ? " aircraft carrier" : " aircraft carriers"); + return (singular || mass == 1 ? "an aircraft carrier" : mass + " aircraft carriers"); } else if (kg < 1.5e13) { let mass = round(kg/5.2e10,2); - return mass + (singular || mass == 1 ? " Great Wall of China" : " Great Wall Of Chinas"); + return (singular || mass == 1 ? "the Great Wall of China" : mass + " Great Wall Of Chinas"); } else if (kg < 5e21) { let mass = round(kg/1.5373768e15,3); - return mass + (singular || mass == 1 ? " New York City" : mass + " New York Cities"); + return (singular || mass == 1 ? "New York City" : mass + " New York Cities"); //this figure includes a lot of underlying bedrock, just the city itself is 1.13587210581190e11 but I needed a good figure to fit in this spot } else if (kg < 6e23) { let mass = round(kg/4.6121304e20,3); - return mass +(singular || mass == 1 ? " Australia" : mass + " Australias"); + return (singular || mass == 1 ? "Australia" : mass + " Australias"); //this is a napkin math number based on the land area of Australia, 25km of height and rough density of rock } else if (kg < 2e27) { let mass = round(kg/5.972e24,4); - return mass + (singular || mass == 1 ? " Earth" : mass + " Earths"); + return (singular || mass == 1 ? "the Earth" : mass + " Earths"); } else if (kg < 1.4e39) { let mass = round(kg/1.989e30,4); - return mass + (singular || mass == 1 ? " Sun" : mass + " Suns"); + return (singular || mass == 1 ? "the Sun" : mass + " Suns"); } else { let mass = round(kg/1.3923e42,4); - return mass + (singular || mass == 1 ? " Milky Way" : mass + " Milky Ways"); + return (singular || mass == 1 ? "the Milky Way" : mass + " Milky Ways"); } } @@ -373,30 +373,30 @@ function customaryVolume(m3, singular=false) { function approxVolume(m3, singular=false) { if (m3 < 2/10000) { let volume = round(m3*4e5,0); - return volume + (singular || volume == 1 ? " shot" : " shots"); + return (singular || volume == 1 ? "a shot" : volume + " shots"); } else if (m3 < .1) { let volume = round(m3*2254,1); - return volume + (singular || volume == 1 ? " glass" : " glasses"); + return (singular || volume == 1 ? "a glass" : volume + " glasses"); } else if (m3 < 100) { let volume = round(m3*2.64,1); - return volume + (singular || volume == 1 ? " bathtub" : " bathtubs"); + return(singular || volume == 1 ? "a bathtub" : volume + " bathtubs"); } else if (m3 < 1e5) { let volume = round(m3/1000,2); - return volume + (singular || volume == 1 ? " Olympic swimming pool" : " Olympic swimming pools"); + return (singular || volume == 1 ? "an Olympic swimming pool" : volume + " Olympic swimming pools"); } else if (m3 < 1e9) { let volume = round(m3/3.2e5,2); - return volume + (singular || volume == 1 ? " oil tanker" : " oil tankers"); + return (singular || volume == 1 ? "an oil tanker" : volume + " oil tankers"); } else if (m3 < 1e15) { let volume = round(m3/1.8919e10,3); - return volume + (singular || volume == 1 ? " Great Salt Lake" : " Great Salt Lakes"); + return (singular || volume == 1 ? "a Great Salt Lake" : volume + " Great Salt Lakes"); } else if (m3 < 1e20){ let volume = round(m3/3.547e17, 3); - return volume + (singular || volume == 1 ? " ocean" : " oceans"); + return (singular || volume == 1 ? "an ocean" : volume + " oceans"); } else if (m3 < 1e25){ let volume = round(m3/1e21, 3); - return volume + (singular || volume == 1 ? "Earth" : " Earths"); + return (singular || volume == 1 ? "Earth's volume" : volume + " Earths"); } else { let volume = round(m3/1.4e27, 3); - return volume + (singular || volume == 1 ? "Sun" : " Suns"); + return (singular || volume == 1 ? "Sun's volume" : volume + " Suns"); } } From 01c58e6873d58c6090ba8a7ed5caa69b3ade5a60 Mon Sep 17 00:00:00 2001 From: jsb5468 Date: Tue, 22 Jan 2019 17:35:46 -0500 Subject: [PATCH 10/17] More Tooltips added tooltips to difficulty(not displayed for some reason) , human prey, military, and magic --- features.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/features.js b/features.js index 04e3aba..d75bf4e 100644 --- a/features.js +++ b/features.js @@ -622,11 +622,13 @@ options = [ [ { "name": "Sandbox", - "value": "0" + "value": "0", + "tooltip": "Grow how you want, when you want.", }, { "name": "Stompvival", - "value": "1" + "value": "1", + "tooltip": "Actions earn you growth points, which are used to grow bigger.", } ] } @@ -674,12 +676,14 @@ options = [ { "name": "Human prey", "id": "victimsHuman", - "type": "checkbox" + "type": "checkbox", + "tooltip": "When checked, your prey is humans. By default your prey is a wide array of anthros." }, { "name": "Military", "id": "victimsMilitary", - "type": "checkbox" + "type": "checkbox", + "tooltip": "When checked, you can prey on military units like soldiers, tanks, helicopeter, up to destroying entire armies." }, { "name": "Macros", @@ -1696,6 +1700,7 @@ options = [ "type": "checkbox", "buttons": ["magic_shrink"], "default": true, + "tooltip": "Allows you to shrink a wide area(relative to your size) into a smaller area, allowing you to devour prey much bigger than you are." }, { "name": "Fast digestion", @@ -1703,6 +1708,7 @@ options = [ "type": "checkbox", "buttons": ["magic_fast_digestion"], "default": true, + "tooltip": "Fast Digestion allows you to speed up your digestion for a short duration." }, ] }, From ef4d242f949800991d727967cffc085c25fb8afb Mon Sep 17 00:00:00 2001 From: jsb5468 Date: Tue, 22 Jan 2019 17:38:01 -0500 Subject: [PATCH 11/17] Fixed plurals in approx units Approx units had an issue with non stand pluralization, fixed, making them behave like all other units (ex 18 aircraft carrier being displayed as an aircraft carrier" --- units.js | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/units.js b/units.js index 6597395..8d3068a 100644 --- a/units.js +++ b/units.js @@ -200,37 +200,37 @@ function customaryMass(kg, singular=false) { function approxMass(kg, singular=false) { if (kg < 4500) { let mass = round(kg/1000,2); - return (singular || mass == 1 ? "a car" : mass + " cars"); + return mass + (singular || mass == 1 ? "car" : " cars"); } else if (kg < 54431) { let mass = round(kg/6000,2); - return (singular || mass == 1 ? "an elephant" : mass + " elephants"); + return mass + (singular || mass == 1 ? " elephant" : " elephants"); //this unit almost never gets used and is mostly redundant, perhaps remove it if units are cleaned up } else if (kg < 10000000) { let mass = round(kg/54431.1,2); - return (singular || mass == 1 ? "a tank" : mass + " tanks"); + return mass + (singular || mass == 1 ? " tank" : " tanks"); } else if (kg < 5.2e10) { let mass = round(kg/9.7e7,2); - return (singular || mass == 1 ? "an aircraft carrier" : mass + " aircraft carriers"); + return mass + (singular || mass == 1 ? " aircraft carrier" : " aircraft carriers"); } else if (kg < 1.5e13) { let mass = round(kg/5.2e10,2); - return (singular || mass == 1 ? "the Great Wall of China" : mass + " Great Wall Of Chinas"); + return mass + (singular || mass == 1 ? " Great Wall of China" : " Great Wall Of Chinas"); } else if (kg < 5e21) { let mass = round(kg/1.5373768e15,3); - return (singular || mass == 1 ? "New York City" : mass + " New York Cities"); + return mass + (singular || mass == 1 ? " New York City" : mass + " New York Cities"); //this figure includes a lot of underlying bedrock, just the city itself is 1.13587210581190e11 but I needed a good figure to fit in this spot } else if (kg < 6e23) { let mass = round(kg/4.6121304e20,3); - return (singular || mass == 1 ? "Australia" : mass + " Australias"); + return mass +(singular || mass == 1 ? " Australia" : mass + " Australias"); //this is a napkin math number based on the land area of Australia, 25km of height and rough density of rock } else if (kg < 2e27) { let mass = round(kg/5.972e24,4); - return (singular || mass == 1 ? "the Earth" : mass + " Earths"); + return mass + (singular || mass == 1 ? " Earth" : mass + " Earths"); } else if (kg < 1.4e39) { let mass = round(kg/1.989e30,4); - return (singular || mass == 1 ? "the Sun" : mass + " Suns"); + return mass + (singular || mass == 1 ? " Sun" : mass + " Suns"); } else { let mass = round(kg/1.3923e42,4); - return (singular || mass == 1 ? "the Milky Way" : mass + " Milky Ways"); + return mass + (singular || mass == 1 ? " Milky Way" : mass + " Milky Ways"); } } @@ -373,30 +373,30 @@ function customaryVolume(m3, singular=false) { function approxVolume(m3, singular=false) { if (m3 < 2/10000) { let volume = round(m3*4e5,0); - return (singular || volume == 1 ? "a shot" : volume + " shots"); + return volume + (singular || volume == 1 ? " shot" : " shots"); } else if (m3 < .1) { let volume = round(m3*2254,1); - return (singular || volume == 1 ? "a glass" : volume + " glasses"); + return volume + (singular || volume == 1 ? " glass" : " glasses"); } else if (m3 < 100) { let volume = round(m3*2.64,1); - return(singular || volume == 1 ? "a bathtub" : volume + " bathtubs"); + return volume + (singular || volume == 1 ? " bathtub" : " bathtubs"); } else if (m3 < 1e5) { let volume = round(m3/1000,2); - return (singular || volume == 1 ? "an Olympic swimming pool" : volume + " Olympic swimming pools"); + return volume + (singular || volume == 1 ? " Olympic swimming pool" : " Olympic swimming pools"); } else if (m3 < 1e9) { let volume = round(m3/3.2e5,2); - return (singular || volume == 1 ? "an oil tanker" : volume + " oil tankers"); + return volume + (singular || volume == 1 ? " oil tanker" : " oil tankers"); } else if (m3 < 1e15) { let volume = round(m3/1.8919e10,3); - return (singular || volume == 1 ? "a Great Salt Lake" : volume + " Great Salt Lakes"); + return volume + (singular || volume == 1 ? " Great Salt Lake" : " Great Salt Lakes"); } else if (m3 < 1e20){ let volume = round(m3/3.547e17, 3); - return (singular || volume == 1 ? "an ocean" : volume + " oceans"); + return volume + (singular || volume == 1 ? " ocean" : " oceans"); } else if (m3 < 1e25){ let volume = round(m3/1e21, 3); - return (singular || volume == 1 ? "Earth's volume" : volume + " Earths"); + return volume + (singular || volume == 1 ? "Earth" : " Earths"); } else { let volume = round(m3/1.4e27, 3); - return (singular || volume == 1 ? "Sun's volume" : volume + " Suns"); + return volume + (singular || volume == 1 ? "Sun" : " Suns"); } } From 473e9d1d39775a948bd74241fe88bc78d50f94e0 Mon Sep 17 00:00:00 2001 From: jsb5468 Date: Tue, 22 Jan 2019 17:38:57 -0500 Subject: [PATCH 12/17] Ball Smother Implemetation #2 added custom rules for ball-smother up to 1e12kg ball mass --- recursive-desc.js | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/recursive-desc.js b/recursive-desc.js index 5c11abb..04db0e1 100644 --- a/recursive-desc.js +++ b/recursive-desc.js @@ -2299,4 +2299,48 @@ rules["ball-smother"].push({ } }); -//Balls Weigh 1e12 kg or less note:use craters \ No newline at end of file +//Balls Weigh 1e12 kg or less + +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e12 && + macro.ballMass > 1e9 && + isNonFatal(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + length(macro.ballDiameter, unit, true) + " diameter balls blot out the sky before coming to rest on " + container.describe() + " with the weight of " + mass(macro.ballMass, unit, false) + " each. You feel your sack push the ground aside to form two massive craters."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e12 && + macro.ballMass > 1e9 && + isFatal(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " diameter balls blot out the sky as they approach your target. The unstoppable force of your gigantic testicles CRASHES through " + container.describe() + " with little \ + resistance, pancaking them into the ground. The violent impact generates a shockwave that bowls over surrounding trees and buildings. As you you heave your sack off the ground, two massive craters have formed at the impact site."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e12 && + macro.ballMass > 1e9 && + isGory(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " diameter balls blot out the sky as they approach your target. The unstoppable force of your gigantic testicles CRASHES through " + container.describe() + " with little \ +resistance, pancaking them into the ground. The violent impact generates a shockwave that bowls over surrounding trees and buildings. As you heave your sack off the ground, two massive craters have formed at the impact site. A pool of blood and musk is rapidly forming at the bottom of each crater, with peices of debris floating in them."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e12 && + macro.ballMass > 1e9 && + isSadistic(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " diameter balls blot out the sky as they approach your target. The unstoppable force of your gigantic testicles CRASHES through " + container.describe() + " with little \ +resistance, pancaking them into the ground. The violent impact generates a shockwave that bowls over surrounding trees and buildings. As you heave your sack off the ground, two massive craters have formed at the impact site. A pool of blood and musk is rapidly forming at the bottom of each crater, with bones and peices of debris floating in them."; + } +}); \ No newline at end of file From df8343aa37571250252d5d3dc5900a51719ca40f Mon Sep 17 00:00:00 2001 From: jsb5468 Date: Tue, 22 Jan 2019 23:46:31 -0500 Subject: [PATCH 13/17] updated style to include transparent panels changed style to make panels transparent on both light and dark mode --- style.css | 55 ++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 38 insertions(+), 17 deletions(-) diff --git a/style.css b/style.css index be76d20..ca1ebbd 100644 --- a/style.css +++ b/style.css @@ -1,14 +1,14 @@ .light { color: #000; - background: #eee; + background: #dbdbdb; font-family: Arial; } .dark { color: #eee; + font-family: Arial; background: #111; - font-family: Arial; } #character-presets { @@ -23,25 +23,32 @@ body.dark input { color: #eee; background: #444; + background-color: rgba(0, 0, 0, 0.3); } body.dark select { color: #eee; background: #444; + background-color: rgba(0, 0, 0, 0.3); } body.light button { color: #000; background: #ddd; + border-width: 1px; + border-color: #000; + background-color: rgba(255, 255, 255, 0.3); } body.dark button { color: #eee; background: #111; + border-width: 1px; + background-color: rgba(0, 0, 0, 0.4); } body.dark div { - background: #111; + background-color: transparent; } .game-area { @@ -94,37 +101,37 @@ body.dark div { body.light #react-log { color: #000; - background-color: #e7e7e7; + background-color: rgba(240, 240, 255, 0.3); } body.light #react-log div { - background-color: #e7e7e7; + background-color: transparent; } body.dark #react-log { color: #eee; - background-color: #151515; + background-color: rgba(0, 0, 0, 0.4); } body.dark #react-log div { - background-color: #151515; + background-color: transparent; } -body.light #react-log { +body.light #log { color: #000; - background-color: #e7e7e7; + background-color: rgba(240, 240, 255, 0.3); } body.light #log div { - background-color: #e7e7e7; + background-color: transparent; } body.dark #log { color: #eee; - background-color: #151515; + background-color: rgba(0, 0, 0, 0.4); } body.dark #log div { - background-color: #151515; + background-color: transparent; } .stat-header-self { @@ -218,6 +225,7 @@ progress { #action-panel { display: none; + } .option-button { @@ -253,10 +261,12 @@ progress { body.light .action-button-disabled { color: #777 !important; + background-color: rgba(150, 0, 0, 0.25); } body.dark .action-button-disabled { color: #aaa !important; + background-color: rgba(150, 0, 0, 0.25); } #victim-table { @@ -308,15 +318,19 @@ input[type="checkbox"]:checked ~ .reveal-if-active { body.light .custom-category { background: #ddd; + background-color: rgba(255, 255, 255, 0.4); } body.dark .custom-category { background: #222; + background-color: rgba(0, 0, 0, 0.4); } body.dark .custom-category div { background: #222; + background-color: transparent; } + .custom-header-static { user-select: none; font-size: 250%; @@ -348,12 +362,19 @@ body.dark .custom-header-static { body.light .custom-header { color: #aaa; - background: #ddd; + background-color: rgba(255, 255, 255, 0.3); + border-width: 1px; + padding-left: 10px; + padding-right: 10px; + border-color: #000; } body.dark .custom-header { color: #555; - background: #222; + background-color: rgba(0, 0, 0, 0.3); + padding: 5px; + padding-left: 10px; + padding-right: 10px; } body.light input[type="checkbox"]:checked+ @@ -361,7 +382,7 @@ body.light input[type="checkbox"]:checked+ color: #000; border-style: solid; margin: 10px; - background: #bbb; + background-color: rgba(230, 230, 230, 0.3); } body.dark input[type="checkbox"]:checked+ @@ -369,7 +390,7 @@ body.dark input[type="checkbox"]:checked+ color: #fff; border-style: solid; margin: 10px; - background: #444; + background-color: rgba(0, 0, 0, 0.3); } .custom-header-checkbox { @@ -462,7 +483,7 @@ body.light a { } body.light a:visited { - color: #0000AA; + color: #0000ff; } body.light a:hover { From 498e9625b33e85feca70babc00b3152d63494d98 Mon Sep 17 00:00:00 2001 From: jsb5468 Date: Wed, 23 Jan 2019 01:30:17 -0500 Subject: [PATCH 14/17] Ball Smother Implemtation #3 added ball-smother rules for balls up to 1e25 kg --- recursive-desc.js | 153 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 149 insertions(+), 4 deletions(-) diff --git a/recursive-desc.js b/recursive-desc.js index 04db0e1..807398d 100644 --- a/recursive-desc.js +++ b/recursive-desc.js @@ -2308,7 +2308,7 @@ rules["ball-smother"].push({ isNonFatal(macro); }, "desc": function(container, macro, verbose, flat) { - return "Your " + length(macro.ballDiameter, unit, true) + " diameter balls blot out the sky before coming to rest on " + container.describe() + " with the weight of " + mass(macro.ballMass, unit, false) + " each. You feel your sack push the ground aside to form two massive craters."; + return "Your " + length(macro.ballDiameter, unit, true) + " diameter balls blot out the sky before coming to rest on " + container.describe(verbose) + " with the weight of " + mass(macro.ballMass, unit, false) + " each. You feel your sack push the ground aside to form two massive craters."; } }); rules["ball-smother"].push({ @@ -2318,7 +2318,7 @@ rules["ball-smother"].push({ isFatal(macro); }, "desc": function(container, macro, verbose, flat) { - return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " diameter balls blot out the sky as they approach your target. The unstoppable force of your gigantic testicles CRASHES through " + container.describe() + " with little \ + return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " diameter balls blot out the sky as they approach your target. The unstoppable force of your gigantic testicles CRASHES through " + container.describe(verbose) + " with little \ resistance, pancaking them into the ground. The violent impact generates a shockwave that bowls over surrounding trees and buildings. As you you heave your sack off the ground, two massive craters have formed at the impact site."; } }); @@ -2329,7 +2329,7 @@ rules["ball-smother"].push({ isGory(macro); }, "desc": function(container, macro, verbose, flat) { - return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " diameter balls blot out the sky as they approach your target. The unstoppable force of your gigantic testicles CRASHES through " + container.describe() + " with little \ + return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " diameter balls blot out the sky as they approach your target. The unstoppable force of your gigantic testicles CRASHES through " + container.describe(verbose) + " with little \ resistance, pancaking them into the ground. The violent impact generates a shockwave that bowls over surrounding trees and buildings. As you heave your sack off the ground, two massive craters have formed at the impact site. A pool of blood and musk is rapidly forming at the bottom of each crater, with peices of debris floating in them."; } }); @@ -2340,7 +2340,152 @@ rules["ball-smother"].push({ isSadistic(macro); }, "desc": function(container, macro, verbose, flat) { - return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " diameter balls blot out the sky as they approach your target. The unstoppable force of your gigantic testicles CRASHES through " + container.describe() + " with little \ + return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " diameter balls blot out the sky as they approach your target. The unstoppable force of your gigantic testicles CRASHES through " + container.describe(verbose) + " with little \ resistance, pancaking them into the ground. The violent impact generates a shockwave that bowls over surrounding trees and buildings. As you heave your sack off the ground, two massive craters have formed at the impact site. A pool of blood and musk is rapidly forming at the bottom of each crater, with bones and peices of debris floating in them."; } +}); + +//Balls Weigh 1e15 kg or less + +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e15 && + macro.ballMass > 1e12 && + isNonFatal(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + length(macro.ballDiameter, unit, true) + " wide balls cast darkness over " + container.describe(verbose) + " before settling into the terrain with the weight of " + mass(macro.ballMass, unit, false) + " each. You feel your gigantic orbs shovel out a spot for themselves with their mass alone."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e15 && + macro.ballMass > 1e12 && + isFatal(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " wide balls cast darkness over the land as they swing low and right through " + container.describe(verbose) + " like a hot knife through butter. \ + You shudder as you feel the force of the impact travel through the entirety of your testicles. The shockwave travels for " + length(macro.ballDiameter, unit, true) + " destroying all in its path. As the initial impact subsides you feel your \ +enormous balls shift away from each other as they furrow into the landscape."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e15 && + macro.ballMass > 1e12 && + isGory(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " wide balls cast darkness over the land as they swing low and right through " + container.describe(verbose) + " like a hot knife through butter. \ + You shudder as you feel the force of the impact travel through the entirety of your testicles. The shockwave travels for " + length(macro.ballDiameter, unit, false) + " tossing people into the air and drestroying all in its path. As the \ +initial impact subsides you feel your enormous balls shift away from each other as they furrow into the landscape and over the people that attempted to flee."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e15 && + macro.ballMass > 1e12 && + isSadistic(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " wide balls cast darkness over the land as they swing low and right through " + container.describe(verbose) + " like a hot knife through butter. \ + You shudder as you feel the force of the impact travel through the entirety of your testicles. The shockwave travels for " + length(macro.ballDiameter, unit, false) + " tossing people into the air and drestroying all in its path. As the \ +initial impact subsides you feel your enormous balls shift away from each other as they furrow into the landscape and over the people that attempted to flee. The ground is stained red with blood and gore."; + } +}); + +//cause night to fall over + +//Balls Weigh 1e20 kg or less + +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e20 && + macro.ballMass > 1e15 && + isNonFatal(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + length(macro.ballDiameter, unit, true) + " thick balls cause night to fall before they come to rest on" + container.describe(verbose) + " . Each titanic testicle weighing " + mass(macro.ballMass, unit, false) + " . The craters left by each orb will scar the planet until its destruction."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e20 && + macro.ballMass > 1e15 && + isFatal(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " thick balls cause night to fall over the land. As they contact earth, they obliterate " + container.describe(verbose) + " with a dull booOOOOooOOM. \ + The immesive forces involved cause your cum factories to bounce up into the air before coming down on the same spot. The second impact drives your titanic balls deep into the ground while throwing shrapnel in every direction. The craters left by your gonads will scar the planet until its destruction."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e20 && + macro.ballMass > 1e15 && + isGory(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " thick balls cause night to fall over the land. As they contact earth, they obliterate " + container.describe(verbose) + " with a dull booOOOOooOOM. \ + The immesive forces involved cause your cum factories to bounce up into the air before coming down on the same spot. The second impact drives your titanic balls deep into the ground while throwing shrapnel in every direction. The craters left by your gonads quickly fill with various fluids, leaving two lakes forever on the planet."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e20 && + macro.ballMass > 1e15 && + isSadistic(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " thick balls cause night to fall over the land. As they contact earth, they obliterate " + container.describe(verbose) + " with a dull booOOOOooOOM. \ + The immesive forces involved cause your cum factories to bounce up into the air before coming down on the same spot. The second impact drives your titanic balls deep into the ground while throwing rubble, bodies, and shrapnel in every direction. The craters left by your gonads quickly fill with various fluids, leaving two lakes forever on the planet."; + } +}); + +//Balls Weigh 1e25 kg or less + +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e25 && + macro.ballMass > 1e20 && + isNonFatal(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + length(macro.ballDiameter, unit, true) + " across balls cause night to fall before they come to rest on" + container.describe(verbose) + " . Each monstrous testicle weighing " + mass(macro.ballMass, unit, false) + " . The impact of your manhood creating mountains and shaking earth"; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e25 && + macro.ballMass > 1e20 && + isFatal(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " across balls cause night to fall over the land. As they slam into the earth, they obliterate " + container.describe(verbose) + " with a thunderous BOOOOOOM. \ + You feel the Earth twang and vibrate with the imapct. The crater kicks up enough dust to throw off the seasons. Large fissures spread away from your privates in all directions, while the aftershocks of the impact alter and destroy the geology of the surrounding area."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e25 && + macro.ballMass > 1e20 && + isGory(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " across balls cause night to fall over the land. As they slam into the earth, they obliterate " + container.describe(verbose) + " with a thunderous BOOOOOOM. \ + You feel the Earth twang and vibrate with the imapct. The crater kicks up enough dust to throw off the seasons. Those that survived the blast are deafened as windows shatter around them and buildings shake on the verge of collapse. Large fissures spread away from your privates in all directions, while the aftershocks of the impact alter and destroy the geology of the surrounding area."; + } +}); + +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass <= 1e25 && + macro.ballMass > 1e20 && + isSadistic(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " across balls cause night to fall over the land. As they slam into the earth, they obliterate " + container.describe(verbose) + " with a thunderous BOOOOOOM. \ + You feel the Earth twang and vibrate with the imapct. The crater kicks up enough dust to throw off the seasons. Those that survived the blast are deafened as windows shatter around them and buildings shake on the verge of collapse. Large fissures spread away from your privates in all directions, while the aftershocks of the impact alter and destroy the geology of the surrounding area. \ + You smell the tang of copper in the air, and know that the next rainfall with be red with the blood of those you have slaughtered."; + } }); \ No newline at end of file From 3c98a4b8052c26f76d2a14f795f78057e849412a Mon Sep 17 00:00:00 2001 From: jsb5468 Date: Wed, 23 Jan 2019 16:21:05 -0500 Subject: [PATCH 15/17] Ball Smother Implementation #4 changed 1e25 teir to only go to 1e24(1/5 earths mass) and added teir for anything about 1e24kg ball mass. Fixed typos in previous tiers of ball smother --- recursive-desc.js | 53 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/recursive-desc.js b/recursive-desc.js index 807398d..1528cd7 100644 --- a/recursive-desc.js +++ b/recursive-desc.js @@ -2451,7 +2451,7 @@ rules["ball-smother"].push({ isNonFatal(macro); }, "desc": function(container, macro, verbose, flat) { - return "Your " + length(macro.ballDiameter, unit, true) + " across balls cause night to fall before they come to rest on" + container.describe(verbose) + " . Each monstrous testicle weighing " + mass(macro.ballMass, unit, false) + " . The impact of your manhood creating mountains and shaking earth"; + return "The Gravatational pull of your " + length(macro.ballDiameter, unit, true) + " across balls cause night to fall before they come to rest on" + container.describe(verbose) + " . Each monstrous testicle weighing " + mass(macro.ballMass, unit, f) + " . The impact of your manhood creating mountains and shaking earth"; } }); rules["ball-smother"].push({ @@ -2462,7 +2462,7 @@ rules["ball-smother"].push({ }, "desc": function(container, macro, verbose, flat) { return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " across balls cause night to fall over the land. As they slam into the earth, they obliterate " + container.describe(verbose) + " with a thunderous BOOOOOOM. \ - You feel the Earth twang and vibrate with the imapct. The crater kicks up enough dust to throw off the seasons. Large fissures spread away from your privates in all directions, while the aftershocks of the impact alter and destroy the geology of the surrounding area."; + You feel the Earth twang and vibrate with the impact. The crater kicks up enough dust to throw off the seasons. Large fissures spread away from your privates in all directions, while the aftershocks of the impact alter and destroy the geology of the surrounding area."; } }); rules["ball-smother"].push({ @@ -2473,7 +2473,7 @@ rules["ball-smother"].push({ }, "desc": function(container, macro, verbose, flat) { return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " across balls cause night to fall over the land. As they slam into the earth, they obliterate " + container.describe(verbose) + " with a thunderous BOOOOOOM. \ - You feel the Earth twang and vibrate with the imapct. The crater kicks up enough dust to throw off the seasons. Those that survived the blast are deafened as windows shatter around them and buildings shake on the verge of collapse. Large fissures spread away from your privates in all directions, while the aftershocks of the impact alter and destroy the geology of the surrounding area."; + You feel the Earth twang and vibrate with the impact. The crater kicks up enough dust to throw off the seasons. Those that survived the blast are deafened as windows shatter around them and buildings shake on the verge of collapse. Large fissures spread away from your privates in all directions, while the aftershocks of the impact alter and destroy the geology of the surrounding area."; } }); @@ -2485,7 +2485,52 @@ rules["ball-smother"].push({ }, "desc": function(container, macro, verbose, flat) { return "Your " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + " across balls cause night to fall over the land. As they slam into the earth, they obliterate " + container.describe(verbose) + " with a thunderous BOOOOOOM. \ - You feel the Earth twang and vibrate with the imapct. The crater kicks up enough dust to throw off the seasons. Those that survived the blast are deafened as windows shatter around them and buildings shake on the verge of collapse. Large fissures spread away from your privates in all directions, while the aftershocks of the impact alter and destroy the geology of the surrounding area. \ + You feel the Earth twang and vibrate with the impact. The crater kicks up enough dust to throw off the seasons. Those that survived the blast are deafened as windows shatter around them and buildings shake on the verge of collapse. Large fissures spread away from your privates in all directions, while the aftershocks of the impact alter and destroy the geology of the surrounding area. \ You smell the tang of copper in the air, and know that the next rainfall with be red with the blood of those you have slaughtered."; } +}); + + + +//Balls Weigh more than 1e24 kg + +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass > 1e24 && + isNonFatal(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "The gravitational pull of your " + mass(macro.ballMass, unit, true) + " balls draw " + container.describe(verbose) + " into your sack, smushing them firmly against your " + length(macro.ballDiameter, unit, true) + " wide balls. "; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass > 1e24 && + isFatal(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "The gravitational pull of your " + mass(macro.ballMass, unit, true) + " balls draw " + container.describe(verbose) + " into your sack, crushing " + (container.count == 1 ? "it" : "them") + " firmly against your " + length(macro.ballDiameter, unit, true) + " wide balls. The gravity each of your orbs tearing " + (container.count == 1 ? "it" : "them") + " asunder, spreading the debris across \ +your sack, flattening and grinding until nothing remains but your colossal manhood."; + } +}); +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass > 1e24 && + isGory(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "The gravitational pull of your " + mass(macro.ballMass, unit, true) + " balls draw " + container.describe(verbose) + " into your sack, obliterating " + (container.count == 1 ? "it" : "them") + " with your " + length(macro.ballDiameter, unit, true) + " wide balls. The gravity each of your orbs tearing " + (container.count == 1 ? "it" : "them") + " asunder. The many fragments of the collision \ +expand outward before being pulled back against your groin. The debris spread across your sack, flattening and grinding until nothing remains but your colossal manhood."; + } +}); + +rules["ball-smother"].push({ + "test": function(container, macro) { + return macro.ballMass > 1e24 && + isSadistic(macro); + + }, "desc": function(container, macro, verbose, flat) { + return "The gravitational pull of your " + mass(macro.ballMass, unit, true) + " balls draw " + container.describe(verbose) + " into your sack, decimating " + (container.count == 1 ? "it" : "them") + " with your " + length(macro.ballDiameter, unit, true) + " wide balls. The gravity each of your orbs ripping and tearing " + (container.count == 1 ? "it" : "them") + " asunder. The many fragments of the collision \ +expand outward before being pulled back against your groin. The debris spread across your sack, flattening and grinding until nothing remains but your colossal manhood."; + } }); \ No newline at end of file From 307b56e63c46bdab3d7e6f8635d9061bb04fd98a Mon Sep 17 00:00:00 2001 From: jsb5468 Date: Wed, 23 Jan 2019 16:21:49 -0500 Subject: [PATCH 16/17] Fix approx unit typos Fixed Capitalization and Spacing of large scale approx units --- units.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/units.js b/units.js index 8d3068a..60a5b63 100644 --- a/units.js +++ b/units.js @@ -281,10 +281,10 @@ function approxLength(m, singular=false) { return length + (singular || length == 1 ? " Panama Canal" : " Panama Canals"); } else if (m < 3474574*2) { let length = round(m/3474574,1); - return length + (singular || length == 1 ? " moon" : " moons"); + return length + (singular || length == 1 ? " Moon" : " moons"); } else if (m < 12.742e6*130) { let length = round(m/12.742e6,2); - return length + (singular || length == 1 ? " earth" : " earths"); + return length + (singular || length == 1 ? " Earth" : " earths"); } else if (m < 149.6e12) { let length = round(m/149.6e9,3); return length + (singular || length == 1 ? " AU" : " AUs"); @@ -394,9 +394,9 @@ function approxVolume(m3, singular=false) { return volume + (singular || volume == 1 ? " ocean" : " oceans"); } else if (m3 < 1e25){ let volume = round(m3/1e21, 3); - return volume + (singular || volume == 1 ? "Earth" : " Earths"); + return volume + (singular || volume == 1 ? " Earth" : " Earths"); } else { let volume = round(m3/1.4e27, 3); - return volume + (singular || volume == 1 ? "Sun" : " Suns"); + return volume + (singular || volume == 1 ? " Sun" : " Suns"); } } From 223c4cb9dc0c6e5ba00654e36aa611e06e97d533 Mon Sep 17 00:00:00 2001 From: jsb5468 Date: Wed, 23 Jan 2019 23:17:12 -0500 Subject: [PATCH 17/17] Ball Smother Implemation 5 fixed clipping between ball smother states --- recursive-desc.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/recursive-desc.js b/recursive-desc.js index 1528cd7..4eabca6 100644 --- a/recursive-desc.js +++ b/recursive-desc.js @@ -2442,11 +2442,11 @@ rules["ball-smother"].push({ } }); -//Balls Weigh 1e25 kg or less +//Balls Weigh 1e24 kg or less rules["ball-smother"].push({ "test": function(container, macro) { - return macro.ballMass <= 1e25 && + return macro.ballMass <= 1e24 && macro.ballMass > 1e20 && isNonFatal(macro); @@ -2456,7 +2456,7 @@ rules["ball-smother"].push({ }); rules["ball-smother"].push({ "test": function(container, macro) { - return macro.ballMass <= 1e25 && + return macro.ballMass <= 1e24 && macro.ballMass > 1e20 && isFatal(macro); @@ -2467,7 +2467,7 @@ rules["ball-smother"].push({ }); rules["ball-smother"].push({ "test": function(container, macro) { - return macro.ballMass <= 1e25 && + return macro.ballMass <= 1e24 && macro.ballMass > 1e20 && isGory(macro); @@ -2479,7 +2479,7 @@ rules["ball-smother"].push({ rules["ball-smother"].push({ "test": function(container, macro) { - return macro.ballMass <= 1e25 && + return macro.ballMass <= 1e24 && macro.ballMass > 1e20 && isSadistic(macro);