diff --git a/features.js b/features.js index ce87840..04c7c25 100644 --- a/features.js +++ b/features.js @@ -843,11 +843,20 @@ options = [ "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", "id": "oralDigestManual", @@ -884,11 +893,20 @@ options = [ "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", "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." }, { - "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", "id": "tailDigestManual", @@ -1201,11 +1228,20 @@ options = [ "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", "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." }, { - "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", "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." }, { - "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", "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" }, { - "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", "id": "soulDigestManual", @@ -1677,11 +1740,20 @@ options = [ "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", "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" }, { - "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", "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." }, { - "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", "id": "pawDigestManual", @@ -1819,11 +1909,20 @@ options = [ "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." }, { - "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", "id": "wingDigestManual", diff --git a/game.js b/game.js index 4d26137..bec68d7 100644 --- a/game.js +++ b/game.js @@ -527,10 +527,12 @@ let macro = //macro controls every customizable part of the players body 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); } @@ -560,7 +562,7 @@ let macro = //macro controls every customizable part of the players body this.owner = owner; for (let i = 0; i < this.stages; i++) this.contents.push(new Container()); - owner.digest(owner, this, owner.oralDigestTime); + owner.digest(owner, this, owner.oralDigestTime, owner.oralDigestAuto); }, "feed": function(prey) { this.feedFunc(prey,this,this.owner); @@ -609,7 +611,7 @@ let macro = //macro controls every customizable part of the players body this.owner = owner; for (let i = 0; i < this.stages; i++) this.contents.push(new Container()); - owner.digest(owner, this, owner.tailDigestTime); + owner.digest(owner, this, owner.tailDigestTime, owner.tailDigestAuto); }, "feed": function(prey) { this.feedFunc(prey,this,this.owner); @@ -664,7 +666,7 @@ let macro = //macro controls every customizable part of the players body this.owner = owner; for (let i = 0; i < this.stages; i++) this.contents.push(new Container()); - owner.digest(owner, this, owner.analDigestTime); + owner.digest(owner, this, owner.analDigestTime, owner.analDigestAuto); }, "feed": function(prey) { this.feedFunc(prey,this,this.owner); @@ -724,7 +726,7 @@ let macro = //macro controls every customizable part of the players body this.owner = owner; for (let i = 0; i < this.stages; i++) this.contents.push(new Container()); - owner.digest(owner, this, owner.unbirthDigestTime); + owner.digest(owner, this, owner.unbirthDigestTime, owner.unbirthDigestAuto); }, "feed": function(prey) { this.feedFunc(prey,this,this.owner); @@ -778,7 +780,7 @@ let macro = //macro controls every customizable part of the players body this.owner = owner; for (let i = 0; i < this.stages; i++) this.contents.push(new Container()); - owner.digest(owner, this, owner.cockDigestTime); + owner.digest(owner, this, owner.cockDigestTime, owner.cockDigestAuto); }, "feed": function(prey) { this.feedFunc(prey,this,this.owner); @@ -832,7 +834,7 @@ let macro = //macro controls every customizable part of the players body this.owner = owner; for (let i = 0; i < this.stages; i++) this.contents.push(new Container()); - owner.digest(owner, this, owner.breastDigestTime); + owner.digest(owner, this, owner.breastDigestTime, owner.breastDigestAuto); }, "feed": function(prey) { this.feedFunc(prey,this,this.owner); @@ -887,7 +889,7 @@ let macro = //macro controls every customizable part of the players body this.owner = owner; for (let i = 0; i < this.stages; i++) this.contents.push(new Container()); - owner.digest(owner, this, owner.bladderDigestTime); + owner.digest(owner, this, owner.bladderDigestTime, owner.bladderDigestAuto); }, "feed": function(prey) { this.feedFunc(prey,this,this.owner); @@ -933,7 +935,7 @@ let macro = //macro controls every customizable part of the players body this.owner = owner; for (let i = 0; i < this.stages; i++) this.contents.push(new Container()); - owner.digest(owner, this, owner.soulDigestTime); + owner.digest(owner, this, owner.soulDigestTime, owner.soulDigestAuto); }, "feed": function(prey) { 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()); 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; for (let i = 0; i < this.stages; i++) this.contents.push(new Container()); - owner.digest(owner, this, owner.pawDigestTime); + owner.digest(owner, this, owner.pawDigestTime, owner.pawDigestAuto); }, "feed": function(prey) { this.feedFunc(prey,this,this.owner); @@ -1068,7 +1070,7 @@ let macro = //macro controls every customizable part of the players body this.owner = owner; for (let i = 0; i < this.stages; i++) this.contents.push(new Container()); - owner.digest(owner, this, owner.cropTransferTime); + owner.digest(owner, this, owner.cropTransferTime, owner.cropTransferAuto); }, "feed": function(prey) { this.feedFunc(prey,this,this.owner); @@ -1111,7 +1113,7 @@ let macro = //macro controls every customizable part of the players body this.owner = owner; for (let i = 0; i < this.stages; i++) this.contents.push(new Container()); - owner.digest(owner, this, owner.wingDigestTime); + owner.digest(owner, this, owner.wingDigestTime, owner.wingDigestAuto); }, "feed": function(prey) { this.feedFunc(prey,this,this.owner); diff --git a/migrations.js b/migrations.js index cb0c4e1..40b631f 100644 --- a/migrations.js +++ b/migrations.js @@ -1,9 +1,42 @@ // bumps save versions 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) { @@ -29,6 +62,7 @@ function migrate(save, target=null) { for (let x = version; x < target; x++) { migrations[x](save); } + save.version = target; } else { return false; }