As far as I can judge, for integers it's correct. But there's now some weird problems.
Before to continue a precision, I voluntary used a saved file containing some of my own tools variables. I did this because I know that it will add objects to the save file even if they are no object normally saved by the game. I clearly understood that for now you focus on integers, and that objects will give a weird result, that what I wanted to see, how weird it is.
On the positive side, like I said all integer values I have checked are correct. And on game with integer only it works fine. On the negative side, once there's more than integers, you've variables seen twice :
View attachment 39185
I'm not sure at 100%, but apparently all the variables prefixed with "store." are seen twice, once with the prefix and once without it.
Normally the prefix is useless since "store" is the default store and so variables don't need to be prefixed in regular scripts. Still, when used from an external python script or another store, the prefix is needed.
I can't confirm that it's that, but it looks like the prefixed variables were the ones I checked at some time in the console. But I don't know why are they saved twice.
Objects introduce a really weird behavior in the editor. Apparently at some time it stop correctly keeping track of the position and start to see as variable's names things that clearly aren't :
View attachment 39186
All this said, seen from my point of view, this version is really better than the previous one. The save file I used for the screenshots is the same that returned nothing the last time. But still you seem to take the problem from the wrong angle. Data serialized by pickle are just small programs able to recreate the data structures and their content. So once you understood which opcode mean what, a bunch of "if opcode == this, do that" is enough to deserialize the data. Don't see your editor as something that read data, but as your own interpreter for programs wrote by the pickle module. And for the save part, it your own compiler which write the programs.
For this, you can look directly at the module source code to find the opcode, or use a real small ren'py code. Something really simple like :
Code:
label start:
$ a = 10
$ b = 11
"Please, save now."
This way you'll find the correct opcodes for "this variable is named 'a' and its content is '10'", and you can confirm that it's right if the same thing also mean "this variable is named 'b' and its content is '11'". Then you change your code and assign the string "abc" instead of "10", and "def" instead of "11", which will give you new opcodes. In the same time, you should normally found the opcode meaning "it's the end for this structure", which should help you jump unknown opcodes.
I think that anyway you'll have to use the small Ren'py code at one time, since Ren'py add some parasitic data.
Side note: For the thread edition, the decision must come from the staff, but I think you deserve the "modder" flag.