@@ -205,17 +205,12 @@ let macro =  
														
													
														
															
																  },   },  
														
													
														
															
																 
														
													
														
															
																  "digest": function(owner,organ) {   "digest": function(owner,organ) {  
														
													
														
															
																    let count = Math.min(organ.contents.length, organ.maxDigest );  
														
													
														
															
																    setTimeout(function() { owner.digest(owner,organ); }, 5000 );  
														
													
														
															
																 
														
													
														
															
																    let container = new Container( );  
														
													
														
															
																    let count = Math.min(organ.contents.length, organ.maxDigest );  
														
													
														
															
																 
														
													
														
															
																    while (count > 0) {  
														
													
														
															
																      let victim = organ.contents.shift();  
														
													
														
															
																      if (victim.name != "Container")  
														
													
														
															
																        victim = new Container([victim]);  
														
													
														
															
																      container = container.merge(victim);  
														
													
														
															
																      --count;  
														
													
														
															
																    }  
														
													
														
															
																    let container = organ.contents.pop();  
														
													
														
															
																    organ.contents.unshift(new Container());  
														
													
														
															
																 
														
													
														
															
																    if (container.count == 0)     if (container.count == 0)  
														
													
														
															
																      return;       return;  
														
													
												
													
														
															
																
																	
																	
																	
																		 
																@@ -234,10 +229,6 @@ let macro =  
														
													
														
															
																    let lethal = macro.brutality != 0 && (!macro.soulVoreEnabled || organ.name === "souls");     let lethal = macro.brutality != 0 && (!macro.soulVoreEnabled || organ.name === "souls");  
														
													
														
															
																    let summary = summarize(container.sum(),lethal);     let summary = summarize(container.sum(),lethal);  
														
													
														
															
																 
														
													
														
															
																    if (organ.contents.length > 0) {  
														
													
														
															
																      setTimeout(function() { owner.digest(owner,organ); }, 15000);  
														
													
														
															
																    }  
														
													
														
															
																 
														
													
														
															
																    if (macro.soulVoreEnabled && organ.name != "souls") {     if (macro.soulVoreEnabled && organ.name != "souls") {  
														
													
														
															
																      owner.souls.feed(container);       owner.souls.feed(container);  
														
													
														
															
																      let soulCount = container.sum()["Person"];       let soulCount = container.sum()["Person"];  
														
													
												
													
														
															
																
																	
																	
																	
																		 
																@@ -255,13 +246,17 @@ let macro =  
														
													
														
															
																 
														
													
														
															
																  "stomach": {   "stomach": {  
														
													
														
															
																    "name": "stomach",     "name": "stomach",  
														
													
														
															
																    "setup": function(owner) {  
														
													
														
															
																      this.owner = owner;  
														
													
														
															
																      for (let i = 0; i < this.stages; i++)  
														
													
														
															
																        this.contents.push(new Container());  
														
													
														
															
																      owner.digest(owner,this);  
														
													
														
															
																    },  
														
													
														
															
																    "feed": function(prey) {     "feed": function(prey) {  
														
													
														
															
																      this.feedFunc(prey,this,this.owner);       this.feedFunc(prey,this,this.owner);  
														
													
														
															
																    },     },  
														
													
														
															
																    "feedFunc": function(prey,self,owner) {     "feedFunc": function(prey,self,owner) {  
														
													
														
															
																      if (self.contents.length == 0)  
														
													
														
															
																        setTimeout(function() { owner.digest(owner,self); }, 15000);  
														
													
														
															
																      this.contents.push(prey);  
														
													
														
															
																      this.contents[0] = this.contents[0].merge(prey);  
														
													
														
															
																    },     },  
														
													
														
															
																    "describeDigestion": function(container) {     "describeDigestion": function(container) {  
														
													
														
															
																      return describe("stomach",container,this.owner,verbose);       return describe("stomach",container,this.owner,verbose);  
														
													
												
													
														
															
																
																	
																	
																	
																		 
																@@ -269,19 +264,39 @@ let macro =  
														
													
														
															
																    "fill": function(owner,container) {     "fill": function(owner,container) {  
														
													
														
															
																      //no-op       //no-op  
														
													
														
															
																    },     },  
														
													
														
															
																    get description() {  
														
													
														
															
																      let prey = new Container();  
														
													
														
															
																      this.contents.forEach(function(x) {  
														
													
														
															
																        prey = prey.merge(x);  
														
													
														
															
																      });  
														
													
														
															
																 
														
													
														
															
																      if (prey.count == 0) {  
														
													
														
															
																        return "Your belly is flat, growling and gurgling for want of prey.";  
														
													
														
															
																      } else {  
														
													
														
															
																        if (macro.brutality > 0)  {  
														
													
														
															
																          return "Your belly churns and bubbles as it works to melt " + prey.describe(false) + " down to chyme.";  
														
													
														
															
																        } else {  
														
													
														
															
																          return "Your belly sloshes with the weight of " + prey.describe(false) + " trapped within.";  
														
													
														
															
																        }  
														
													
														
															
																      }  
														
													
														
															
																    },  
														
													
														
															
																    "contents": [],     "contents": [],  
														
													
														
															
																    "maxDigest": 5  
														
													
														
															
																    "stages": 3   
														
													
														
															
																  },   },  
														
													
														
															
																 
														
													
														
															
																  "bowels": {   "bowels": {  
														
													
														
															
																    "name" : "bowels",     "name" : "bowels",  
														
													
														
															
																    "setup": function(owner) {  
														
													
														
															
																      this.owner = owner;  
														
													
														
															
																      for (let i = 0; i < this.stages; i++)  
														
													
														
															
																        this.contents.push(new Container());  
														
													
														
															
																      owner.digest(owner,this);  
														
													
														
															
																    },  
														
													
														
															
																    "feed": function(prey) {     "feed": function(prey) {  
														
													
														
															
																      this.feedFunc(prey,this,this.owner);       this.feedFunc(prey,this,this.owner);  
														
													
														
															
																    },     },  
														
													
														
															
																    "feedFunc": function(prey,self,owner) {     "feedFunc": function(prey,self,owner) {  
														
													
														
															
																      if (self.contents.length == 0)  
														
													
														
															
																        setTimeout(function() { owner.digest(owner,self); }, 15000);  
														
													
														
															
																      this.contents.push(prey);  
														
													
														
															
																      this.contents[0] = this.contents[0].merge(prey);  
														
													
														
															
																    },     },  
														
													
														
															
																    "describeDigestion" : function(container) {     "describeDigestion" : function(container) {  
														
													
														
															
																      return describe("bowels",container,this.owner,verbose);       return describe("bowels",container,this.owner,verbose);  
														
													
												
													
														
															
																
																	
																	
																	
																		 
																@@ -289,19 +304,39 @@ let macro =  
														
													
														
															
																    "fill": function(owner,container) {     "fill": function(owner,container) {  
														
													
														
															
																      //no-op       //no-op  
														
													
														
															
																    },     },  
														
													
														
															
																    get description() {  
														
													
														
															
																      let prey = new Container();  
														
													
														
															
																      this.contents.forEach(function(x) {  
														
													
														
															
																        prey = prey.merge(x);  
														
													
														
															
																      });  
														
													
														
															
																 
														
													
														
															
																      if (prey.count == 0) {  
														
													
														
															
																        return "Your bowels are empty.";  
														
													
														
															
																      } else {  
														
													
														
															
																        if (macro.brutality > 0)  {  
														
													
														
															
																          return "Your bowels groan ominously as they clench around " + prey.describe(false) + ", slowly absorbing them into your musky depths.";  
														
													
														
															
																        } else {  
														
													
														
															
																          return "Your bowels bulge with " + prey.describe(false) + ".";  
														
													
														
															
																        }  
														
													
														
															
																      }  
														
													
														
															
																    },  
														
													
														
															
																    "contents" : [],     "contents" : [],  
														
													
														
															
																    "maxDigest" : 3  
														
													
														
															
																    "stages " : 3  
														
													
														
															
																  },   },  
														
													
														
															
																 
														
													
														
															
																  "womb": {   "womb": {  
														
													
														
															
																    "name" : "womb",     "name" : "womb",  
														
													
														
															
																    "setup": function(owner) {  
														
													
														
															
																      this.owner = owner;  
														
													
														
															
																      for (let i = 0; i < this.stages; i++)  
														
													
														
															
																        this.contents.push(new Container());  
														
													
														
															
																      owner.digest(owner,this);  
														
													
														
															
																    },  
														
													
														
															
																    "feed": function(prey) {     "feed": function(prey) {  
														
													
														
															
																      this.feedFunc(prey,this,this.owner);       this.feedFunc(prey,this,this.owner);  
														
													
														
															
																    },     },  
														
													
														
															
																    "feedFunc": function(prey,self,owner) {     "feedFunc": function(prey,self,owner) {  
														
													
														
															
																      if (self.contents.length == 0)  
														
													
														
															
																        setTimeout(function() { owner.digest(owner,self); }, 15000);  
														
													
														
															
																      this.contents.push(prey);  
														
													
														
															
																      this.contents[0] = this.contents[0].merge(prey);  
														
													
														
															
																    },     },  
														
													
														
															
																    "describeDigestion" : function(container) {     "describeDigestion" : function(container) {  
														
													
														
															
																      return describe("womb",container,this.owner,verbose);       return describe("womb",container,this.owner,verbose);  
														
													
												
													
														
															
																
																	
																	
																	
																		 
																@@ -309,19 +344,39 @@ let macro =  
														
													
														
															
																    "fill": function(owner,container) {     "fill": function(owner,container) {  
														
													
														
															
																      owner.femcumStorage.amount += container.sum_property("mass") / 1e3;       owner.femcumStorage.amount += container.sum_property("mass") / 1e3;  
														
													
														
															
																    },     },  
														
													
														
															
																    get description() {  
														
													
														
															
																      let prey = new Container();  
														
													
														
															
																      this.contents.forEach(function(x) {  
														
													
														
															
																        prey = prey.merge(x);  
														
													
														
															
																      });  
														
													
														
															
																 
														
													
														
															
																      if (prey.count == 0) {  
														
													
														
															
																        return "Your lower belly is flat.";  
														
													
														
															
																      } else {  
														
													
														
															
																        if (macro.brutality > 0)  {  
														
													
														
															
																          return "Your womb tingles as its rhythmically grinds down on " + prey.describe(false) + ", turning them soft and wet as they start to dissolve into femcum.";  
														
													
														
															
																        } else {  
														
													
														
															
																          return "Your womb clenches around " + prey.describe(false) + ".";  
														
													
														
															
																        }  
														
													
														
															
																      }  
														
													
														
															
																    },  
														
													
														
															
																    "contents" : [],     "contents" : [],  
														
													
														
															
																    "maxDigest" : 1  
														
													
														
															
																    "stages" : 2   
														
													
														
															
																  },   },  
														
													
														
															
																 
														
													
														
															
																  "balls": {   "balls": {  
														
													
														
															
																    "name" : "balls",     "name" : "balls",  
														
													
														
															
																    "setup": function(owner) {  
														
													
														
															
																      this.owner = owner;  
														
													
														
															
																      for (let i = 0; i < this.stages; i++)  
														
													
														
															
																        this.contents.push(new Container());  
														
													
														
															
																      owner.digest(owner,this);  
														
													
														
															
																    },  
														
													
														
															
																    "feed": function(prey) {     "feed": function(prey) {  
														
													
														
															
																      this.feedFunc(prey,this,this.owner);       this.feedFunc(prey,this,this.owner);  
														
													
														
															
																    },     },  
														
													
														
															
																    "feedFunc": function(prey,self,owner) {     "feedFunc": function(prey,self,owner) {  
														
													
														
															
																      if (self.contents.length == 0)  
														
													
														
															
																        setTimeout(function() { owner.digest(owner,self); }, 15000);  
														
													
														
															
																      this.contents.push(prey);  
														
													
														
															
																      this.contents[0] = this.contents[0].merge(prey);  
														
													
														
															
																    },     },  
														
													
														
															
																    "describeDigestion": function(container) {     "describeDigestion": function(container) {  
														
													
														
															
																      return describe("balls",container,this.owner,verbose);       return describe("balls",container,this.owner,verbose);  
														
													
												
													
														
															
																
																	
																	
																	
																		 
																@@ -329,19 +384,39 @@ let macro =  
														
													
														
															
																    "fill": function(owner,container) {     "fill": function(owner,container) {  
														
													
														
															
																      owner.cumStorage.amount += container.sum_property("mass") / 1e3;       owner.cumStorage.amount += container.sum_property("mass") / 1e3;  
														
													
														
															
																    },     },  
														
													
														
															
																    get description() {  
														
													
														
															
																      let prey = new Container();  
														
													
														
															
																      this.contents.forEach(function(x) {  
														
													
														
															
																        prey = prey.merge(x);  
														
													
														
															
																      });  
														
													
														
															
																 
														
													
														
															
																      if (prey.count == 0) {  
														
													
														
															
																        return "Your balls are smooth.";  
														
													
														
															
																      } else {  
														
													
														
															
																        if (macro.brutality > 0)  {  
														
													
														
															
																          return "Your balls slosh and bulge as they work to convert " + prey.describe(false) + " into hot cum.";  
														
													
														
															
																        } else {  
														
													
														
															
																          return "Your balls slosh about, loaded down with " + prey.describe(false) + ".";  
														
													
														
															
																        }  
														
													
														
															
																      }  
														
													
														
															
																    },  
														
													
														
															
																    "contents" : [],     "contents" : [],  
														
													
														
															
																    "maxDigest" : 1  
														
													
														
															
																    "stages" : 2   
														
													
														
															
																  },   },  
														
													
														
															
																 
														
													
														
															
																  "breasts": {   "breasts": {  
														
													
														
															
																    "name" : "breasts",     "name" : "breasts",  
														
													
														
															
																    "setup": function(owner) {  
														
													
														
															
																      this.owner = owner;  
														
													
														
															
																      for (let i = 0; i < this.stages; i++)  
														
													
														
															
																        this.contents.push(new Container());  
														
													
														
															
																      owner.digest(owner,this);  
														
													
														
															
																    },  
														
													
														
															
																    "feed": function(prey) {     "feed": function(prey) {  
														
													
														
															
																      this.feedFunc(prey,this,this.owner);       this.feedFunc(prey,this,this.owner);  
														
													
														
															
																    },     },  
														
													
														
															
																    "feedFunc": function(prey,self,owner) {     "feedFunc": function(prey,self,owner) {  
														
													
														
															
																      if (self.contents.length == 0)  
														
													
														
															
																        setTimeout(function() { owner.digest(owner,self); }, 15000);  
														
													
														
															
																      this.contents.push(prey);  
														
													
														
															
																      this.contents[0] = this.contents[0].merge(prey);  
														
													
														
															
																    },     },  
														
													
														
															
																    "describeDigestion": function(container) {     "describeDigestion": function(container) {  
														
													
														
															
																      return describe("breasts",container,this.owner,verbose);       return describe("breasts",container,this.owner,verbose);  
														
													
												
													
														
															
																
																	
																	
																	
																		 
																@@ -351,21 +426,41 @@ let macro =  
														
													
														
															
																        owner.milkStorage.amount += container.sum_property("mass") / 1e3;         owner.milkStorage.amount += container.sum_property("mass") / 1e3;  
														
													
														
															
																      }       }  
														
													
														
															
																    },     },  
														
													
														
															
																    get description() {  
														
													
														
															
																      let prey = new Container();  
														
													
														
															
																      this.contents.forEach(function(x) {  
														
													
														
															
																        prey = prey.merge(x);  
														
													
														
															
																      });  
														
													
														
															
																 
														
													
														
															
																      if (prey.count == 0) {  
														
													
														
															
																        return "Your breasts are smooth.";  
														
													
														
															
																      } else {  
														
													
														
															
																        if (macro.brutality > 0)  {  
														
													
														
															
																          return "Your breasts slosh from side to side, " + prey.describe(false) + " slowly digesting into creamy milk.";  
														
													
														
															
																        } else {  
														
													
														
															
																          return "Your breasts bulge with " + prey.describe(false) + ".";  
														
													
														
															
																        }  
														
													
														
															
																      }  
														
													
														
															
																    },  
														
													
														
															
																    "contents" : [],     "contents" : [],  
														
													
														
															
																    "maxDigest" : 1  
														
													
														
															
																    "stages" : 2   
														
													
														
															
																  },   },  
														
													
														
															
																 
														
													
														
															
																  soulVoreEnabled: true,   soulVoreEnabled: true,  
														
													
														
															
																 
														
													
														
															
																  "souls": {   "souls": {  
														
													
														
															
																    "name" : "souls",     "name" : "souls",  
														
													
														
															
																    "setup": function(owner) {  
														
													
														
															
																      this.owner = owner;  
														
													
														
															
																      for (let i = 0; i < this.stages; i++)  
														
													
														
															
																        this.contents.push(new Container());  
														
													
														
															
																      owner.digest(owner,this);  
														
													
														
															
																    },  
														
													
														
															
																    "feed": function(prey) {     "feed": function(prey) {  
														
													
														
															
																      this.feedFunc(prey,this,this.owner);       this.feedFunc(prey,this,this.owner);  
														
													
														
															
																    },     },  
														
													
														
															
																    "feedFunc": function(prey,self,owner) {     "feedFunc": function(prey,self,owner) {  
														
													
														
															
																      if (self.contents.length == 0)  
														
													
														
															
																        setTimeout(function() { owner.digest(owner,self); }, 15000);  
														
													
														
															
																      this.contents.push(prey);  
														
													
														
															
																      this.contents[0] = this.contents[0].merge(prey);  
														
													
														
															
																    },     },  
														
													
														
															
																    "describeDigestion": function(container) {     "describeDigestion": function(container) {  
														
													
														
															
																      return describe("soul-digest",container,this.owner,verbose);       return describe("soul-digest",container,this.owner,verbose);  
														
													
												
													
														
															
																
																	
																	
																	
																		 
																@@ -373,8 +468,24 @@ let macro =  
														
													
														
															
																    "fill": function(owner,container) {     "fill": function(owner,container) {  
														
													
														
															
																      //no-op       //no-op  
														
													
														
															
																    },     },  
														
													
														
															
																    get description() {  
														
													
														
															
																      let prey = new Container();  
														
													
														
															
																      this.contents.forEach(function(x) {  
														
													
														
															
																        prey = prey.merge(x);  
														
													
														
															
																      });  
														
													
														
															
																 
														
													
														
															
																      if (prey.count == 0) {  
														
													
														
															
																        return "Your depths hold no souls.";  
														
													
														
															
																      } else {  
														
													
														
															
																        if (macro.brutality > 0)  {  
														
													
														
															
																          return "Your depths bubble and boil with energy, slowly digesting the " + (prey.count > 1 ? "souls of " : "soul of ") + prey.describe(false);  
														
													
														
															
																        } else {  
														
													
														
															
																          return "You feel " + (prey.count > 1 ? prey.count + " souls " : "a soul ") + "trapped in your depths.";  
														
													
														
															
																        }  
														
													
														
															
																      }  
														
													
														
															
																    },  
														
													
														
															
																    "contents" : [],     "contents" : [],  
														
													
														
															
																    "maxDigest" : 5  
														
													
														
															
																    "stages" : 2   
														
													
														
															
																  },   },  
														
													
														
															
																 
														
													
														
															
																  // holding spots   // holding spots  
														
													
												
													
														
															
																
																	
																		 
																@@ -415,7 +526,7 @@ let macro =  
														
													
														
															
																    "container": new Container(),     "container": new Container(),  
														
													
														
															
																    get description() {     get description() {  
														
													
														
															
																      if (this.container.count == 0)       if (this.container.count == 0)  
														
													
														
															
																        return "Your breasts don't have anyone stuck i n them";  
														
													
														
															
																        return "Your breasts don't have anyone stuck betwee n them";  
														
													
														
															
																      else       else  
														
													
														
															
																        return "Your cleavage contains " + this.container.describe(false);         return "Your cleavage contains " + this.container.describe(false);  
														
													
														
															
																    },     },  
														
													
												
													
														
															
																
																	
																	
																	
																		 
																@@ -425,12 +536,12 @@ let macro =  
														
													
														
															
																  },   },  
														
													
														
															
																 
														
													
														
															
																  "init": function() {   "init": function() {  
														
													
														
															
																    this.stomach.owner = this ;  
														
													
														
															
																    this.bowels.owner = this ;  
														
													
														
															
																    this.womb.owner = this ;  
														
													
														
															
																    this.balls.owner = this ;  
														
													
														
															
																    this.breasts.owner = this ;  
														
													
														
															
																    this.souls.owner = this ;  
														
													
														
															
																    this.stomach.setup(this) ;  
														
													
														
															
																    this.bowels.setup(this) ;  
														
													
														
															
																    this.womb.setup(this) ;  
														
													
														
															
																    this.balls.setup(this) ;  
														
													
														
															
																    this.breasts.setup(this) ;  
														
													
														
															
																    this.souls.setup(this) ;  
														
													
														
															
																    this.cumStorage.owner = this;     this.cumStorage.owner = this;  
														
													
														
															
																    this.femcumStorage.owner = this;     this.femcumStorage.owner = this;  
														
													
														
															
																    this.milkStorage.owner = this;     this.milkStorage.owner = this;  
														
													
												
													
														
															
																
																	
																		 
																@@ -645,6 +756,9 @@ let macro =  
														
													
														
															
																 
														
													
														
															
																    result.push(line);     result.push(line);  
														
													
														
															
																 
														
													
														
															
																    result.push(macro.stomach.description);  
														
													
														
															
																    result.push(macro.bowels.description);  
														
													
														
															
																 
														
													
														
															
																    if (this.hasTail) {     if (this.hasTail) {  
														
													
														
															
																      line = "Your " + macro.describeTail + (macro.tailCount > 1 ? " tails sway as you walk. " : " tail sways as you walk. ");       line = "Your " + macro.describeTail + (macro.tailCount > 1 ? " tails sway as you walk. " : " tail sways as you walk. ");  
														
													
														
															
																      if (this.tailMaw) {       if (this.tailMaw) {  
														
													
												
													
														
															
																
																	
																		 
																@@ -674,11 +788,13 @@ let macro =  
														
													
														
															
																      }       }  
														
													
														
															
																      line = "Your " + this.describeDick + " cock hangs from your hips, with two " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + "-wide balls hanging beneath.";       line = "Your " + this.describeDick + " cock hangs from your hips, with two " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + "-wide balls hanging beneath.";  
														
													
														
															
																      result.push(line);       result.push(line);  
														
													
														
															
																      result.push(macro.balls.description);  
														
													
														
															
																    }     }  
														
													
														
															
																 
														
													
														
															
																    if (this.femaleParts) {     if (this.femaleParts) {  
														
													
														
															
																      line = "Your glistening " + this.describeVagina + " slit peeks out from between your legs.";       line = "Your glistening " + this.describeVagina + " slit peeks out from between your legs.";  
														
													
														
															
																      result.push(line);       result.push(line);  
														
													
														
															
																      result.push(macro.womb.description);  
														
													
														
															
																    }     }  
														
													
														
															
																 
														
													
														
															
																    if (this.hasBreasts) {     if (this.hasBreasts) {  
														
													
												
													
														
															
																
																	
																	
																	
																		 
																@@ -687,8 +803,12 @@ let macro =  
														
													
														
															
																      if (this.cleavage.container.count > 0)       if (this.cleavage.container.count > 0)  
														
													
														
															
																        line += " Between them are " + this.cleavage.container.describe(false) + ".";         line += " Between them are " + this.cleavage.container.describe(false) + ".";  
														
													
														
															
																      result.push(line);       result.push(line);  
														
													
														
															
																      result.push(macro.breasts.description);  
														
													
														
															
																    }     }  
														
													
														
															
																 
														
													
														
															
																    if (this.soulVoreEnabled) {  
														
													
														
															
																      result.push(macro.souls.description);  
														
													
														
															
																    }  
														
													
														
															
																 
														
													
														
															
																    if (this.hasPouch) {     if (this.hasPouch) {  
														
													
														
															
																      line = this.pouch.description;       line = this.pouch.description;