|
- // bumps save versions
-
- migrations = [
- // 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;
- },
-
- // 2 -> 3
-
- // passive production is now written as percentage points;
- // old values won't make sense anymore, so we'll just
- // erase them
- (save) => {
- if (save.baseCumProduction) delete save.baseCumProduction;
- if (save.baseFemcumProduction) delete save.baseFemcumProduction;
- if (save.baseLactationProduction) delete save.baseLactationProduction;
- if (save.baseGasProduction) delete save.baseGasProduction;
- if (save.basePissProduction) delete save.basePissProduction;
- if (save.baseScatProduction) delete save.baseScatProduction;
- },
- ];
-
- function migrate(save, target = null) {
- if (target == null) {
- target = migrations.length;
- }
-
- let version = save.version;
-
- if (version == undefined) {
- alert(
- "This save is from before versioning was added. It can't be automatically updated, and it might lose some settings. Double check that everything's there! Any subsequent saves will work correctly."
- );
- save["version"] = migrations.length;
- return false;
- }
-
- if (version == 0) {
- alert(
- "This save is from before v1.0. It can't be automatically migrated, so it may lose some settings. Double check the resulting character. Subsequent saves will function correctly."
- );
- save["version"] = migrations.length;
- return false;
- }
-
- if (version < target) {
- for (let x = version; x < target; x++) {
- migrations[x](save);
- }
- save.version = target;
- } else {
- return false;
- }
-
- return true;
- }
|