Oh, yeah I missed that. If I understood your logic correctly if a cell group exists you're loading from a file else you just initialize everything in new_game.

When does your issue happens? When you start a new game or when you load the files from a previous one?

Another thing..
Code:
int main(){
    #include "instances_creation.h"
// ...
    set_energy(get_max_energy());
Those are bad coding practices (to say the least).