well, there were quite a few problems in there. It was actually saving the data, but it was never reading it and even if it did, the defaults were getting reset after every level. There was a lot happening every tick that didn't need to be running. I found the code very difficult to follow, so I structured it in a way that makes sense to me!
It works well now... I put in comments to try to explain what I was doing. I didn't add any error checking (because there isn't much you can do) but it does adapt itself if the number or levels increases - you will need that because it did save on your system thinking there were 4 levels and now it thinks there are 12.