From fb0c5e3e82b4f56fdbad634197a9ff4ccb5d3766 Mon Sep 17 00:00:00 2001 From: Fen Dweller Date: Fri, 28 Dec 2018 10:22:07 -0600 Subject: [PATCH] Added wing vore --- features.js | 19 ++++++++++++ game.js | 77 +++++++++++++++++++++++++++++++++++++++++++++++ recursive-desc.js | 49 +++++++++++++++++++++++++++--- stroll.html | 1 + 4 files changed, 142 insertions(+), 4 deletions(-) diff --git a/features.js b/features.js index 195c644..b4f99d5 100644 --- a/features.js +++ b/features.js @@ -974,6 +974,25 @@ options = [ "id": "wingDesc", "type": "text", "default": "feathery" + }, + { + "name": "Wing Vore", + "id": "wingVoreEnabled", + "type": "subcategory", + "entries": + [ + { + "name": "Digestion time", + "id": "wingDigestTime", + "type": "float", + "default": "15" + }, + { + "name": "Wing vore goes to stomach", + "id": "wingVoreToStomach", + "type": "checkbox" + } + ] } ] } diff --git a/game.js b/game.js index ed1a629..89336e8 100644 --- a/game.js +++ b/game.js @@ -909,6 +909,49 @@ let macro = "stages": 3 }, + "wings": { + "name" : "wings", + "setup": function(owner) { + this.owner = owner; + for (let i = 0; i < this.stages; i++) + this.contents.push(new Container()); + owner.digest(owner, this, owner.wingDigestTime); + }, + "feed": function(prey) { + this.feedFunc(prey,this,this.owner); + }, + "feedFunc": function(prey,self,owner) { + this.contents[0] = this.contents[0].merge(prey); + }, + "describeMove" : function(container) { + return describe("wings-to-stomach",container,this.owner,verbose); + }, + "describeDigestion" : function(container) { + return describe("wings",container,this.owner,verbose); + }, + "fill": function(owner,container) { + // no-op + }, + get description() { + let prey = new Container(); + this.contents.forEach(function(x) { + prey = prey.merge(x); + }); + + if (prey.count == 0) { + return "Your don't have anyone trapped in your wings."; + } else { + if (macro.brutality > 0) { + return "Your folded wings bulge as they squeeze in on " + prey.describe(false) + ", slowly breaking them down."; + } else { + return "Your wings bulge with " + prey.describe(false) + "."; + } + } + }, + "contents" : [], + "stages": 3 + }, + // holding spots "pouch": { @@ -1010,6 +1053,7 @@ let macro = this.goo.setup(this); this.pawsVore.setup(this); this.crop.setup(this); + this.wings.setup(this); this.cumStorage.owner = this; this.femcumStorage.owner = this; this.milkStorage.owner = this; @@ -1027,6 +1071,10 @@ let macro = this.tail.moves = this.stomach; } + if (this.wingVoreToStomach) { + this.wings.moves = this.stomach; + } + this.crop.moves = this.stomach; if (this.maleParts) @@ -1394,6 +1442,10 @@ let macro = result.push(this.souls.description); } + if (this.wingVoreEnabled) { + result.push(this.wings.description); + } + if (this.hasPouch) { result.push(this.pouch.description); } @@ -3668,6 +3720,26 @@ function wings_flap() update([sound,line,linesummary,newline]); } +function wings_vore() +{ + let area = macro.wingArea * 2; + let prey = getPrey(biome, area, false); + let line = describe("wings-vore", prey, macro, verbose); + let linesummary = summarize(prey.sum(), true); + + let people = get_living_prey(prey.sum()); + + let preyMass = prey.sum_property("mass"); + + let sound = getSound("insert", preyMass); + + macro.wings.feed(prey); + + add_victim_people("wings-vore", prey); + + update([sound,line,linesummary,newline]); +} + function cooldown_start(name) { let button = document.querySelector("#" + "button-action-" + name); @@ -4477,6 +4549,11 @@ function startGame(e) { enable_panel("misc"); enable_button("wings_flap"); enable_victim("wings-flap"); + + if (macro.wingVoreEnabled) { + enable_button("wings_vore"); + enable_victim("wings-vore"); + } } document.getElementById("button-arousal").innerHTML = (macro.arousalEnabled ? "Arousal On" : "Arousal Off"); diff --git a/recursive-desc.js b/recursive-desc.js index 3c88ac2..38ee47a 100644 --- a/recursive-desc.js +++ b/recursive-desc.js @@ -27,13 +27,13 @@ var action_keys = ["eat","chew","vomit","stomp","stomp-wedge","flex-toes","kick" "female-orgasm","grind","pouch-stuff","pouch-rub","pouch-eat","pouch-absorb","soul-vore","soul-absorb-paw", "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","wings","wings-to-stomach","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", "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-tail-pull","goo-tail-push","goo-paws-pull","goo-paws-push","paw-vore","paw-vore-toes","paws","crop-swallow","crop-transfer", -"breath-fire","breath-ice","breath-electric","breath-smoke","breath-radiation","breath-foul","drool","magic-shrink","magic-hypnotize","wings-flap"]; +"breath-fire","breath-ice","breath-electric","breath-smoke","breath-radiation","breath-foul","drool","magic-shrink","magic-hypnotize","wings-flap","wings-vore"]; -var victim_keys = ["victim-cum-flood", "victim-femcum-flood", "victim-stomped", "victim-flex-toes", "victim-eaten", "victim-ass-crush", "victim-ass-ground", "victim-humped", "victim-vomit", "victim-chew", "victim-drool", "victim-anal-vore", "victim-tail-slap", "victim-tail-vore", "victim-cock-slap", "victim-cock-vore", "victim-ball-smother", "victim-sheath-crush", "victim-sheath-absorb", "victim-cum-flood", "victim-male-spurt-musk", "victim-male-orgasm-musk", "victim-unbirth", "victim-femcum-flood", "victim-female-spurt-musk", "victim-female-orgasm-musk", "victim-breast-crush", "victim-cleavage-crush", "victim-cleavage-absorb", "victim-cleavage-drop", "victim-milk-flood", "victim-breast-vore", "victim-pouch-absorb", "victim-soul-digest", "victim-soul-paw", "victim-paw-stench", "victim-ass-stench", "victim-gas-belch", "victim-gas-fart", "victim-piss", "victim-bladder-vore", "victim-piss-stench", "victim-scat", "victim-scat-stench", "victim-goo", "victim-paw-vore", "victim-breath-fire", "victim-breath-ice", "victim-breath-electric", "victim-breath-smoke", "victim-breath-radiation", "victim-breath-foul", "victim-wings-flap"] +var victim_keys = ["victim-cum-flood", "victim-femcum-flood", "victim-stomped", "victim-flex-toes", "victim-eaten", "victim-ass-crush", "victim-ass-ground", "victim-humped", "victim-vomit", "victim-chew", "victim-drool", "victim-anal-vore", "victim-tail-slap", "victim-tail-vore", "victim-cock-slap", "victim-cock-vore", "victim-ball-smother", "victim-sheath-crush", "victim-sheath-absorb", "victim-cum-flood", "victim-male-spurt-musk", "victim-male-orgasm-musk", "victim-unbirth", "victim-femcum-flood", "victim-female-spurt-musk", "victim-female-orgasm-musk", "victim-breast-crush", "victim-cleavage-crush", "victim-cleavage-absorb", "victim-cleavage-drop", "victim-milk-flood", "victim-breast-vore", "victim-pouch-absorb", "victim-soul-digest", "victim-soul-paw", "victim-paw-stench", "victim-ass-stench", "victim-gas-belch", "victim-gas-fart", "victim-piss", "victim-bladder-vore", "victim-piss-stench", "victim-scat", "victim-scat-stench", "victim-goo", "victim-paw-vore", "victim-breath-fire", "victim-breath-ice", "victim-breath-electric", "victim-breath-smoke", "victim-breath-radiation", "victim-breath-foul", "victim-wings-flap", "victim-wings-vore"] for (let i=0; iEat From Pouch +