If you're doing that, then you might want to look into making a custom load function using Config.saves.onLoad.
In your JavaScript section you could put something like this:
Config.saves.onLoad = function (save) {
/* isProperty: Returns whether Obj object has Prop as a property. */
function isProperty(Obj, Prop) {
if (!!Obj && typeof Obj === "object") {
return Obj ? hasOwnProperty.call(Obj, Prop) : false;
}
return false;
}
/* Visited: Returns whether Psg passage was visited. */
function Visited(Psg) {
var i;
for (i = 0; i <= save.state.index; i++) {
if (save.state.history[i].title == Psg) {
return true;
}
}
if (isProperty(save.state, "expired")) {
return save.state.expired.indexOf(Psg) >= 0;
}
return false;
}
/* CheckVar: Checks to see if Passage was visited, if it was then it
sets VarName variable to Set, otherwise it sets it to Default. If
Set or Default are "undefined" then it doesn't change the value. */
function CheckVar(VarName, Passage, Set, Default) {
if (Visited(Passage)) {
if (Set != undefined) {
save.state.history[save.state.index].variables[VarName] = Set;
}
} else {
if (Default != undefined) {
save.state.history[save.state.index].variables[VarName] = Default;
}
}
}
CheckVar("hasCoat", "Coat Room", false, true);
CheckVar("hasHat", "Hat Check", "none", "white");
CheckVar("hasHat", "Outside", "black");
};
Now, when you load a save, it will set $hasCoat to false if the player has visited the "Coat Room" passage, otherwise it sets $hasCoat to true.
It also sets $hasHat to "white", unless the player has visited the "Hat Check" passage, in which case it's set to "none", unless they've visited the "Outside" passage, in which case it's set to "black". That's because the third CheckVar() call above overrides the previous one if "Outside" was visited, otherwise it leaves the current value alone (because the "Default" parameter is undefined).
That's just an example though. Feel free to modify the above code if you need more complicated checks than that.
Hope that helps! :-)