diff --git a/vore.js b/vore.js index ce577c5..32bf187 100644 --- a/vore.js +++ b/vore.js @@ -7,7 +7,8 @@ function Creature(name = "Creature") { this.health = 100; this.maxHealth = 100; this.mass = 80; - this.stomach = new Stomach(); + this.bowels = new Bowels(); + this.stomach = new Stomach(this.bowels); } function Player(name = "Player") { @@ -37,22 +38,9 @@ function Anthro() { // vore stuff here -function Container(name = "stomach") { +function Container(name) { this.name = name; this.contents = []; - this.digested = []; - this.digest = function(time) { - - }; - - this.feed = function(prey) { - this.contents.push(prey); - }; -} - -function Stomach() { - Container.call(this, "stomach"); - // health/sec this.damageRate = 15*100/86400; @@ -72,21 +60,61 @@ function Stomach() { let digested = Math.min(prey.mass, this.digestRate * time); prey.mass -= digested; + + this.fill(digested); } if (prey.mass <= 0) { - lines.push("Your churning guts have reduced a " + prey.description() + " to meaty chyme."); - this.digested.push(prey); + lines.push(this.describeDigest(prey)); + this.finish(prey); } }, this); - this.contents.filter(function(prey) { + this.contents = this.contents.filter(function(prey) { return prey.mass > 0; }); return lines; }; + this.feed = function(prey) { + this.contents.push(prey); + }; +} + +function Stomach(bowels) { + Container.call(this, "stomach"); + + this.describeDigest = function(prey) { + return "Your churning guts have reduced a " + prey.description() + " to meaty chyme."; + }; + + this.fill = function(amount) { + bowels.add(amount); + }; + + this.finish = function(prey) { + bowels.finish(prey); + }; +} + +function WasteContainer(name) { + this.name = name; + + this.fullness = 0; + + this.contents = []; + + this.add = function(amount) { + this.fullness += amount; + }; + + this.finish = function(prey) { + this.contents.push(prey); + }; +} +function Bowels() { + WasteContainer.call(this, "Bowels"); }