|
|
|
@@ -389,7 +389,11 @@ let macro = |
|
|
|
}, |
|
|
|
|
|
|
|
"digest": function(owner, organ, time=15) { |
|
|
|
setTimeout(function() { owner.digest(owner, organ, time); }, time * 1000 / organ.stages); |
|
|
|
|
|
|
|
// ignore if using manual digestion |
|
|
|
if (time != 0) { |
|
|
|
setTimeout(function() { owner.digest(owner, organ, time); }, time * 1000 / organ.stages); |
|
|
|
} |
|
|
|
|
|
|
|
let count = Math.min(organ.contents.length, organ.maxDigest); |
|
|
|
|
|
|
|
@@ -399,42 +403,7 @@ let macro = |
|
|
|
if (container.count == 0) |
|
|
|
return; |
|
|
|
|
|
|
|
if (organ.moves != undefined) { |
|
|
|
organ.moves.feed(container); |
|
|
|
let sound = getSound("insert",container.sum_property("mass")); |
|
|
|
let line = organ.describeMove(container); |
|
|
|
let summary = summarize(container.sum(),false); |
|
|
|
update([line, summary, newline]); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
let digested = container.sum(); |
|
|
|
for (let key in victims[organ.name]) { |
|
|
|
if (victims[organ.name].hasOwnProperty(key) && digested.hasOwnProperty(key) ) { |
|
|
|
victims["digested"][key] += digested[key]; |
|
|
|
victims[organ.name][key] -= digested[key]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
let sound = getSound("digest",container.sum_property("mass")); |
|
|
|
|
|
|
|
let vol = organ.fill(this,container); |
|
|
|
let line = organ.describeDigestion(container, vol); |
|
|
|
let lethal = macro.brutality != 0 && (!macro.soulVoreEnabled || organ.name === "souls"); |
|
|
|
let summary = summarize(container.sum(),lethal); |
|
|
|
|
|
|
|
if (macro.soulVoreEnabled && organ.name != "souls") { |
|
|
|
owner.souls.feed(container); |
|
|
|
let soulCount = container.sum()["Person"]; |
|
|
|
let soulLine = ""; |
|
|
|
if (soulCount > 0) |
|
|
|
soulLine = "Their " + (soulCount == 1 ? "soul is" : "souls are") + " trapped in your depths!"; |
|
|
|
else |
|
|
|
soulLine = "No souls, though..."; |
|
|
|
update([sound,line,summary,soulLine,newline]); |
|
|
|
} else { |
|
|
|
update([sound,line,summary,newline]); |
|
|
|
} |
|
|
|
do_digestion(owner, organ, container); |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
@@ -1676,6 +1645,93 @@ function getPrey(region, area, sameSize = false) |
|
|
|
return prey; |
|
|
|
} |
|
|
|
|
|
|
|
function digest_all(organ) { |
|
|
|
let prey = new Container(); |
|
|
|
|
|
|
|
for (let i = 0; i < organ.stages; i++) { |
|
|
|
prey = prey.merge(organ.contents[i]); |
|
|
|
organ.contents[i] = new Container(); |
|
|
|
} |
|
|
|
|
|
|
|
if (prey.count == 0) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
do_digestion(organ.owner, organ, prey); |
|
|
|
} |
|
|
|
|
|
|
|
function do_digestion(owner, organ, container) { |
|
|
|
if (organ.moves != undefined) { |
|
|
|
organ.moves.feed(container); |
|
|
|
let sound = getSound("insert",container.sum_property("mass")); |
|
|
|
let line = organ.describeMove(container); |
|
|
|
let summary = summarize(container.sum(),false); |
|
|
|
update([line, summary, newline]); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
let digested = container.sum(); |
|
|
|
for (let key in victims[organ.name]) { |
|
|
|
if (victims[organ.name].hasOwnProperty(key) && digested.hasOwnProperty(key) ) { |
|
|
|
victims["digested"][key] += digested[key]; |
|
|
|
victims[organ.name][key] -= digested[key]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
let sound = getSound("digest",container.sum_property("mass")); |
|
|
|
|
|
|
|
let vol = organ.fill(owner, container); |
|
|
|
let line = organ.describeDigestion(container, vol); |
|
|
|
let lethal = macro.brutality != 0 && (!macro.soulVoreEnabled || organ.name === "souls"); |
|
|
|
let summary = summarize(container.sum(),lethal); |
|
|
|
|
|
|
|
if (macro.soulVoreEnabled && organ.name != "souls") { |
|
|
|
owner.souls.feed(container); |
|
|
|
let soulCount = container.sum()["Person"]; |
|
|
|
let soulLine = ""; |
|
|
|
if (soulCount > 0) |
|
|
|
soulLine = "Their " + (soulCount == 1 ? "soul is" : "souls are") + " trapped in your depths!"; |
|
|
|
else |
|
|
|
soulLine = "No souls, though..."; |
|
|
|
update([sound,line,summary,soulLine,newline]); |
|
|
|
} else { |
|
|
|
update([sound,line,summary,newline]); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
function digest_stomach() { |
|
|
|
digest_all(macro.stomach); |
|
|
|
} |
|
|
|
|
|
|
|
function digest_anal() { |
|
|
|
digest_all(macro.bowels); |
|
|
|
} |
|
|
|
|
|
|
|
function digest_cock() { |
|
|
|
digest_all(macro.balls); |
|
|
|
} |
|
|
|
|
|
|
|
function digest_breast() { |
|
|
|
digest_all(macro.breasts); |
|
|
|
} |
|
|
|
|
|
|
|
function digest_unbirth() { |
|
|
|
digest_all(macro.womb); |
|
|
|
} |
|
|
|
|
|
|
|
function digest_soul() { |
|
|
|
digest_all(macro.souls); |
|
|
|
} |
|
|
|
|
|
|
|
function digest_bladder() { |
|
|
|
digest_all(macro.bladder); |
|
|
|
} |
|
|
|
|
|
|
|
function digest_goo() { |
|
|
|
digest_all(macro.goo); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function feed() |
|
|
|
{ |
|
|
|
let area = macro.handArea; |
|
|
|
@@ -3538,6 +3594,11 @@ function startGame(e) { |
|
|
|
|
|
|
|
enable_panel("body"); |
|
|
|
enable_button("feed"); |
|
|
|
|
|
|
|
if (macro.oralDigestTime == 0) { |
|
|
|
enable_button("digest_stomach"); |
|
|
|
} |
|
|
|
|
|
|
|
enable_button("stomp"); |
|
|
|
|
|
|
|
if (macro.vomitEnabled) { |
|
|
|
@@ -3569,6 +3630,10 @@ function startGame(e) { |
|
|
|
if (macro.analVore) { |
|
|
|
enable_button("anal_vore"); |
|
|
|
enable_victim("anal-vore","Anal vore"); |
|
|
|
|
|
|
|
if (macro.analDigestTime == 0) { |
|
|
|
enable_button("digest_anal"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (macro.tailCount > 0) { |
|
|
|
@@ -3605,6 +3670,10 @@ function startGame(e) { |
|
|
|
enable_growth_part("dick"); |
|
|
|
enable_growth_part("balls"); |
|
|
|
|
|
|
|
if (macro.cockDigestTime == 0) { |
|
|
|
enable_button("digest_cock"); |
|
|
|
} |
|
|
|
|
|
|
|
if (macro.hasSheath) { |
|
|
|
enable_victim("sheath-crush","Crushed in sheath"); |
|
|
|
enable_victim("sheath-absorb","Absorbed by sheath"); |
|
|
|
@@ -3635,6 +3704,10 @@ function startGame(e) { |
|
|
|
if (macro.arousalEnabled) { |
|
|
|
enable_victim("femcum-flood","Flooded by femcum"); |
|
|
|
} |
|
|
|
|
|
|
|
if (macro.unbirthDigestTime == 0) { |
|
|
|
enable_button("digest_unbirth"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (macro.hasBreasts) { |
|
|
|
@@ -3666,6 +3739,10 @@ function startGame(e) { |
|
|
|
enable_victim("breast-vore","Stuffed into breasts"); |
|
|
|
|
|
|
|
enable_button("breast_vore"); |
|
|
|
|
|
|
|
if (macro.breastDigestTime == 0) { |
|
|
|
enable_button("digest_breast"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@@ -3691,6 +3768,10 @@ function startGame(e) { |
|
|
|
enable_button("soul_vore"); |
|
|
|
enable_button("soul_absorb_paw"); |
|
|
|
|
|
|
|
if (macro.soulDigestTime == 0) { |
|
|
|
enable_button("digest_soul"); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (macro.stenchEnabled) { |
|
|
|
@@ -3737,6 +3818,10 @@ function startGame(e) { |
|
|
|
enable_button("bladder_vore"); |
|
|
|
|
|
|
|
enable_victim("bladder_vore","Dissolved into piss"); |
|
|
|
|
|
|
|
if (macro.bladderDigestTime == 0) { |
|
|
|
enable_button("digest_bladder"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@@ -3758,6 +3843,10 @@ function startGame(e) { |
|
|
|
|
|
|
|
if (macro.gooDigestion) { |
|
|
|
enable_victim("goo","Absorbed into the goo"); |
|
|
|
|
|
|
|
if (macro.gooDigestTime == 0) { |
|
|
|
enable_button("digest_goo"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|