diff --git a/game.js b/game.js index f88878e..afa465d 100644 --- a/game.js +++ b/game.js @@ -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"); + } } } diff --git a/stroll.html b/stroll.html index c19dbaf..8cb5623 100644 --- a/stroll.html +++ b/stroll.html @@ -212,12 +212,14 @@