Просмотр исходного кода

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 6 лет назад
Родитель
Сommit
9a36ed3b1e
3 измененных файлов: 221 добавлений и 77 удалений
  1. +168
    -60
      features.js
  2. +17
    -15
      game.js
  3. +36
    -2
      migrations.js

+ 168
- 60
features.js Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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;
} }


Загрузка…
Отмена
Сохранить