Browse Source

Make automatic digestion toggleable.

This replaces the old behavior of setting digestion time to 0.
Doing so does still work, but it is no longer mentioned.
This introduces a save migration, since the option needs to be
set based on the digestion times.
tags/v1.1.0
Fen Dweller 5 years ago
parent
commit
9a36ed3b1e
3 changed files with 221 additions and 77 deletions
  1. +168
    -60
      features.js
  2. +17
    -15
      game.js
  3. +36
    -2
      migrations.js

+ 168
- 60
features.js View File

@@ -843,11 +843,20 @@ options = [
"entries": "entries":
[ [
{ {
"name": "Digestion time",
"id": "oralDigestTime",
"type": "float",
"default": "15"
},
"name": "Automatic digestion",
"id": "oralDigestAuto",
"type": "subcategory",
"default": true,
"entries":
[
{
"name": "Digestion time",
"id": "oralDigestTime",
"type": "float",
"default": "15"
}
]
},
{ {
"name": "Manual digestion", "name": "Manual digestion",
"id": "oralDigestManual", "id": "oralDigestManual",
@@ -884,11 +893,20 @@ options = [
"unit": "length" "unit": "length"
}, },
{ {
"name": "Digestion time",
"id": "analDigestTime",
"type": "float",
"default": "15"
},
"name": "Automatic digestion",
"id": "analDigestAuto",
"type": "subcategory",
"default": true,
"entries":
[
{
"name": "Digestion time",
"id": "analDigestTime",
"type": "float",
"default": "15"
}
]
},
{ {
"name": "Anal autogrowth factor", "name": "Anal autogrowth factor",
"id": "assGrowthFactor", "id": "assGrowthFactor",
@@ -1068,11 +1086,20 @@ options = [
"tooltip": "How much this part grows during part specific digestion. This is relative to overall growth, [1]:all mass goes to this part [.2]:20% part growth-80% overall growth." "tooltip": "How much this part grows during part specific digestion. This is relative to overall growth, [1]:all mass goes to this part [.2]:20% part growth-80% overall growth."
}, },
{ {
"name": "Digestion time",
"id": "tailDigestTime",
"type": "float",
"default": "15"
},
"name": "Automatic digestion",
"id": "tailDigestAuto",
"type": "subcategory",
"default": true,
"entries":
[
{
"name": "Digestion time",
"id": "tailDigestTime",
"type": "float",
"default": "15"
}
]
},
{ {
"name": "Manual digestion", "name": "Manual digestion",
"id": "tailDigestManual", "id": "tailDigestManual",
@@ -1201,11 +1228,20 @@ options = [
"default": "1" "default": "1"
}, },
{ {
"name": "Digestion time",
"id": "cockDigestTime",
"type": "float",
"default": "15"
},
"name": "Automatic digestion",
"id": "cockDigestAuto",
"type": "subcategory",
"default": true,
"entries":
[
{
"name": "Digestion time",
"id": "cockDigestTime",
"type": "float",
"default": "15"
}
]
},
{ {
"name": "Manual digestion", "name": "Manual digestion",
"id": "cockDigestManual", "id": "cockDigestManual",
@@ -1356,11 +1392,20 @@ options = [
"tooltip": "How much this part grows during part specific digestion. This is relative to overall growth, [1]:all mass goes to this part [.2]:20% part growth-80% overall growth." "tooltip": "How much this part grows during part specific digestion. This is relative to overall growth, [1]:all mass goes to this part [.2]:20% part growth-80% overall growth."
}, },
{ {
"name": "Digestion time",
"id": "unbirthDigestTime",
"type": "float",
"default": "15"
},
"name": "Automatic digestion",
"id": "unbirthDigestAuto",
"type": "subcategory",
"default": true,
"entries":
[
{
"name": "Digestion time",
"id": "unbirthDigestTime",
"type": "float",
"default": "15"
}
]
},
{ {
"name": "Manual digestion", "name": "Manual digestion",
"id": "unbirthDigestManual", "id": "unbirthDigestManual",
@@ -1470,11 +1515,20 @@ options = [
"tooltip": "How much this part grows during part specific digestion. This is relative to overall growth, [1]:all mass goes to this part [.2]:20% part growth-80% overall growth." "tooltip": "How much this part grows during part specific digestion. This is relative to overall growth, [1]:all mass goes to this part [.2]:20% part growth-80% overall growth."
}, },
{ {
"name": "Digestion time",
"id": "breastDigestTime",
"type": "float",
"default": "15"
},
"name": "Automatic digestion",
"id": "breastDigestAuto",
"type": "subcategory",
"default": true,
"entries":
[
{
"name": "Digestion time",
"id": "breastDigestTime",
"type": "float",
"default": "15"
}
]
},
{ {
"name": "Manual digestion", "name": "Manual digestion",
"id": "breastDigestManual", "id": "breastDigestManual",
@@ -1594,11 +1648,20 @@ options = [
"tooltip": "How much you grow when absorbing souls. [1]-you will gain equal mass to the souls you absorb. [.01]- you will grow by 1% of the mass of the souls you absorb. This does not stack with Prey growth factor" "tooltip": "How much you grow when absorbing souls. [1]-you will gain equal mass to the souls you absorb. [.01]- you will grow by 1% of the mass of the souls you absorb. This does not stack with Prey growth factor"
}, },
{ {
"name": "Digestion time",
"id": "soulDigestTime",
"type": "float",
"default": "15"
},
"name": "Automatic digestion",
"id": "soulDigestAuto",
"type": "subcategory",
"default": true,
"entries":
[
{
"name": "Digestion time",
"id": "soulDigestTime",
"type": "float",
"default": "15"
}
]
},
{ {
"name": "Manual digestion", "name": "Manual digestion",
"id": "soulDigestManual", "id": "soulDigestManual",
@@ -1677,11 +1740,20 @@ options = [
"default": "1" "default": "1"
}, },
{ {
"name": "Digestion time",
"id": "bladderDigestTime",
"type": "float",
"default": "15"
},
"name": "Automatic digestion",
"id": "bladderDigestAuto",
"type": "subcategory",
"default": true,
"entries":
[
{
"name": "Digestion time",
"id": "bladderDigestTime",
"type": "float",
"default": "15"
}
]
},
{ {
"name": "Manual digestion", "name": "Manual digestion",
"id": "bladderDigestManual", "id": "bladderDigestManual",
@@ -1763,11 +1835,20 @@ options = [
"tooltip": "How much you grow when absorbing people via goo. [1]-you will gain equal mass to the souls you absorb. [.01]- you will grow by 1% of the mass of the souls you absorb. This does not stack with Prey growth factor" "tooltip": "How much you grow when absorbing people via goo. [1]-you will gain equal mass to the souls you absorb. [.01]- you will grow by 1% of the mass of the souls you absorb. This does not stack with Prey growth factor"
}, },
{ {
"name": "Digestion time",
"id": "gooDigestTime",
"type": "float",
"default": "15"
},
"name": "Automatic digestion",
"id": "gooDigestAuto",
"type": "subcategory",
"default": true,
"entries":
[
{
"name": "Digestion time",
"id": "gooDigestTime",
"type": "float",
"default": "15"
}
]
},
{ {
"name": "Manual digestion", "name": "Manual digestion",
"id": "gooDigestManual", "id": "gooDigestManual",
@@ -1792,11 +1873,20 @@ options = [
"tooltip": "How much this part grows during part specific digestion. This is relative to overall growth, [1]:all mass goes to this part [.2]:20% part growth-80% overall growth." "tooltip": "How much this part grows during part specific digestion. This is relative to overall growth, [1]:all mass goes to this part [.2]:20% part growth-80% overall growth."
}, },
{ {
"name": "Digestion time",
"id": "pawDigestTime",
"type": "float",
"default": "15"
},
"name": "Automatic digestion",
"id": "pawDigestAuto",
"type": "subcategory",
"default": true,
"entries":
[
{
"name": "Digestion time",
"id": "pawDigestTime",
"type": "float",
"default": "15"
}
]
},
{ {
"name": "Manual digestion", "name": "Manual digestion",
"id": "pawDigestManual", "id": "pawDigestManual",
@@ -1819,11 +1909,20 @@ options = [
"entries": "entries":
[ [
{ {
"name": "Transfer time",
"id": "cropTransferTime",
"type": "float",
"default": "10"
}
"name": "Automatic transfer",
"id": "cropTransferAuto",
"type": "subcategory",
"default": true,
"entries":
[
{
"name": "Digestion time",
"id": "cropTransferTime",
"type": "float",
"default": "10"
}
]
},
] ]
}, },
{ {
@@ -1964,11 +2063,20 @@ options = [
"tooltip": "How much this part grows during part specific digestion. This is relative to overall growth, [1]:all mass goes to this part [.2]:20% part growth-80% overall growth." "tooltip": "How much this part grows during part specific digestion. This is relative to overall growth, [1]:all mass goes to this part [.2]:20% part growth-80% overall growth."
}, },
{ {
"name": "Digestion time",
"id": "wingDigestTime",
"type": "float",
"default": "15"
},
"name": "Automatic digestion",
"id": "wingDigestAuto",
"type": "subcategory",
"default": true,
"entries":
[
{
"name": "Digestion time",
"id": "wingDigestTime",
"type": "float",
"default": "15"
}
]
},
{ {
"name": "Manual digestion", "name": "Manual digestion",
"id": "wingDigestManual", "id": "wingDigestManual",


+ 17
- 15
game.js View File

@@ -527,10 +527,12 @@ let macro = //macro controls every customizable part of the players body
return this.scaling(this.droolBaseVolume / 1000 , this.scale, 3); return this.scaling(this.droolBaseVolume / 1000 , this.scale, 3);
}, },


"digest": function(owner, organ, time=15) {
"digest": function(owner, organ, time=15, auto=true) {


// ignore if using manual digestion
if (time != 0) {
// we now have an explicit no-auto-digest flag, but
// some saves will wind up a time of 0 anyway, so I'll
// just leave this here to keep that from breaking things
if (auto && time != 0) {
setTimeout(function() { owner.digest(owner, organ, time); }, time * 1000 / organ.stages / macro.fastDigestFactor); setTimeout(function() { owner.digest(owner, organ, time); }, time * 1000 / organ.stages / macro.fastDigestFactor);
} }


@@ -560,7 +562,7 @@ let macro = //macro controls every customizable part of the players body
this.owner = owner; this.owner = owner;
for (let i = 0; i < this.stages; i++) for (let i = 0; i < this.stages; i++)
this.contents.push(new Container()); this.contents.push(new Container());
owner.digest(owner, this, owner.oralDigestTime);
owner.digest(owner, this, owner.oralDigestTime, owner.oralDigestAuto);
}, },
"feed": function(prey) { "feed": function(prey) {
this.feedFunc(prey,this,this.owner); this.feedFunc(prey,this,this.owner);
@@ -609,7 +611,7 @@ let macro = //macro controls every customizable part of the players body
this.owner = owner; this.owner = owner;
for (let i = 0; i < this.stages; i++) for (let i = 0; i < this.stages; i++)
this.contents.push(new Container()); this.contents.push(new Container());
owner.digest(owner, this, owner.tailDigestTime);
owner.digest(owner, this, owner.tailDigestTime, owner.tailDigestAuto);
}, },
"feed": function(prey) { "feed": function(prey) {
this.feedFunc(prey,this,this.owner); this.feedFunc(prey,this,this.owner);
@@ -664,7 +666,7 @@ let macro = //macro controls every customizable part of the players body
this.owner = owner; this.owner = owner;
for (let i = 0; i < this.stages; i++) for (let i = 0; i < this.stages; i++)
this.contents.push(new Container()); this.contents.push(new Container());
owner.digest(owner, this, owner.analDigestTime);
owner.digest(owner, this, owner.analDigestTime, owner.analDigestAuto);
}, },
"feed": function(prey) { "feed": function(prey) {
this.feedFunc(prey,this,this.owner); this.feedFunc(prey,this,this.owner);
@@ -724,7 +726,7 @@ let macro = //macro controls every customizable part of the players body
this.owner = owner; this.owner = owner;
for (let i = 0; i < this.stages; i++) for (let i = 0; i < this.stages; i++)
this.contents.push(new Container()); this.contents.push(new Container());
owner.digest(owner, this, owner.unbirthDigestTime);
owner.digest(owner, this, owner.unbirthDigestTime, owner.unbirthDigestAuto);
}, },
"feed": function(prey) { "feed": function(prey) {
this.feedFunc(prey,this,this.owner); this.feedFunc(prey,this,this.owner);
@@ -778,7 +780,7 @@ let macro = //macro controls every customizable part of the players body
this.owner = owner; this.owner = owner;
for (let i = 0; i < this.stages; i++) for (let i = 0; i < this.stages; i++)
this.contents.push(new Container()); this.contents.push(new Container());
owner.digest(owner, this, owner.cockDigestTime);
owner.digest(owner, this, owner.cockDigestTime, owner.cockDigestAuto);
}, },
"feed": function(prey) { "feed": function(prey) {
this.feedFunc(prey,this,this.owner); this.feedFunc(prey,this,this.owner);
@@ -832,7 +834,7 @@ let macro = //macro controls every customizable part of the players body
this.owner = owner; this.owner = owner;
for (let i = 0; i < this.stages; i++) for (let i = 0; i < this.stages; i++)
this.contents.push(new Container()); this.contents.push(new Container());
owner.digest(owner, this, owner.breastDigestTime);
owner.digest(owner, this, owner.breastDigestTime, owner.breastDigestAuto);
}, },
"feed": function(prey) { "feed": function(prey) {
this.feedFunc(prey,this,this.owner); this.feedFunc(prey,this,this.owner);
@@ -887,7 +889,7 @@ let macro = //macro controls every customizable part of the players body
this.owner = owner; this.owner = owner;
for (let i = 0; i < this.stages; i++) for (let i = 0; i < this.stages; i++)
this.contents.push(new Container()); this.contents.push(new Container());
owner.digest(owner, this, owner.bladderDigestTime);
owner.digest(owner, this, owner.bladderDigestTime, owner.bladderDigestAuto);
}, },
"feed": function(prey) { "feed": function(prey) {
this.feedFunc(prey,this,this.owner); this.feedFunc(prey,this,this.owner);
@@ -933,7 +935,7 @@ let macro = //macro controls every customizable part of the players body
this.owner = owner; this.owner = owner;
for (let i = 0; i < this.stages; i++) for (let i = 0; i < this.stages; i++)
this.contents.push(new Container()); this.contents.push(new Container());
owner.digest(owner, this, owner.soulDigestTime);
owner.digest(owner, this, owner.soulDigestTime, owner.soulDigestAuto);
}, },
"feed": function(prey) { "feed": function(prey) {
this.feedFunc(prey,this,this.owner); this.feedFunc(prey,this,this.owner);
@@ -979,7 +981,7 @@ let macro = //macro controls every customizable part of the players body
this.contents.push(new Container()); this.contents.push(new Container());


if (owner.gooDigestion) { if (owner.gooDigestion) {
owner.digest(owner, this, owner.gooDigestTime);
owner.digest(owner, this, owner.gooDigestTime, owner.gooDigestAuto);
} }


}, },
@@ -1028,7 +1030,7 @@ let macro = //macro controls every customizable part of the players body
this.owner = owner; this.owner = owner;
for (let i = 0; i < this.stages; i++) for (let i = 0; i < this.stages; i++)
this.contents.push(new Container()); this.contents.push(new Container());
owner.digest(owner, this, owner.pawDigestTime);
owner.digest(owner, this, owner.pawDigestTime, owner.pawDigestAuto);
}, },
"feed": function(prey) { "feed": function(prey) {
this.feedFunc(prey,this,this.owner); this.feedFunc(prey,this,this.owner);
@@ -1068,7 +1070,7 @@ let macro = //macro controls every customizable part of the players body
this.owner = owner; this.owner = owner;
for (let i = 0; i < this.stages; i++) for (let i = 0; i < this.stages; i++)
this.contents.push(new Container()); this.contents.push(new Container());
owner.digest(owner, this, owner.cropTransferTime);
owner.digest(owner, this, owner.cropTransferTime, owner.cropTransferAuto);
}, },
"feed": function(prey) { "feed": function(prey) {
this.feedFunc(prey,this,this.owner); this.feedFunc(prey,this,this.owner);
@@ -1111,7 +1113,7 @@ let macro = //macro controls every customizable part of the players body
this.owner = owner; this.owner = owner;
for (let i = 0; i < this.stages; i++) for (let i = 0; i < this.stages; i++)
this.contents.push(new Container()); this.contents.push(new Container());
owner.digest(owner, this, owner.wingDigestTime);
owner.digest(owner, this, owner.wingDigestTime, owner.wingDigestAuto);
}, },
"feed": function(prey) { "feed": function(prey) {
this.feedFunc(prey,this,this.owner); this.feedFunc(prey,this,this.owner);


+ 36
- 2
migrations.js View File

@@ -1,9 +1,42 @@
// bumps save versions // bumps save versions


migrations = [ migrations = [
(save) => {
// does nothing
// 0 -> 1
// does nothing
save => {
},
// 1 -> 2

// automatic digestion is now a subcategory, so anyone with
// a digest time of 0 should have that unset
save => {
if (save.oralDigestTime == 0)
save.oralDigestAuto = false;
if (save.analDigestTime == 0)
save.analDigestAuto = false;
if (save.tailDigestTime == 0)
save.tailDigestAuto = false;
if (save.cockDigestTime == 0)
save.cockDigestAuto = false;
if (save.unbirthDigestTime == 0)
save.unbirthDigestAuto = false;
if (save.breastDigestTime == 0)
save.breastDigestAuto = false;
if (save.soulDigestTime == 0)
save.soulDigestAuto = false;
if (save.bladderDigestTime == 0)
save.bladderDigestAuto = false;
if (save.gooDigestTime == 0)
save.gooDigestAuto = false;
if (save.pawDigestTime == 0)
save.pawDigestAuto = false;
if (save.cropTransferTime == 0)
save.cropTransferAuto = false;
if (save.wingDigestTime == 0)
save.wingDigestAuto = false;
} }

]; ];


function migrate(save, target=null) { function migrate(save, target=null) {
@@ -29,6 +62,7 @@ function migrate(save, target=null) {
for (let x = version; x < target; x++) { for (let x = version; x < target; x++) {
migrations[x](save); migrations[x](save);
} }
save.version = target;
} else { } else {
return false; return false;
} }


Loading…
Cancel
Save