| @@ -2592,8 +2592,32 @@ function male_spurt(vol) | |||||
| macro.addGrowthPoints(preyMass); | macro.addGrowthPoints(preyMass); | ||||
| add_victim_people("cum-flood",prey); | add_victim_people("cum-flood",prey); | ||||
| update([sound,line,linesummary,newline]); | update([sound,line,linesummary,newline]); | ||||
| if (macro.maleMuskEnabled) { | |||||
| male_spurt_musk(area * macro.baseMaleMuskArea); | |||||
| } | |||||
| } | |||||
| function male_spurt_musk(area) { | |||||
| let prey = getPrey(biome, area); | |||||
| let line = describe("male-spurt-musk", prey, macro, verbose); | |||||
| let linesummary = summarize(prey.sum(), true); | |||||
| let people = get_living_prey(prey.sum()); | |||||
| if (get_living_prey(prey.sum()) == 0) | |||||
| return; | |||||
| let preyMass = prey.sum_property("mass"); | |||||
| macro.addGrowthPoints(preyMass); | |||||
| add_victim_people("emale-spurt-musk",prey); | |||||
| update([line,linesummary,newline]); | |||||
| macro.arouse(5); | |||||
| } | } | ||||
| function male_orgasm(vol,times) | function male_orgasm(vol,times) | ||||
| @@ -2614,6 +2638,31 @@ function male_orgasm(vol,times) | |||||
| add_victim_people("cum-flood",prey); | add_victim_people("cum-flood",prey); | ||||
| update([sound,line,linesummary,newline]); | update([sound,line,linesummary,newline]); | ||||
| if (macro.maleMuskEnabled) { | |||||
| male_orgasm_musk(area * macro.baseMaleMuskArea); | |||||
| } | |||||
| } | |||||
| function male_orgasm_musk(area) { | |||||
| let prey = getPrey(biome, area); | |||||
| let line = describe("male-orgasm-musk", prey, macro, verbose); | |||||
| let linesummary = summarize(prey.sum(), true); | |||||
| let people = get_living_prey(prey.sum()); | |||||
| if (get_living_prey(prey.sum()) == 0) | |||||
| return; | |||||
| let preyMass = prey.sum_property("mass"); | |||||
| macro.addGrowthPoints(preyMass); | |||||
| add_victim_people("male-orgasm-musk",prey); | |||||
| update([line,linesummary,newline]); | |||||
| macro.arouse(5); | |||||
| } | } | ||||
| function female_spurt(vol) | function female_spurt(vol) | ||||
| @@ -2633,8 +2682,32 @@ function female_spurt(vol) | |||||
| macro.addGrowthPoints(preyMass); | macro.addGrowthPoints(preyMass); | ||||
| add_victim_people("femcum-flood",prey); | add_victim_people("femcum-flood",prey); | ||||
| update([sound,line,linesummary,newline]); | update([sound,line,linesummary,newline]); | ||||
| if (macro.femaleMuskEnabled) { | |||||
| female_spurt_musk(area * macro.baseFemaleMuskArea); | |||||
| } | |||||
| } | |||||
| function female_spurt_musk(area) { | |||||
| let prey = getPrey(biome, area); | |||||
| let line = describe("female-spurt-musk", prey, macro, verbose); | |||||
| let linesummary = summarize(prey.sum(), true); | |||||
| let people = get_living_prey(prey.sum()); | |||||
| if (get_living_prey(prey.sum()) == 0) | |||||
| return; | |||||
| let preyMass = prey.sum_property("mass"); | |||||
| macro.addGrowthPoints(preyMass); | |||||
| add_victim_people("female-spurt-musk",prey); | |||||
| update([line,linesummary,newline]); | |||||
| macro.arouse(5); | |||||
| } | } | ||||
| function female_orgasm(vol,times) | function female_orgasm(vol,times) | ||||
| @@ -2654,8 +2727,32 @@ function female_orgasm(vol,times) | |||||
| macro.addGrowthPoints(preyMass); | macro.addGrowthPoints(preyMass); | ||||
| add_victim_people("femcum-flood",prey); | add_victim_people("femcum-flood",prey); | ||||
| update([sound,line,linesummary,newline]); | update([sound,line,linesummary,newline]); | ||||
| if (macro.femaleMuskEnabled) { | |||||
| female_orgasm_musk(area * macro.baseFemaleMuskArea); | |||||
| } | |||||
| } | |||||
| function female_orgasm_musk(area) { | |||||
| let prey = getPrey(biome, area); | |||||
| let line = describe("female-orgasm-musk", prey, macro, verbose); | |||||
| let linesummary = summarize(prey.sum(), true); | |||||
| let people = get_living_prey(prey.sum()); | |||||
| if (get_living_prey(prey.sum()) == 0) | |||||
| return; | |||||
| let preyMass = prey.sum_property("mass"); | |||||
| macro.addGrowthPoints(preyMass); | |||||
| add_victim_people("female-orgasm-musk",prey); | |||||
| update([line,linesummary,newline]); | |||||
| macro.arouse(5); | |||||
| } | } | ||||
| function tail_slap() | function tail_slap() | ||||
| @@ -3977,6 +4074,11 @@ function startGame(e) { | |||||
| if (macro.arousalEnabled) { | if (macro.arousalEnabled) { | ||||
| enable_victim("cum-flood","Flooded by cum"); | enable_victim("cum-flood","Flooded by cum"); | ||||
| if (macro.maleMuskEnabled) { | |||||
| enable_victim("male-spurt-musk","Inundated in masculine precum musk"); | |||||
| enable_victim("male-orgasm-musk","Inundated in masculine cum musk"); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| @@ -3994,6 +4096,11 @@ function startGame(e) { | |||||
| if (macro.arousalEnabled) { | if (macro.arousalEnabled) { | ||||
| enable_victim("femcum-flood","Flooded by femcum"); | enable_victim("femcum-flood","Flooded by femcum"); | ||||
| if (macro.femaleMuskEnabled) { | |||||
| enable_victim("female-spurt-musk","Inundated in feminine precum musk"); | |||||
| enable_victim("female-orgasm-musk","Inundated in feminine cum musk"); | |||||
| } | |||||
| } | } | ||||
| if (macro.unbirthDigestTime == 0) { | if (macro.unbirthDigestTime == 0) { | ||||
| @@ -25,7 +25,8 @@ var actions = ["eat","chew","vomit","stomp","stomp-wedge","flex-toes","kick","an | |||||
| "breast-vore","breast-milk","unbirth","sheath-stuff","sheath-clench","sheath-crush", | "breast-vore","breast-milk","unbirth","sheath-stuff","sheath-clench","sheath-crush", | ||||
| "sheath-absorb","cock-vore","cockslap","ball-smother","male-spurt","male-orgasm","female-spurt", | "sheath-absorb","cock-vore","cockslap","ball-smother","male-spurt","male-orgasm","female-spurt", | ||||
| "female-orgasm","grind","pouch-stuff","pouch-rub","pouch-eat","pouch-absorb","soul-vore","soul-absorb-paw", | "female-orgasm","grind","pouch-stuff","pouch-rub","pouch-eat","pouch-absorb","soul-vore","soul-absorb-paw", | ||||
| "paw-stench","ass-stench","piss-stench","scat-stench","belch","fart","stomach","tail","tail-to-stomach","womb","balls","bowels","bowels-to-stomach","breasts","bladder", | |||||
| "paw-stench","ass-stench","piss-stench","scat-stench","male-orgasm-musk","female-orgasm-musk","male-spurt-musk","female-spurt-musk", | |||||
| "belch","fart","stomach","tail","tail-to-stomach","womb","balls","bowels","bowels-to-stomach","breasts","bladder", | |||||
| "soul-digest","wear-shoe","remove-shoe","wear-sock","remove-sock","stuff-shoe","dump-shoe","stuff-sock","dump-sock","piss","bladder-vore","scat", | "soul-digest","wear-shoe","remove-shoe","wear-sock","remove-sock","stuff-shoe","dump-shoe","stuff-sock","dump-sock","piss","bladder-vore","scat", | ||||
| "sheath-toy","slit-toy","breast-toy","melt","solidify","flood","stomp-goo","goo-digest","ass-goo","goo-stomach-pull","goo-stomach-push", | "sheath-toy","slit-toy","breast-toy","melt","solidify","flood","stomp-goo","goo-digest","ass-goo","goo-stomach-pull","goo-stomach-push", | ||||
| "goo-bowels-pull","goo-bowels-push","goo-womb-pull","goo-womb-push","goo-balls-pull","goo-balls-push","goo-breasts-pull","goo-breasts-push", | "goo-bowels-pull","goo-bowels-push","goo-womb-pull","goo-womb-push","goo-balls-pull","goo-balls-push","goo-breasts-pull","goo-breasts-push", | ||||
| @@ -568,6 +569,46 @@ function defaultScatStench(container, macro, verbose) { | |||||
| return "Your stinky scat overwhelms " + (sum > 1 ? sum + " people" : "a person") + " with your scent!"; | return "Your stinky scat overwhelms " + (sum > 1 ? sum + " people" : "a person") + " with your scent!"; | ||||
| } | } | ||||
| function defaultMaleSpurtMusk(container, macro, verbose) { | |||||
| let sum = get_living_prey(container.sum()); | |||||
| if (isSadistic(macro)) | |||||
| return "Waves of corrosive musk waft from your precum, the bitter cloud liquefying the flesh of " + (sum > 1 ? numberRough(sum,"of") + " people" : "a person") + " as it dissolves " + container.describe(false) + "."; | |||||
| if (isFatal(macro)) | |||||
| return "Powerful musk wafts from your precum, choking the life from " + (sum > 1 ? sum + " people." : "a person."); | |||||
| else | |||||
| return "Your musky precum overwhelms " + (sum > 1 ? sum + " people" : "a person") + " with your scent!"; | |||||
| } | |||||
| function defaultFemaleSpurtMusk(container, macro, verbose) { | |||||
| let sum = get_living_prey(container.sum()); | |||||
| if (isSadistic(macro)) | |||||
| return "Waves of corrosive musk waft from your precum, the bitter cloud liquefying the flesh of " + (sum > 1 ? numberRough(sum,"of") + " people" : "a person") + " as it dissolves " + container.describe(false) + "."; | |||||
| if (isFatal(macro)) | |||||
| return "Powerful musk wafts from your precum, choking the life from " + (sum > 1 ? sum + " people." : "a person."); | |||||
| else | |||||
| return "Your musky precum overwhelms " + (sum > 1 ? sum + " people" : "a person") + " with your scent!"; | |||||
| } | |||||
| function defaultMaleOrgasmMusk(container, macro, verbose) { | |||||
| let sum = get_living_prey(container.sum()); | |||||
| if (isSadistic(macro)) | |||||
| return "Waves of corrosive musk waft from your cum, the bitter cloud liquefying the flesh of " + (sum > 1 ? numberRough(sum,"of") + " people" : "a person") + " as it dissolves " + container.describe(false) + "."; | |||||
| if (isFatal(macro)) | |||||
| return "Powerful musk wafts from your cum, choking the life from " + (sum > 1 ? sum + " people." : "a person."); | |||||
| else | |||||
| return "Your musky cum overwhelms " + (sum > 1 ? sum + " people" : "a person") + " with your scent!"; | |||||
| } | |||||
| function defaultFemaleOrgasmMusk(container, macro, verbose) { | |||||
| let sum = get_living_prey(container.sum()); | |||||
| if (isSadistic(macro)) | |||||
| return "Waves of corrosive musk waft from your cum, the bitter cloud liquefying the flesh of " + (sum > 1 ? numberRough(sum,"of") + " people" : "a person") + " as it dissolves " + container.describe(false) + "."; | |||||
| if (isFatal(macro)) | |||||
| return "Powerful musk wafts from your cum, choking the life from " + (sum > 1 ? sum + " people." : "a person."); | |||||
| else | |||||
| return "Your musky cum overwhelms " + (sum > 1 ? sum + " people" : "a person") + " with your scent!"; | |||||
| } | |||||
| function defaultBelch(container, macro, verbose) { | function defaultBelch(container, macro, verbose) { | ||||
| let sum = get_living_prey(container.sum()); | let sum = get_living_prey(container.sum()); | ||||
| if (container.count == 0) | if (container.count == 0) | ||||
| @@ -717,6 +717,20 @@ | |||||
| <input autocomplete="off" type="checkbox" id="cumScaleWithSize" name="cumScaleWithSize" /> | <input autocomplete="off" type="checkbox" id="cumScaleWithSize" name="cumScaleWithSize" /> | ||||
| <label class="has-tooltip" for="cumScaleWithSize" title="If checked, produces more cum from the same prey as you get larger">Scale cum with size</label> | <label class="has-tooltip" for="cumScaleWithSize" title="If checked, produces more cum from the same prey as you get larger">Scale cum with size</label> | ||||
| </li> | </li> | ||||
| <li> | |||||
| <div class="custom-category-sub"> | |||||
| <ul class="flex-outer-sub"> | |||||
| <input autocomplete="off" class="custom-header-checkbox" type="checkbox" id="maleMuskEnabled" name="maleMuskEnabled" /> | |||||
| <label class="custom-header" for="maleMuskEnabled">Musk</label> | |||||
| <div class="reveal-if-active"> | |||||
| <li> | |||||
| <label for="baseMaleMuskArea">Musk area</label> | |||||
| <input autocomplete="off" type="number" step="any" id="baseMaleMuskArea" name="baseMaleMuskArea" placeholder="0.5" /> | |||||
| </li> | |||||
| </div> | |||||
| </ul> | |||||
| </div> | |||||
| </li> | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| @@ -830,6 +844,20 @@ | |||||
| <input autocomplete="off" type="checkbox" id="femcumScaleWithSize" name="femcumScaleWithSize" /> | <input autocomplete="off" type="checkbox" id="femcumScaleWithSize" name="femcumScaleWithSize" /> | ||||
| <label class="has-tooltip" for="femcumScaleWithSize" title="If checked, produces more femcum from the same prey as you get larger">Scale femcum with size</label> | <label class="has-tooltip" for="femcumScaleWithSize" title="If checked, produces more femcum from the same prey as you get larger">Scale femcum with size</label> | ||||
| </li> | </li> | ||||
| <li> | |||||
| <div class="custom-category-sub"> | |||||
| <ul class="flex-outer-sub"> | |||||
| <input autocomplete="off" class="custom-header-checkbox" type="checkbox" id="femaleMuskEnabled" name="femaleMuskEnabled" /> | |||||
| <label class="custom-header" for="femaleMuskEnabled">Musk</label> | |||||
| <div class="reveal-if-active"> | |||||
| <li> | |||||
| <label for="baseFemaleMuskArea">Musk area</label> | |||||
| <input autocomplete="off" type="number" step="any" id="baseFemaleMuskArea" name="baseFemaleMuskArea" placeholder="0.5" /> | |||||
| </li> | |||||
| </div> | |||||
| </ul> | |||||
| </div> | |||||
| </li> | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| @@ -841,22 +869,18 @@ | |||||
| <li> | <li> | ||||
| <label for="basePawStenchArea">Paw stench area</label> | <label for="basePawStenchArea">Paw stench area</label> | ||||
| <input autocomplete="off" type="number" step="any" id="basePawStenchArea" name="basePawStenchArea" placeholder="1" /> | <input autocomplete="off" type="number" step="any" id="basePawStenchArea" name="basePawStenchArea" placeholder="1" /> | ||||
| <div class="preview" id="basePawStenchAreaPreview"></div> | |||||
| </li> | </li> | ||||
| <li> | <li> | ||||
| <label for="baseAssStenchArea">Ass stench area</label> | <label for="baseAssStenchArea">Ass stench area</label> | ||||
| <input autocomplete="off" type="number" step="any" id="baseAssStenchArea" name="baseAssStenchArea" placeholder="2" /> | <input autocomplete="off" type="number" step="any" id="baseAssStenchArea" name="baseAssStenchArea" placeholder="2" /> | ||||
| <div class="preview" id="baseAssStenchAreaPreview"></div> | |||||
| </li> | </li> | ||||
| <li> | <li> | ||||
| <label for="basePissStenchArea">Piss stench area</label> | <label for="basePissStenchArea">Piss stench area</label> | ||||
| <input autocomplete="off" type="number" step="any" id="basePissStenchArea" name="basePissStenchArea" placeholder="0.75" /> | <input autocomplete="off" type="number" step="any" id="basePissStenchArea" name="basePissStenchArea" placeholder="0.75" /> | ||||
| <div class="preview" id="basePissStenchAreaPreview"></div> | |||||
| </li> | </li> | ||||
| <li> | <li> | ||||
| <label for="baseScatStenchArea">Scat stench area</label> | <label for="baseScatStenchArea">Scat stench area</label> | ||||
| <input autocomplete="off" type="number" step="any" id="baseScatStenchArea" name="baseScatStenchArea" placeholder="1.5" /> | <input autocomplete="off" type="number" step="any" id="baseScatStenchArea" name="baseScatStenchArea" placeholder="1.5" /> | ||||
| <div class="preview" id="baseScatStenchAreaPreview"></div> | |||||
| </li> | </li> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||