Removed the savefile minor versions which were introducded in 0.5, since bumping the major version from 5 to 6 breaks compatibility with 0.5 savefiles. Renumbered the 0.6 minor versions to start with 0.
This contains a hack to maintain compatibility with 0.6 savefiles before the renumbering, a hack which should be removed before 0.6 is released.
ESDNBDSWZ7YAH2EEUW5ASOT4WEJTXRISLQYBOHR4UMLSM6R67NJAC KI5WMBRHOEWSCFLXPAZANEJ7BP34KVCMMBRRMF6MWZVJIWRX23UQC JROZ5XCAQKPXFV242IO3OACFTD6KC4SNSWIXPI5WO4FQ5APRLC4QC AM7QPHDAWNXHLUEVUHVRHG2RO2DOIEFFU4GV3DCIROW6O5HW7H4AC LH4OYDEWEON5QNUCM74R7MNBJDP7O4XRETY74ZMYSXUXYQV427PAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC X7MFMKQTNZ2IWBFVGS6WQV7NRNKJ3DWQAW2X7IQMFQQXW24AHPZQC KSFNXBKBU4XJLJMHLVG73ZFW5CGN2D7UN32OUFHCXMHFOWF7C6TAC Y6NBWVBEELJTKBFGKXUE4WIJP4TMJ65YMF5TWWRB5CHYEFZ26GKAC Y63M7UHAPS6PCUAZUHJE7NV754O5YHPIJE7L6X6C7VLPFWDJWT6QC ZL4S2AICGMIH5DCHUXH6GJHSGELIONW6DOMFWB5PE62BVS7QZZEAC DCZMEKDHQWSQCQYQD6ZXB3XOMWLVLPSPVSBVVMPXMSZF7GO3BVCAC Q4AG4UGLKBPH5KGVHHUPSTXQDLKDOBLQYYHYDJNNOJDZG3Y3PWXQC GQQ6ASWTYODIHG7X32JNUUHP5NMOVZJIHWGS3F3MKRYZGAHP6NVQC XDACRDVLDEUFUBN4L7ES5WBD3YSLBHMRZ4Q5PXIUMOK44D3TLWSAC 4OKEEU32EGHIDAJ75GH3USSQHQPZBDZVC7TOP7ALMHZRUFPE5WEQC KDK4YJQS4P7HRB334SZ3EFCW27AEGRPE3PXW6S6TKRIG6HLOKQNAC 36BFWYZWCQGMAMK4EF2R5C66RA2EBLTX3MJW3QDEKN64C3BJQX7AC NCYUW5C4IA6JQMFGJQUZNB2GBLKG6ROI7I3ZKO5O5DIQSQNXLNDAC BMKL2AB2HBBBVAHWDYXPYZHSCO345QWOQHFSICFRN5BCYZ3UEK3AC PSCYVKJ7DGXAL3V5U4O6AJTRV6Q3N3SHQWAZ73VIPRTE4W64F2XAC T7CUIVICB74342RA32BR37T36FOX4RBSQIB5PNOHTGTGUYGDKSTQC U6OTXM3JN7SGPVIGQ5F6NR2I7J5V7KOWFQ7AVNNRQQDNLBEDMYFQC FS4MVTH4EEEECLEAO2FTNK5CLF2PHFYO2JZHC2YEOKYLWXRDRU6AC JGKYRZ34S3I23PMJX6IUBR7EHEFD6I4XXEGXNT7GKT2M2VIRBSMQC 7KWDC7XFNMBLSUO2HISIROBINZBX5T67LJEEXTAORXW2YZ7VWFGAC M7WTOF3BVX5MGA7AQZB22YEFWCSL7RLW54PQM3MTRLCKUCUZZEUAC TLO257LZSB6ZO36STDUEWJBO2LETXFKTFGXELA6Y4BZBVAEIIINAC CI2RMLJLIAZMEGNN6LJN6PSHXHLPG7PXFIDYRGFPVMDPJ2R4S4NQC ZWFOOUUA5VCYOXGAHE76DXW65ME4AH2DVN6JVNGZAKTHZNDTVOJAC FVT2J6IVMSQZYKQGUHQVGT4ADYM7AWUQ4U7766GBRRFMSR2WBMLAC UKN6HTZXDUUOWKNWNKWPHKGUGL474JIAQN5JU3DM3DU26WGMNP4AC IHV7JHD4E67NEGLZEO3FPQGJPJF3IAV6QV5A63FPG4SU2VRFV47QC WQLOHSNCA3VOMDJF6IINJYKSYVYZEBPJJWBB33QSNE4RP5HEXPMAC P5TRGRH7XMQSPCZKM5IEEO34TY6WMLGHHX7BU6Y453JFRXLUR2VQC EMOBSWJHHB4V6WVMZL7JCF2V3KZN454Z6NS346OKFPMBNO24EJDQC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC GPEJOT73KMACP33IPAKFR5ROGHCOIP22VXZMQNYTGLEA2OSZUM2AC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC 7AMQN7MITMXBNVDAK5VOXTQ4TZIAOD6ZLOFJG7GQMBTY23Y2BKSAC L4RYVF46EQKMVOEADGRG4WMPVTQ6NNFGYMU4SHAH6XJIKWVHT77QC GQL5SIGBHLU3FMCE54XVGLRY5AZHRM6DUEB722REA2DPLGJSN6EQC C55G5JGGSVWMU7XVEJL6YZZLDXQZGRN7JQOAALS6WIKFPX3L2U6QC 52J7CYVAW3QCUEWA5OKWPDGOP6JZR5NJSE3JDLZFBCR7B6LH5ASAC XYBPIU6AQ77EID4VNOMI7KQZULZI4VBZHHIGBRYO7QRJVCODEKYAC TAG_MINOR_PIETY = 2, // Added piety_hysteresisTAG_MINOR_QUIVER = 3, // Added quiverTAG_MINOR_MAPMARK = 4, // Added sizes to map markersTAG_MINOR_MONNAM = 5, // Monsters get individual namesTAG_MINOR_MONBASE = 6, // Zombie base monster gets its own field.TAG_MINOR_FPICKUP = 7, // Added pickup option for allied monsters.TAG_MINOR_MPATROL = 8, // Added monster patrol points.TAG_MINOR_PATHFIND = 9, // Added monster pathfinding.TAG_MINOR_TRTARGET = 10, // Added travel target.TAG_MINOR_LUADGN = 11, // Allow dungeon Lua to persist data.// Bump version past 12.TAG_MINOR_SVNREV = 13, // Added SVN revisionTAG_MINOR_PORTEXT = 14, // Keep track of portal vault extensions.TAG_MINOR_RELIGION = 15, // Keep track of ghosts' religions.// XXX: Release 0.5 -> switch to major version 6// Does that mean we can remove all the above minor version checks?TAG_MINOR_ARTEFACT = 16, // Turned fixed arts into unrandarts.TAG_MINOR_JIYVA = 17, // Added some player bits for Jiyva.TAG_MINOR_ZOT_OPEN = 18, // Remember whether Zot was opened.TAG_MINOR_JELLY = 19, // Remember whether the royal jelly is dead.TAG_ANNOTATE_EXCL = 20, // Store exclusion information for annotations.TAG_MINOR_UGLY = 21, // More ghost bits for (very) ugly things.TAG_MINOR_ROTTING = 22, // Added monster-specific rotting resistance.TAG_MINOR_TRANS = 23, // Keep track of cancellable transformations.TAG_MINOR_GITREV = 24, // Removed SVN revision and added Git revision.TAG_MINOR_VERSION = 24 // Current version. (Keep equal to max.)
TAG_MINOR_ARTEFACT = 0, // Turned fixed arts into unrandarts.TAG_MINOR_JIYVA = 1, // Added some player bits for Jiyva.TAG_MINOR_ZOT_OPEN = 2, // Remember whether Zot was opened.TAG_MINOR_JELLY = 3, // Remember whether the royal jelly is dead.TAG_ANNOTATE_EXCL = 4, // Store exclusion information for annotations.TAG_MINOR_UGLY = 5, // More ghost bits for (very) ugly things.TAG_MINOR_ROTTING = 6, // Added monster-specific rotting resistance.TAG_MINOR_TRANS = 7, // Keep track of cancellable transformations.TAG_MINOR_GITREV = 8, // Removed SVN revision and added Git revision.TAG_MINOR_VERSION = 8 // Current version. (Keep equal to max.)
if (minorVersion >= TAG_MINOR_PORTEXT)you.level_type_ext = unmarshallString(th);}
you.level_type_name_abbrev = unmarshallString(th);you.level_type_origin = unmarshallString(th);you.level_type_tag = unmarshallString(th);you.level_type_ext = unmarshallString(th);
// old: quiver info. Discard it.count_c = unmarshallByte(th);if (minorVersion >= TAG_MINOR_QUIVER)
// XXX: Hack to preserve compatibility despite renumbering the// minor versions.if (_minor_renumbering_correction){// old: quiver info. Discard it.count_c = unmarshallByte(th);
if (minorVersion >= TAG_MINOR_LUADGN){if (!dlua.callfn("dgn_load_data", "u", &th))mprf(MSGCH_ERROR, "Failed to load Lua persist table: %s",dlua.error.c_str());}
if (!dlua.callfn("dgn_load_data", "u", &th))mprf(MSGCH_ERROR, "Failed to load Lua persist table: %s",dlua.error.c_str());
if (_tag_minor_version >= TAG_MINOR_MONBASE)m.base_monster = static_cast<monster_type>(unmarshallShort(th));elsem.base_monster = static_cast<monster_type>(m.number);
m.base_monster = static_cast<monster_type>(unmarshallShort(th));
if (minorVersion >= TAG_MINOR_MAPMARK){const long cooky = unmarshallLong(inf);ASSERT(cooky == MARKERS_COOKY);UNUSED(cooky);}
const long cooky = unmarshallLong(inf);ASSERT(cooky == MARKERS_COOKY);UNUSED(cooky);
static bool _get_and_validate_version(FILE *restoreFile, char &major, char &minor,std::string* reason)
// XXX: Minor version renumbering hack.bool _minor_renumbering_correction = false;static bool _get_and_validate_version(FILE *restoreFile, char &major,char &minor, std::string* reason)
// NOTE: This is a hacky replacement for what should have been caught// by MAJOR_VERSION above. Once the next major version update happens// (preferably when saves break with 0.5 -> 0.6) this check will need// to be removed.if (minor < TAG_MINOR_RELIGION)
if (minor < 0)
}// XXX: Temporary hack to avoid breaking savefile compatibility because// of simply renumbering the minor-versions. Should be removed before// 0.6 is released. 16 is the minor version which was introduced when// the major version was bumped from 5 to 6.COMPILE_CHECK(TAG_MINOR_VERSION < 16, c1);if (minor >= 16){mprf(MSGCH_WARN,"Savefile minor version being changed from %d to %d ""because of renumbering of minor versions after removing ""0.5 minor versions.", minor, minor - 16);minor -= 16;_minor_renumbering_correction = true;