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"); } }