Actually - now that I think about it…
I know how to do pretty much exactly what you want, including some crazy stuff… even in the upcoming patch. Heck, you could even generate a ‘map’ (like, an ASCII image) that you store in the user’s profile. Then, in the campaign file, it has only a single mission - but after that mission is declared in the campaign, it reads this file from the profile folder, which says 'here’s a map, we are at X,Y", and based on what is there, loads a specific map (one generic, or a small palette of them, etc).
Once the game starts, it populates the map as needed (and you can change the background and stuff from lua) - and when loading a save, the map’s internal state says ‘we were at X,Y’ - so if you win or decide to leave, it’ll update the X,Y in the player’s profile, and continue.
Lots of details to lock down - but I think it’d work fairy well actually. With a bit of effort you could even make a custom campaign button that loaded and displayed that map, where you’d been, enabling clicks for where you want to go, etc… The UI handling would just update the user’s XY data in the profile, and load the base mission again - causing it to ‘jump’.