From 511a04d7882007c2d6aac46520efc999ab4bed6a Mon Sep 17 00:00:00 2001 From: Fen Dweller Date: Fri, 23 Feb 2018 10:58:11 -0500 Subject: [PATCH] Added breast vore --- game.js | 82 ++++++++++++++++++++++++++++++++++++++++++++++- recursive-desc.js | 16 +++++++++ stroll.html | 9 ++++-- 3 files changed, 104 insertions(+), 3 deletions(-) diff --git a/game.js b/game.js index 72412d2..ffb69f1 100644 --- a/game.js +++ b/game.js @@ -274,11 +274,34 @@ var macro = "maxDigest" : 1 }, + "breasts": { + "name" : "breasts", + "feed": function(prey) { + this.feedFunc(prey,this,this.owner); + }, + "feedFunc": function(prey,self,owner) { + if (self.contents.length == 0) + setTimeout(function() { owner.digest(owner,self) }, 1500); + this.contents.push(prey); + }, + "describeDigestion": function(container) { + return describe("breasts",container,this.owner,verbose); + }, + "fill": function(owner,container) { + if (macro.lactationEnabled) { + owner.milkStorage.amount += container.sum_property("mass") / 1e3; + } + }, + "contents" : [], + "maxDigest" : 1 + }, + "init": function() { this.stomach.owner = this; this.bowels.owner = this; this.womb.owner = this; this.balls.owner = this; + this.breasts.owner = this; this.cumStorage.owner = this; this.femcumStorage.owner = this; this.milkStorage.owner = this; @@ -314,9 +337,14 @@ var macro = }, "fillBreasts": function(self) { + if (self.milkStorage.amount > self.milkStorage.limit) { + milk_breasts(null, self.milkStorage.amount - self.milkStorage.limit); + } self.milkStorage.amount += self.lactationScale * self.milkStorage.limit / 1200; - if (self.milkStorage.amount > self.milkStorage.limit) + + if (self.milkStorage.amount > self.milkStorage.limit) { self.milkStorage.amount = self.milkStorage.limit; + } setTimeout(function () { self.fillBreasts(self) }, 100); update(); }, @@ -1086,6 +1114,48 @@ function breast_crush() } } +function breast_vore() +{ + // todo nipple areas? + var area = macro.breastArea/2; + var prey = getPrey(biome, area); + var line = describe("breast-vore", prey, macro, verbose); + var linesummary = summarize(prey.sum(), false); + + var people = get_living_prey(prey.sum()); + + var sound = ""; + + if (people < 3) { + sound = "Shlp."; + } else if (people < 10) { + sound = "Slurp."; + } else if (people < 50) { + sound = "Shlrrrrp!"; + } else if (people < 500) { + sound = "SHLRP!"; + } else if (people < 5000) { + sound = "SHLLLLURP!!"; + } else { + sound = "Oh the humanity!"; + } + var preyMass = prey.sum_property("mass"); + + macro.addGrowthPoints(preyMass); + + macro.breasts.feed(prey); + + macro.arouse(10); + + updateVictims("breastvored",prey); + update([sound,line,linesummary,newline]); + + if (macro.lactationEnabled && macro.milkStorage.amount / macro.milkStorage.limit > 0.5) { + var amount = Math.min(macro.lactationVolume, (macro.milkStorage.amount / macro.milkStorage.limit - 0.5) * macro.milkStorage.limit); + milk_breasts(null, amount); + } +} + function milk_breasts(e,vol) { if (vol == undefined) { @@ -1121,6 +1191,8 @@ function milk_breasts(e,vol) macro.addGrowthPoints(preyMass); + macro.arouse(20); + updateVictims("flooded",prey); update([sound,line,linesummary,newline]); } @@ -1836,7 +1908,13 @@ function startGame(e) { document.getElementById("milk").style.display = 'none'; document.getElementById("milkPercent").style.display = 'none'; } + if (macro.breastVore) { + victimTypes = victimTypes.concat(["breastvored"]); + } else { + document.getElementById("button-breast_vore").style.display = 'none'; + } } else { + document.getElementById("button-breast_vore").style.display = 'none'; document.getElementById("button-breast_milk").style.display = 'none'; document.getElementById("milk").style.display = 'none'; document.getElementById("milkPercent").style.display = 'none'; @@ -1916,6 +1994,7 @@ window.addEventListener('load', function(event) { victims["digested"] = initVictims(); victims["stomach"] = initVictims(); victims["breasts"] = initVictims(); + victims["breastvored"] = initVictims(); victims["flooded"] = initVictims(); victims["womb"] = initVictims(); victims["cock"] = initVictims(); @@ -1932,6 +2011,7 @@ window.addEventListener('load', function(event) { document.getElementById("button-tail_slap").addEventListener("click",tail_slap); document.getElementById("button-tail_vore").addEventListener("click",tail_vore); document.getElementById("button-breast_crush").addEventListener("click",breast_crush); + document.getElementById("button-breast_vore").addEventListener("click",breast_vore); document.getElementById("button-breast_milk").addEventListener("click",milk_breasts); document.getElementById("button-unbirth").addEventListener("click",unbirth); document.getElementById("button-cockslap").addEventListener("click",cockslap); diff --git a/recursive-desc.js b/recursive-desc.js index e88224e..18940f6 100644 --- a/recursive-desc.js +++ b/recursive-desc.js @@ -9,6 +9,7 @@ rules["tail-slap"] = []; rules["tail-vore"] = []; rules["ass-crush"] = []; rules["breast-crush"] = []; +rules["breast-vore"] = []; rules["breast-milk"] = []; rules["unbirth"] = []; rules["cock-vore"] = []; @@ -24,6 +25,7 @@ rules["stomach"] = []; rules["balls"] = []; rules["womb"] = []; rules["bowels"] = []; +rules["breasts"] = []; function isNonFatal(macro) { return macro.brutality == 0; @@ -121,6 +123,7 @@ function describeDefault(action, container, macro, verbose=true) { case "tail-slap": return defaultTailSlap(container, macro, verbose); case "tail-vore": return defaultTailVore(container, macro, verbose); case "breast-crush": return defaultBreastCrush(container, macro, verbose); + case "breast-vore": return defaultBreastVore(container, macro, verbose); case "breast-milk": return defaultBreastMilk(container, macro, verbose); case "unbirth": return defaultUnbirth(container, macro, verbose); case "cock-vore": return defaultCockVore(container, macro, verbose); @@ -135,6 +138,7 @@ function describeDefault(action, container, macro, verbose=true) { case "bowels": return defaultBowels(container, macro, verbose); case "womb": return defaultWomb(container, macro, verbose); case "balls": return defaultBalls(container, macro, verbose); + case "breasts": return defaultBreasts(container, macro, verbose); } } @@ -197,6 +201,11 @@ function defaultBreastCrush(container, macro, verbose) { return "You smoosh " + container.describe(verbose) + " with your breasts."; } +function defaultBreastVore(container, macro, verbose) { + return "Your nipples envelop " + container.describe(verbose) + ", pulling them into your breasts. "; +} + + function defaultBreastMilk(container, macro, verbose) { if (isFatal(macro)) return "You squeeze your breasts, coaxing out $VOLUME of warm, creamy milk that floods " + container.describe(verbose) + " in an unstoppable wave of white."; @@ -296,6 +305,13 @@ function defaultBalls(container, macro, verbose) { return "Your balls slosh as they absorb " + container.describe(false); } +function defaultBreasts(container, macro, verbose) { + if (isFatal(macro)) + return "Your breasts grrgle as they digest " + container.describe(false) + " into milk"; + else + return "Your breasts slosh as they absorb " + container.describe(false); +} + // EATING rules["eat"].push({ diff --git a/stroll.html b/stroll.html index 9d23d35..94f7df8 100644 --- a/stroll.html +++ b/stroll.html @@ -62,7 +62,7 @@
-
Welcome to Stroll 0.4.4
+
Welcome to Stroll 0.4.5
This game features 18+ content
Changelog
It's a nice day for a walk
@@ -79,6 +79,7 @@ + @@ -95,7 +96,7 @@
-

Welcome to Stroll 0.4.4

+

Welcome to Stroll 0.4.5

This game features 18+ content

Changelog
@@ -259,6 +260,10 @@
+
  • + +
    +