diff --git a/game.js b/game.js index 6c367de..7a111a0 100644 --- a/game.js +++ b/game.js @@ -63,6 +63,12 @@ var macro = return volume * this.ballDensity; }, + "baseCumRatio": 0.25, + "cumScale": 1, + get cumVolume() { + return this.ballVolume * this.baseCumRatio * this.cumScale; + }, + "baseVaginaLength": 0.1, "baseVaginaWidth": 0.05, "vaginaScale": 1, @@ -71,6 +77,12 @@ var macro = get vaginaWidth() { return this.scaling(this.baseVaginaWidth * this.vaginaScale, this.scale, 1); }, get vaginaArea() { return this.vaginaLength * this.vaginaWidth }, + "femcumRatio": 0.1, + "femcumScale": 1, + get femcumVolume() { + return this.vaginaArea * this.vaginaLength * this.femcumRatio * this.femcumScale; + }, + "baseBreastDiameter": 0.1, "breastScale": 1, "breastDensity": 1000, @@ -194,6 +206,55 @@ var macro = "maleParts": true, "femaleParts": true, + "orgasm": false, + "arousal": 0, + + "arouse": function(amount) { + this.arousal += amount; + + if (this.arousal >= 100) { + this.arousal = 100; + + if (!this.orgasm) { + this.orgasm = true; + if (this.maleParts) { + this.maleOrgasm(this); + } + if (this.femaleParts) { + this.femaleOrgasm(this); + } + } + } + }, + + "quench": function(amount) { + this.arousal -= amount; + + if (this.arousal <= 0) { + this.arousal = 0; + if (this.orgasm) { + this.orgasm = false; + } + } + }, + + "maleOrgasm": function(self) { + if (self.orgasm) { + self.quench(10); + male_orgasm(); + setTimeout(function() { self.maleOrgasm(self) }, 2000); + } + }, + + "femaleOrgasm": function(self) { + if (this.orgasm) { + this.quench(10); + female_orgasm(); + setTimeout(function() { self.femaleOrgasm(self) }, 2000); + } + }, + + get description() { result = []; line = "You are a " + length(macro.height, unit, true) + " tall " + macro.species + ". You weigh " + mass(macro.mass, unit) + "."; @@ -410,7 +471,6 @@ function feed() var people = get_living_prey(prey.sum()); var sound = "Ulp"; - if (people < 3) { sound = "Ulp."; } else if (people < 10) { @@ -431,6 +491,8 @@ function feed() macro.stomach.feed(prey); + macro.arouse(5); + updateVictims("stomach",prey); update([sound,line,linesummary,newline]); } @@ -463,6 +525,8 @@ function stomp() macro.scaleWithMass(preyMass); + macro.arouse(5); + updateVictims("stomped",prey); update([sound,line,linesummary,newline]); } @@ -523,6 +587,8 @@ function anal_vore() macro.bowels.feed(prey); + macro.arouse(10); + updateVictims("bowels",prey); updateVictims("stomped",crushed); update([sound,line1,line1summary,newline,sound2,line2,line2summary,newline]); @@ -556,6 +622,8 @@ function breast_crush() macro.scaleWithMass(preyMass); + macro.arouse(10); + updateVictims("breasts",prey); update([sound,line,linesummary,newline]); } @@ -591,6 +659,8 @@ function unbirth() macro.womb.feed(prey); + macro.arouse(20); + updateVictims("womb",prey); update([sound,line,linesummary,newline]); } @@ -624,6 +694,8 @@ function cockslap() macro.scaleWithMass(preyMass); + macro.arouse(15); + updateVictims("cock",prey); update([sound,line,linesummary,newline]); } @@ -658,6 +730,8 @@ function cock_vore() macro.balls.feed(prey); + macro.arouse(20); + updateVictims("balls",prey); update([sound,line,linesummary,newline]); } @@ -690,10 +764,86 @@ function ball_smother() macro.scaleWithMass(preyMass); + macro.arouse(10); + updateVictims("balls",prey); update([sound,line,linesummary,newline]); } +function male_orgasm() +{ + var vol = macro.cumVolume; + + // let's make it 10cm thick + + var area = vol * 10; + + var prey = getPrey(biome, area); + var line = prey.male_orgasm(verbose).replace("$VOLUME",volume(vol,unit,false)) + var linesummary = summarize(prey.sum(), true); + + var people = get_living_prey(prey.sum()); + + var sound = "Spurt!"; + + if (people < 3) { + sound = "Spurt!"; + } else if (people < 10) { + sound = "Sploosh!"; + } else if (people < 50) { + sound = "Sploooooosh!"; + } else if (people < 500) { + sound = "SPLOOSH!"; + } else if (people < 5000) { + sound = "SPLOOOOOOOOOOSH!!"; + } else { + sound = "Oh the humanity!"; + } + var preyMass = prey.sum_property("mass"); + + macro.scaleWithMass(preyMass); + + updateVictims("splooged",prey); + update([sound,line,linesummary,newline]); +} + +function female_orgasm() +{ + var vol = macro.femcumVolume; + + // let's make it 10cm thick + + var area = vol * 10; + + var prey = getPrey(biome, area); + var line = prey.female_orgasm(verbose).replace("$VOLUME",volume(vol,unit,false)); + var linesummary = summarize(prey.sum(), true); + + var people = get_living_prey(prey.sum()); + + var sound = "Spurt!"; + + if (people < 3) { + sound = "Spurt!"; + } else if (people < 10) { + sound = "Sploosh!"; + } else if (people < 50) { + sound = "Sploooooosh!"; + } else if (people < 500) { + sound = "SPLOOSH!"; + } else if (people < 5000) { + sound = "SPLOOOOOOOOOOSH!!"; + } else { + sound = "Oh the humanity!"; + } + var preyMass = prey.sum_property("mass"); + + macro.scaleWithMass(preyMass); + + updateVictims("splooged",prey); + update([sound,line,linesummary,newline]); +} + function update(lines = []) { var log = document.getElementById("log"); @@ -708,6 +858,7 @@ function update(lines = []) document.getElementById("height").innerHTML = "Height: " + length(macro.height, unit); document.getElementById("mass").innerHTML = "Mass: " + mass(macro.mass, unit); + document.getElementById("arousal").innerHTML = "Arousal: " + macro.arousal + "%"; for (var type in victims) { if (victims.hasOwnProperty(type)) { @@ -797,6 +948,10 @@ function startGame() { document.getElementById("stats-breasts").style.display = 'none'; } + if (!macro.maleParts && !macro.femaleParts) { + document.getElementById("stats-splooged").style.display = 'none'; + } + var species = document.getElementById("option-species").value; var re = /^[a-zA-Z\- ]+$/; @@ -818,6 +973,7 @@ window.addEventListener('load', function(event) { victims["cock"] = initVictims(); victims["balls"] = initVictims(); victims["smothered"] = initVictims(); + victims["splooged"] = initVictims(); macro.init(); diff --git a/recursive-macro.js b/recursive-macro.js index 090a44a..70c57ee 100644 --- a/recursive-macro.js +++ b/recursive-macro.js @@ -267,7 +267,15 @@ function defaultCockVore(thing) { } function defaultBallSmother(thing) { - return function(verbose=true,height=10) { return "Your weighty balls spread over " + thing.describe(verbose) + ", smothering them in musk. "; } + return function(verbose=true,height=10) { return "Your weighty balls spread over " + thing.describe(verbose) + ", smothering them in musk."; } +} + +function defaultMaleOrgasm(thing) { + return function(verbose=true,height=10) { return "You're cumming! Your thick cock spurts out $VOLUME of seed, splooging " + thing.describe(verbose) + "."; } +} + +function defaultFemaleOrgasm(thing) { + return function(verbose=true,height=10) { return "You're cumming! Your moist slit sprays $VOLUME of sluck femcum, splooging " + thing.describe(verbose) + "."; } } function defaultArea(thing) { @@ -355,6 +363,8 @@ function DefaultEntity() { this.cockslap = defaultCockslap; this.cock_vore = defaultCockVore; this.ball_smother = defaultBallSmother; + this.male_orgasm = defaultMaleOrgasm; + this.female_orgasm = defaultFemaleOrgasm; this.sum = defaultSum; this.area = defaultArea; this.mass = defaultMass; diff --git a/stroll.html b/stroll.html index c8819eb..d525020 100644 --- a/stroll.html +++ b/stroll.html @@ -16,6 +16,7 @@

Stats

+

Stomped

@@ -44,10 +45,13 @@

Smothered

+
+

Splooged

+
-
Welcome to Stroll 0.2.3
+
Welcome to Stroll 0.2.4
This game features 18+ content
Changelog
It's a nice day for a walk
diff --git a/units.js b/units.js index a04fe41..eb71bf3 100644 --- a/units.js +++ b/units.js @@ -25,6 +25,7 @@ function volume(m3, type="metric", singular=false) { case "approx": return approxVolume(m3, singular); break; } } + function metricMass(kg, singular=false) { if (kg < 1/1000) { var mass = round(kg * 1e6,0); @@ -139,8 +140,11 @@ function approxLength(m, singular=false) { } function metricVolume(m3, singular=false) { - if (m3 < 1) { - var volume = round(m3/1000, 1); + if (m3 < 1/1000) { + var volume = round(m3*1e6, 0); + return volume + (singular || volume == 1 ? " milliliter" : " milliliters"); + } else if (m3 < 1) { + var volume = round(m3*1000, 1); return volume + (singular || volume == 1 ? " liter" : " liters"); } else if (m3 < 1000000) { var volume = round(m3, 0);