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
| @@ -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", | |||
| @@ -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); | |||
| @@ -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; | |||
| } | |||