// 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; } ]; 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; }