| @@ -870,6 +870,44 @@ let macro = | |||||
| "stages": 3 | "stages": 3 | ||||
| }, | }, | ||||
| "pawVoreEnabled": false, | |||||
| "pawsVore": { | |||||
| "name" : "paws", | |||||
| "setup": function(owner) { | |||||
| this.owner = owner; | |||||
| for (let i = 0; i < this.stages; i++) | |||||
| this.contents.push(new Container()); | |||||
| owner.digest(owner, this, owner.pawDigestTime); | |||||
| }, | |||||
| "feed": function(prey) { | |||||
| this.feedFunc(prey,this,this.owner); | |||||
| }, | |||||
| "feedFunc": function(prey,self,owner) { | |||||
| this.contents[0] = this.contents[0].merge(prey); | |||||
| }, | |||||
| "describeDigestion" : function(container) { | |||||
| return describe("paws",container,this.owner,verbose); | |||||
| }, | |||||
| "fill": function(owner,container) { | |||||
| }, | |||||
| get description() { | |||||
| let prey = new Container(); | |||||
| this.contents.forEach(function(x) { | |||||
| prey = prey.merge(x); | |||||
| }); | |||||
| if (prey.count == 0) { | |||||
| return "Your " + this.owner.footOnlyDesc(true) + " don't contain any prey."; | |||||
| } else { | |||||
| return "Your " + this.owner.footOnlyDesc(true) + " have enveloped " + prey.describe(false); | |||||
| } | |||||
| }, | |||||
| "contents" : [], | |||||
| "stages": 3 | |||||
| }, | |||||
| // holding spots | // holding spots | ||||
| hasPouch: true, | hasPouch: true, | ||||
| @@ -972,6 +1010,7 @@ let macro = | |||||
| this.bladder.setup(this); | this.bladder.setup(this); | ||||
| this.souls.setup(this); | this.souls.setup(this); | ||||
| this.goo.setup(this); | this.goo.setup(this); | ||||
| this.pawsVore.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; | ||||
| @@ -1794,6 +1833,10 @@ function digest_goo() { | |||||
| digest_all(macro.goo); | digest_all(macro.goo); | ||||
| } | } | ||||
| function digest_paws() { | |||||
| digest_all(macro.paw); | |||||
| } | |||||
| function feed() | function feed() | ||||
| { | { | ||||
| @@ -3337,6 +3380,31 @@ function goo_balls_push() { | |||||
| return goo_move_prey(macro.goo, macro.balls, "goo-balls-push"); | return goo_move_prey(macro.goo, macro.balls, "goo-balls-push"); | ||||
| } | } | ||||
| function paw_vore() | |||||
| { | |||||
| let area = macro.pawArea; | |||||
| let prey = getPrey(biome, area, macro.sameSizeVore); | |||||
| let line = describe("paw-vore", prey, macro, verbose); | |||||
| let linesummary = summarize(prey.sum(), false); | |||||
| let people = get_living_prey(prey.sum()); | |||||
| let preyMass = prey.sum_property("mass"); | |||||
| let sound = getSound("insert",preyMass); | |||||
| macro.addGrowthPoints(preyMass); | |||||
| macro.pawsVore.feed(prey); | |||||
| add_victim_people("paw-vore",prey); | |||||
| update([sound,line,linesummary,newline]); | |||||
| macro.arouse(5); | |||||
| } | |||||
| function transformNumbers(line) | function transformNumbers(line) | ||||
| { | { | ||||
| return line.toString().replace(/[0-9]+(\.[0-9]+)?(e\+[0-9]+)?/g, function(text) { return number(text, numbers); }); | return line.toString().replace(/[0-9]+(\.[0-9]+)?(e\+[0-9]+)?/g, function(text) { return number(text, numbers); }); | ||||
| @@ -3714,6 +3782,8 @@ function startGame(e) { | |||||
| enable_button("digest_stomach"); | enable_button("digest_stomach"); | ||||
| } | } | ||||
| enable_panel("paws"); | |||||
| enable_button("stomp"); | enable_button("stomp"); | ||||
| if (macro.vomitEnabled) { | if (macro.vomitEnabled) { | ||||
| @@ -3977,6 +4047,16 @@ function startGame(e) { | |||||
| } | } | ||||
| } | } | ||||
| if (macro.pawVoreEnabled) { | |||||
| enable_button("paw_vore"); | |||||
| enable_victim("paw-vore","Absorbed into paws"); | |||||
| if (macro.pawDigestTime == 0) { | |||||
| enable_button("digest_paws"); | |||||
| } | |||||
| } | |||||
| document.getElementById("button-arousal").innerHTML = (macro.arousalEnabled ? "Arousal On" : "Arousal Off"); | document.getElementById("button-arousal").innerHTML = (macro.arousalEnabled ? "Arousal On" : "Arousal Off"); | ||||
| if (!macro.arousalEnabled) { | if (!macro.arousalEnabled) { | ||||
| document.getElementById("arousal").style.display = "none"; | document.getElementById("arousal").style.display = "none"; | ||||
| @@ -28,7 +28,7 @@ var actions = ["eat","chew","vomit","stomp","stomp-wedge","flex-toes","kick","an | |||||
| "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","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","stomp-goo","goo-digest","ass-goo","goo-stomach-pull","goo-stomach-push", | "sheath-toy","slit-toy","breast-toy","melt","solidify","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-bowels-pull","goo-bowels-push","goo-womb-pull","goo-womb-push","goo-balls-pull","goo-balls-push","paw-vore","paws"]; | |||||
| for (let i=0; i<actions.length; i++) { | for (let i=0; i<actions.length; i++) { | ||||
| rules[actions[i]] = []; | rules[actions[i]] = []; | ||||
| @@ -880,6 +880,14 @@ function defaultGooBallsPush(container, macro, verobse) { | |||||
| return "Your churning goo herds " + container.describe(false) + " into your musky balls."; | return "Your churning goo herds " + container.describe(false) + " into your musky balls."; | ||||
| } | } | ||||
| function defaultPawVore(container, macro, verbose) { | |||||
| return "Your " + macro.footOnlyDesc(true) + " smother over " + container.describe(false) + ", absorbing them into your soles!"; | |||||
| } | |||||
| function defaultPaws(container, macro, verbose) { | |||||
| return "Your " + macro.footOnlyDesc(true) + " fully absorb " + container.describe(false) + "."; | |||||
| } | |||||
| // EATING | // EATING | ||||
| rules["eat"].push({ | rules["eat"].push({ | ||||
| @@ -198,6 +198,7 @@ | |||||
| <div class="sidebar" id="action-panel"> | <div class="sidebar" id="action-panel"> | ||||
| <div class="action-part-container"> | <div class="action-part-container"> | ||||
| <button class="active action-part-button" id="action-part-body">Body</button> | <button class="active action-part-button" id="action-part-body">Body</button> | ||||
| <button class="action-part-button" id="action-part-paws">Paws</button> | |||||
| <button class="action-part-button" id="action-part-dick">Cock</button> | <button class="action-part-button" id="action-part-dick">Cock</button> | ||||
| <button class="action-part-button" id="action-part-vagina">Slit</button> | <button class="action-part-button" id="action-part-vagina">Slit</button> | ||||
| <button class="action-part-button" id="action-part-breasts">Breasts</button> | <button class="action-part-button" id="action-part-breasts">Breasts</button> | ||||
| @@ -215,14 +216,19 @@ | |||||
| <button class="action-button" id="button-action-digest_stomach">Digest</button> | <button class="action-button" id="button-action-digest_stomach">Digest</button> | ||||
| <button class="action-button" id="button-action-chew">Chew</button> | <button class="action-button" id="button-action-chew">Chew</button> | ||||
| <button class="action-button" id="button-action-vomit">Vomit</button> | <button class="action-button" id="button-action-vomit">Vomit</button> | ||||
| <button class="action-button" id="button-action-stomp">Stomp</button> | |||||
| <button class="action-button" id="button-action-flex_toes">Flex Toes</button> | |||||
| <button class="action-button" id="button-action-sit">Sit</button> | <button class="action-button" id="button-action-sit">Sit</button> | ||||
| <button class="action-button" id="button-action-anal_vore">Anal Vore</button> | <button class="action-button" id="button-action-anal_vore">Anal Vore</button> | ||||
| <button class="action-button" id="button-action-digest_anal">Digest Bowels</button> | <button class="action-button" id="button-action-digest_anal">Digest Bowels</button> | ||||
| <button class="action-button" id="button-action-grind">Grind</button> | <button class="action-button" id="button-action-grind">Grind</button> | ||||
| </div> | </div> | ||||
| <div class="action-tab" id="actions-paws"> | |||||
| <button class="action-button" id="button-action-stomp">Stomp</button> | |||||
| <button class="action-button" id="button-action-flex_toes">Flex Toes</button> | |||||
| <button class="action-button" id="button-action-paw_vore">Absorb</button> | |||||
| <button class="action-button" id="button-action-digest_paws">Digest</button> | |||||
| </div> | |||||
| <div class="action-tab" id="actions-tails"> | <div class="action-tab" id="actions-tails"> | ||||
| <button class="action-button" id="button-action-tail_slap">Tail Slap</button> | <button class="action-button" id="button-action-tail_slap">Tail Slap</button> | ||||
| <button class="action-button" id="button-action-tail_vore_only">Tail Vore</button> | <button class="action-button" id="button-action-tail_vore_only">Tail Vore</button> | ||||
| @@ -997,6 +1003,17 @@ | |||||
| </li> | </li> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| <div class="custom-category"> | |||||
| <input autocomplete="off" class="custom-header-checkbox" type="checkbox" id="pawVoreEnabled" name="pawVoreEnabled" /> | |||||
| <label class="custom-header" for="pawVoreEnabled">Paw Vore</label> | |||||
| <div class="reveal-if-active"> | |||||
| <li> | |||||
| <label for="pawDigestTime">Digestion time (0 for manual)</label> | |||||
| <input autocomplete="off" type="number" step="any" id="pawDigestTime" name="pawDigestTime" placeholder="15"> | |||||
| </li> | |||||
| </div> | |||||
| </div> | |||||
| </ul> | </ul> | ||||
| </form> | </form> | ||||
| </div> | </div> | ||||