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