|  |  | @@ -1139,13 +1139,13 @@ let macro = | 
		
	
		
			
			|  |  |  | let amount = self.gasStorage.amount - self.gasStorage.limit*3/4; | 
		
	
		
			
			|  |  |  | if (self.belchEnabled && self.fartEnabled) { | 
		
	
		
			
			|  |  |  | if (Math.random() < 0.5) | 
		
	
		
			
			|  |  |  | belch(amount); | 
		
	
		
			
			|  |  |  | belch(amount, false); | 
		
	
		
			
			|  |  |  | else | 
		
	
		
			
			|  |  |  | fart(amount); | 
		
	
		
			
			|  |  |  | fart(amount, false); | 
		
	
		
			
			|  |  |  | } else if (self.belchEnabled) { | 
		
	
		
			
			|  |  |  | belch(amount); | 
		
	
		
			
			|  |  |  | belch(amount, false); | 
		
	
		
			
			|  |  |  | } else if (self.fartEnabled) { | 
		
	
		
			
			|  |  |  | fart(amount); | 
		
	
		
			
			|  |  |  | fart(amount, false); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
				|  |  | @@ -1281,7 +1281,7 @@ let macro = | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (!this.orgasm) { | 
		
	
		
			
			|  |  |  | this.orgasm = true; | 
		
	
		
			
			|  |  |  | update(["You shudder as ecstasy races up your spine",newline]); | 
		
	
		
			
			|  |  |  | update(["You shudder as ecstasy races up your spine",newline], false); | 
		
	
		
			
			|  |  |  | if (this.maleParts) { | 
		
	
		
			
			|  |  |  | this.maleOrgasm(this); | 
		
	
		
			
			|  |  |  | if (this.sheath.container.count > 0) | 
		
	
	
		
			
				|  |  | @@ -1332,11 +1332,11 @@ let macro = | 
		
	
		
			
			|  |  |  | self.femaleSpurt += ((self.arousal-100)/100 + Math.random()) / 25 * (self.edge); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (self.maleSpurt > 1) { | 
		
	
		
			
			|  |  |  | male_spurt(macro.cumVolume * (0.1 + Math.random() / 10)); | 
		
	
		
			
			|  |  |  | male_spurt(macro.cumVolume * (0.1 + Math.random() / 10), false); | 
		
	
		
			
			|  |  |  | self.maleSpurt = 0; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | if (self.femaleSpurt > 1) { | 
		
	
		
			
			|  |  |  | female_spurt(macro.femcumVolume * (0.1 + Math.random() / 10)); | 
		
	
		
			
			|  |  |  | female_spurt(macro.femcumVolume * (0.1 + Math.random() / 10), false); | 
		
	
		
			
			|  |  |  | self.femaleSpurt = 0; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | update(); | 
		
	
	
		
			
				|  |  | @@ -1360,7 +1360,7 @@ let macro = | 
		
	
		
			
			|  |  |  | amount += spurt; | 
		
	
		
			
			|  |  |  | this.cumStorage.amount -= spurt; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | male_orgasm(amount,5); | 
		
	
		
			
			|  |  |  | male_orgasm(amount, 5, false); | 
		
	
		
			
			|  |  |  | setTimeout(function() { self.maleOrgasm(self); }, 2000); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }, | 
		
	
	
		
			
				|  |  | @@ -1377,7 +1377,7 @@ let macro = | 
		
	
		
			
			|  |  |  | amount += spurt; | 
		
	
		
			
			|  |  |  | this.femcumStorage.amount -= spurt; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | female_orgasm(amount,5); | 
		
	
		
			
			|  |  |  | female_orgasm(amount, 5, false); | 
		
	
		
			
			|  |  |  | setTimeout(function() { self.femaleOrgasm(self); }, 2000); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }, | 
		
	
	
		
			
				|  |  | @@ -1822,7 +1822,7 @@ function do_digestion(owner, organ, container) { | 
		
	
		
			
			|  |  |  | let sound = getSound("insert",container.sum_property("mass")); | 
		
	
		
			
			|  |  |  | let line = organ.describeMove(container); | 
		
	
		
			
			|  |  |  | let summary = summarize(container.sum(),false); | 
		
	
		
			
			|  |  |  | update([line, summary, newline]); | 
		
	
		
			
			|  |  |  | update([line, summary, newline], false); | 
		
	
		
			
			|  |  |  | return; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -1849,9 +1849,9 @@ function do_digestion(owner, organ, container) { | 
		
	
		
			
			|  |  |  | soulLine = "Their " + (soulCount == 1 ? "soul is" : "souls are") + " trapped in your depths!"; | 
		
	
		
			
			|  |  |  | else | 
		
	
		
			
			|  |  |  | soulLine = "No souls, though..."; | 
		
	
		
			
			|  |  |  | update([sound,line,summary,soulLine,newline]); | 
		
	
		
			
			|  |  |  | update([sound,line,summary,soulLine,newline], false); | 
		
	
		
			
			|  |  |  | } else { | 
		
	
		
			
			|  |  |  | update([sound,line,summary,newline]); | 
		
	
		
			
			|  |  |  | update([sound,line,summary,newline], false); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -2420,7 +2420,7 @@ function breast_vore() | 
		
	
		
			
			|  |  |  | macro.arouse(10); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function breast_milk(vol) | 
		
	
		
			
			|  |  |  | function breast_milk(vol, active=true) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | if (vol == undefined) { | 
		
	
		
			
			|  |  |  | vol = Math.min(macro.lactationVolume, macro.milkStorage.amount); | 
		
	
	
		
			
				|  |  | @@ -2441,7 +2441,7 @@ function breast_milk(vol) | 
		
	
		
			
			|  |  |  | let sound = getSound("liquid",preyMass); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | add_victim_people("milk-flood",prey); | 
		
	
		
			
			|  |  |  | update([sound,line,linesummary,newline]); | 
		
	
		
			
			|  |  |  | update([sound,line,linesummary,newline], active); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | macro.arouse(20); | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
				|  |  | @@ -2631,7 +2631,7 @@ function ball_smother() | 
		
	
		
			
			|  |  |  | macro.arouse(10); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function male_spurt(vol) | 
		
	
		
			
			|  |  |  | function male_spurt(vol, active=true) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | let area = Math.pow(vol, 2/3); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -2647,14 +2647,14 @@ function male_spurt(vol) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | add_victim_people("cum-flood",prey); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | update([sound,line,linesummary,newline]); | 
		
	
		
			
			|  |  |  | update([sound,line,linesummary,newline], active); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (macro.maleMuskEnabled) { | 
		
	
		
			
			|  |  |  | male_spurt_musk(area * macro.baseMaleMuskArea); | 
		
	
		
			
			|  |  |  | male_spurt_musk(area * macro.baseMaleMuskArea, active); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function male_spurt_musk(area) { | 
		
	
		
			
			|  |  |  | function male_spurt_musk(area, active=true) { | 
		
	
		
			
			|  |  |  | let prey = getPrey(biome, area); | 
		
	
		
			
			|  |  |  | let line = describe("male-spurt-musk", prey, macro, verbose); | 
		
	
		
			
			|  |  |  | let linesummary = summarize(prey.sum(), true); | 
		
	
	
		
			
				|  |  | @@ -2673,7 +2673,7 @@ function male_spurt_musk(area) { | 
		
	
		
			
			|  |  |  | macro.arouse(5); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function male_orgasm(vol,times) | 
		
	
		
			
			|  |  |  | function male_orgasm(vol,times, active=true) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | let area = Math.pow(vol, 2/3); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -2689,14 +2689,14 @@ function male_orgasm(vol,times) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | add_victim_people("cum-flood",prey); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | update([sound,line,linesummary,newline]); | 
		
	
		
			
			|  |  |  | update([sound,line,linesummary,newline], active); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (macro.maleMuskEnabled) { | 
		
	
		
			
			|  |  |  | male_orgasm_musk(area * macro.baseMaleMuskArea); | 
		
	
		
			
			|  |  |  | male_orgasm_musk(area * macro.baseMaleMuskArea, active); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function male_orgasm_musk(area) { | 
		
	
		
			
			|  |  |  | function male_orgasm_musk(area, active=true) { | 
		
	
		
			
			|  |  |  | let prey = getPrey(biome, area); | 
		
	
		
			
			|  |  |  | let line = describe("male-orgasm-musk", prey, macro, verbose); | 
		
	
		
			
			|  |  |  | let linesummary = summarize(prey.sum(), true); | 
		
	
	
		
			
				|  |  | @@ -2710,12 +2710,12 @@ function male_orgasm_musk(area) { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | add_victim_people("male-orgasm-musk",prey); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | update([line,linesummary,newline]); | 
		
	
		
			
			|  |  |  | update([line,linesummary,newline], active); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | macro.arouse(5); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function female_spurt(vol) | 
		
	
		
			
			|  |  |  | function female_spurt(vol, active=true) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | let area = Math.pow(vol, 2/3); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -2731,14 +2731,14 @@ function female_spurt(vol) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | add_victim_people("femcum-flood",prey); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | update([sound,line,linesummary,newline]); | 
		
	
		
			
			|  |  |  | update([sound,line,linesummary,newline], active); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (macro.femaleMuskEnabled) { | 
		
	
		
			
			|  |  |  | female_spurt_musk(area * macro.baseFemaleMuskArea); | 
		
	
		
			
			|  |  |  | female_spurt_musk(area * macro.baseFemaleMuskArea, active); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function female_spurt_musk(area) { | 
		
	
		
			
			|  |  |  | function female_spurt_musk(area, active=true) { | 
		
	
		
			
			|  |  |  | let prey = getPrey(biome, area); | 
		
	
		
			
			|  |  |  | let line = describe("female-spurt-musk", prey, macro, verbose); | 
		
	
		
			
			|  |  |  | let linesummary = summarize(prey.sum(), true); | 
		
	
	
		
			
				|  |  | @@ -2752,12 +2752,12 @@ function female_spurt_musk(area) { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | add_victim_people("female-spurt-musk",prey); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | update([line,linesummary,newline]); | 
		
	
		
			
			|  |  |  | update([line,linesummary,newline], active); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | macro.arouse(5); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function female_orgasm(vol,times) | 
		
	
		
			
			|  |  |  | function female_orgasm(vol,times, active=true) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | let area = Math.pow(vol, 2/3); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -2773,14 +2773,14 @@ function female_orgasm(vol,times) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | add_victim_people("femcum-flood",prey); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | update([sound,line,linesummary,newline]); | 
		
	
		
			
			|  |  |  | update([sound,line,linesummary,newline], active); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (macro.femaleMuskEnabled) { | 
		
	
		
			
			|  |  |  | female_orgasm_musk(area * macro.baseFemaleMuskArea); | 
		
	
		
			
			|  |  |  | female_orgasm_musk(area * macro.baseFemaleMuskArea, active); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function female_orgasm_musk(area) { | 
		
	
		
			
			|  |  |  | function female_orgasm_musk(area, active=true) { | 
		
	
		
			
			|  |  |  | let prey = getPrey(biome, area); | 
		
	
		
			
			|  |  |  | let line = describe("female-orgasm-musk", prey, macro, verbose); | 
		
	
		
			
			|  |  |  | let linesummary = summarize(prey.sum(), true); | 
		
	
	
		
			
				|  |  | @@ -2794,7 +2794,7 @@ function female_orgasm_musk(area) { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | add_victim_people("female-orgasm-musk",prey); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | update([line,linesummary,newline]); | 
		
	
		
			
			|  |  |  | update([line,linesummary,newline], active); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | macro.arouse(5); | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
				|  |  | @@ -3005,7 +3005,7 @@ function soul_absorb_paw() | 
		
	
		
			
			|  |  |  | macro.arouse(25); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function belch(vol) | 
		
	
		
			
			|  |  |  | function belch(vol, active=true) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | if (vol == undefined) { | 
		
	
		
			
			|  |  |  | vol = Math.min(macro.gasStorage.amount,macro.gasStorage.limit/3); | 
		
	
	
		
			
				|  |  | @@ -3027,10 +3027,10 @@ function belch(vol) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | add_victim_people("gas-belch",prey); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | update([sound,line,linesummary,newline]); | 
		
	
		
			
			|  |  |  | update([sound,line,linesummary,newline], active); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function fart(vol) | 
		
	
		
			
			|  |  |  | function fart(vol, active=true) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | if (vol == undefined) { | 
		
	
		
			
			|  |  |  | vol = Math.min(macro.gasStorage.amount,macro.gasStorage.limit/2); | 
		
	
	
		
			
				|  |  | @@ -3052,7 +3052,7 @@ function fart(vol) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | add_victim_people("gas-fart",prey); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | update([sound,line,linesummary,newline]); | 
		
	
		
			
			|  |  |  | update([sound,line,linesummary,newline], active); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function wear_shoes() { | 
		
	
	
		
			
				|  |  | @@ -3313,7 +3313,7 @@ function bladder_vore() { | 
		
	
		
			
			|  |  |  | macro.arouse(20); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function scat(vol) { | 
		
	
		
			
			|  |  |  | function scat(vol, active=true) { | 
		
	
		
			
			|  |  |  | if (vol == undefined) { | 
		
	
		
			
			|  |  |  | vol = macro.scatStorage.amount; | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
				|  |  | @@ -3333,7 +3333,7 @@ function scat(vol) { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | macro.scatStorage.victims = new Container(); | 
		
	
		
			
			|  |  |  | add_victim_people("scat",prey); | 
		
	
		
			
			|  |  |  | update([sound,line,linesummary,newline]); | 
		
	
		
			
			|  |  |  | update([sound,line,linesummary,newline], active); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | macro.scatStorage.amount -= vol; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -3748,9 +3748,9 @@ function transformNumbers(line) | 
		
	
		
			
			|  |  |  | return line.toString().replace(/[0-9]+(\.[0-9]+)?(e\+[0-9]+)?/g, function(text) { return number(text, numbers); }); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function update(lines = []) | 
		
	
		
			
			|  |  |  | function update(lines = [], active=true) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | let log = document.getElementById("log"); | 
		
	
		
			
			|  |  |  | let log = active ? document.getElementById("log") : document.getElementById("react-log"); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | let oldHeight = log.scrollHeight; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -3766,7 +3766,7 @@ function update(lines = []) | 
		
	
		
			
			|  |  |  | let deltaHeight = log.scrollHeight - oldHeight; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (deltaHeight / window.innerHeight >= 0.2 && verbose && autoVerbose) { | 
		
	
		
			
			|  |  |  | update(["Switching to simple text!", newline]); | 
		
	
		
			
			|  |  |  | update(["Switching to simple text!", newline], false); | 
		
	
		
			
			|  |  |  | autoVerbose = false; | 
		
	
		
			
			|  |  |  | toggle_verbose(); | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
				|  |  | 
 |