Bladeren bron

Redid bowels/butt so that there is just bowels. Fixed resulting crazy bugs. Wolves can belch

tags/v0.2.8
Fen Dweller 7 jaren geleden
bovenliggende
commit
86d5e6a831
5 gewijzigde bestanden met toevoegingen van 63 en 62 verwijderingen
  1. +1
    -1
      combat.js
  2. +9
    -9
      feast.js
  3. +21
    -1
      forest.js
  4. +2
    -2
      objects.js
  5. +30
    -49
      vore.js

+ 1
- 1
combat.js Bestand weergeven

@@ -206,7 +206,7 @@ function grappleAnalVore(attacker) {
if (success) {
attacker.changeStamina(-10);
defender.changeStamina(-25);
attacker.butt.feed(defender);
attacker.bowels.feed(defender);
defender.flags.grappled = false;
attacker.cash += defender.cash;
changeMode("explore");


+ 9
- 9
feast.js Bestand weergeven

@@ -257,9 +257,9 @@ function updateDisplay() {
document.getElementById("stat-str").innerHTML = "Str: " + player.str;
document.getElementById("stat-dex").innerHTML = "Dex: " + player.dex;
document.getElementById("stat-con").innerHTML = "Con: " + player.con;
document.getElementById("stat-fullness").innerHTML = "Fullness: " + round(player.fullness(),0);
document.getElementById("stat-fullness").innerHTML = "Stomach: " + round(player.stomach.fullness(),0) + "/" + player.stomach.capacity;
if (player.prefs.scat) {
document.getElementById("stat-bowels").innerHTML = "Bowels: " + round(player.bowels.fullness,0);
document.getElementById("stat-bowels").innerHTML = "Bowels: " + round(player.bowels.fullness(),0) + "/" + player.bowels.capacity;
} else {
document.getElementById("stat-bowels").innerHTML = "";
}
@@ -279,7 +279,7 @@ function advanceTime(amount) {
player.restoreHealth(amount);
player.restoreStamina(amount);
update(player.stomach.digest(amount));
update(player.butt.digest(amount));
update(player.bowels.digest(amount));
update(player.balls.digest(amount));
update(player.womb.digest(amount));
update(player.breasts.digest(amount));
@@ -522,7 +522,7 @@ function respawn(respawnRoom) {
moveTo(respawnRoom,"You drift through space and time...");
player.clear();
player.stomach.contents = [];
player.butt.contents = [];
player.bowels.contents = [];
player.bowels.digested = [];
player.bowels.fullness = 0;
advanceTime(Math.floor(86400 / 2 * (Math.random() * 0.5 - 0.25 + 1)));
@@ -726,10 +726,10 @@ function status() {
lines.push(newline);
}

if (player.butt.contents.length > 0) {
if (player.bowels.contents.length > 0) {
lines.push("Your bowels churn with prey.");

player.butt.contents.map(function(prey) {
player.bowels.contents.map(function(prey) {
let state = "";
let healthRatio = prey.health / prey.maxHealth;

@@ -773,7 +773,7 @@ function status() {
});
lines.push(newline);
} else {
if (player.balls.fullness > 0) {
if (player.balls.waste > 0) {
lines.push("Your balls are heavy with cum.");
lines.push(newline);
}
@@ -803,7 +803,7 @@ function status() {
});
lines.push(newline);
} else {
if (player.womb.fullness > 0) {
if (player.womb.waste > 0) {
lines.push("Your slit drips, holding back a tide of femcum.");
lines.push(newline);
}
@@ -833,7 +833,7 @@ function status() {
});
lines.push(newline);
} else {
if (player.breasts.fullness > 0) {
if (player.breasts.waste > 0) {
lines.push("Your breasts slosh with milk.");
lines.push(newline);
}


+ 21
- 1
forest.js Bestand weergeven

@@ -7,7 +7,7 @@ function ForestExplore() {
let outcome = Math.random();
advanceTime(60*30 * (Math.random() * 0.2 + 0.9));

if (outcome < 0.25) {
if (outcome < 0.35) {
currentRoom.flags.exit = true;
update(["You find a way back!"]);
} else if (outcome < 0.5) {
@@ -59,6 +59,7 @@ function Wolf() {
this.digests = [];

this.digests.push(wolfDigest(this));
this.digests.push(wolfBelch(this));

this.flags.stage = "combat";

@@ -106,6 +107,7 @@ function AlphaWolf() {
this.digests = [];

this.digests.push(wolfDigest(this));
this.digests.push(wolfBelch(this));

this.flags.stage = "combat";

@@ -272,3 +274,21 @@ function wolfDigest(attacker) {
gameover: function() { return "Digested by " + attacker.description("a"); }
};
}

function wolfBelch(attacker) {
return {
digest: function(defender){
defender.stamina -= 50;
let damage = attack(attacker, defender, attacker.str * 2);
return [attacker.description("The") + " lets out a crass <i>BELCH</i>, draining air from its snarling gut and squeezing you even tighter than before."];
},
requirements: [
function(attacker, defender) {
return attacker.flags.stage == "oral";
}
],
priority: 1,
weight: function(attacker, defender) { return 1; },
gameover: function() { return "Reduced to a belch by " + attacker.description("a"); }
};
}

+ 2
- 2
objects.js Bestand weergeven

@@ -30,11 +30,11 @@ function Toilet() {

lines.push("You sit down on the toilet.");

if (player.bowels.fullness == 0) {
if (player.bowels.waste == 0) {
lines.push("But nothing happens.");
} else {
lines.push("You grunt and clench, squeezing out the remains of your former prey.");
player.bowels.fullness = 0;
player.bowels.waste = 0;
}

if (player.bowels.digested.length > 0) {


+ 30
- 49
vore.js Bestand weergeven

@@ -136,10 +136,6 @@ function Creature(name = "Creature", str = 10, dex = 10, con = 10) {
function Player(name = "Player") {
Creature.call(this, name, 15, 15, 15);

this.fullness = function() {
return this.stomach.fullness() + this.butt.fullness();
};

this.attacks.push(punchAttack(this));
this.attacks.push(flankAttack(this));

@@ -166,9 +162,9 @@ function Player(name = "Player") {

this.cash = 100;

this.bowels = new Bowels();
this.stomach = new Stomach(this, this.bowels);
this.butt = new Butt(this, this.bowels, this.stomach);
this.stomach = new Stomach(this);
this.bowels = new Bowels(this, this.stomach);
this.stomach.bowels = this.bowels;
this.balls = new Balls(this);
this.womb = new Womb(this);
this.breasts = new Breasts(this);
@@ -292,11 +288,17 @@ function Micro() {
function Container(owner) {
this.owner = owner;
this.contents = [];

this.waste = 0;
this.digested = [];

// health/sec
this.damageRate = 15 * 100 / 86400;
// health percent/sec
this.damageRatePercent = 1 / 86400;

this.capacity = 100;

// kg/sec
this.digestRate = 80 / 8640;

@@ -346,15 +348,22 @@ function Container(owner) {
};

this.fullness = function() {
return this.contents.reduce((total, prey) => total + prey.mass, 0);
return this.contents.reduce((total, prey) => total + prey.mass, 0) + this.waste;
};

this.add = function(amount) {
this.waste += amount;
};

this.finish = function(prey) {
if (prey.prefs.scat)
this.digested.push(prey);
};
}

function Stomach(owner, bowels) {
function Stomach(owner) {
Container.call(this, owner);

this.bowels = bowels;

this.describeDamage = function(prey) {
return "Your guts gurgle and churn, slowly wearing down " + prey.description("the") + " trapped within.";
};
@@ -376,29 +385,28 @@ function Stomach(owner, bowels) {
};
}

function Butt(owner, bowels, stomach) {
function Bowels(owner, stomach) {
Container.call(this, owner);

this.bowels = bowels;
this.stomach = stomach;

this.parentDigest = this.digest;

this.digest = function(time) {
this.contents.forEach(function(x) {
x.timeInButt += time;
x.timeInBowels += time;
});

let lines = this.parentDigest(time);

let pushed = this.contents.filter(prey => prey.timeInButt >= 60 * 30);
let pushed = this.contents.filter(prey => prey.timeInBowels >= 60 * 30);

pushed.forEach(function(x) {
this.stomach.feed(x);
lines.push("Your winding guts squeeze " + x.description("the") + " into your stomach.");
}, this);

this.contents = this.contents.filter(prey => prey.timeInButt < 60 * 30);
this.contents = this.contents.filter(prey => prey.timeInBowels < 60 * 30);

return lines;
};
@@ -418,39 +426,21 @@ function Butt(owner, bowels, stomach) {
this.parentFeed = this.feed;

this.feed = function(prey) {
prey.timeInButt = 0;
prey.timeInBowels = 0;
this.parentFeed(prey);
};

this.fill = function(amount) {
this.bowels.add(amount);
};

this.finish = function(prey) {
this.bowels.finish(prey);
};
}

function WasteContainer(name) {
this.name = name;

this.fullness = 0;

this.digested = [];

this.add = function(amount) {
this.fullness += amount;
this.add(amount);
};

this.finish = function(prey) {
if (prey.prefs.scat)
this.digested.push(prey);
this.digested.push(prey);
};
}

function Balls(owner) {
Container.call(this, owner);
WasteContainer.call(this, "Balls");

this.describeDamage = function(prey) {
return "Your balls slosh as they wear down the " + prey.description("the") + " trapped within.";
@@ -469,14 +459,12 @@ function Balls(owner) {
};

this.finish = function(prey) {
if (prey.prefs.scat)
this.digested.push(prey);
this.digested.push(prey);
};
}

function Womb(owner) {
Container.call(this, owner);
WasteContainer.call(this, "Womb");

this.describeDamage = function(prey) {
return "You shiver as " + prey.description("the") + " squrims within your womb.";
@@ -495,14 +483,12 @@ function Womb(owner) {
};

this.finish = function(prey) {
if (prey.prefs.scat)
this.digested.push(prey);
this.digested.push(prey);
};
}

function Breasts(owner) {
Container.call(this, owner);
WasteContainer.call(this, "Breasts");

this.describeDamage = function(prey) {
return "Your breasts slosh from side to side, steadily softening " + prey.description("the") + " trapped within.";
@@ -521,15 +507,10 @@ function Breasts(owner) {
};

this.finish = function(prey) {
if (prey.prefs.scat)
this.digested.push(prey);
this.digested.push(prey);
};
}

function Bowels() {
WasteContainer.call(this, "Bowels");
}

// PLAYER PREY

function plead(predator) {


Laden…
Annuleren
Opslaan