I'm a little rusty on this, but there's a few things I see wrong in the Load section (if I'm understanding how you are trying to do this right).
I'm a little confused as to why you did it the way you did. Maybe try something like this?
-
SaveGameCache1
-
Events
-
Unit - A unit enters GoToNorth <gen>
-
Conditions
-
(Triggering unit) Equal to (Random unit from (Units owned by Player 1 (Red)))
-
Actions
-
Game Cache - Create a game cache from DBZ.w3v
-
Game Cache - Store (Triggering unit) as Hero of Heros in (Last created game cache)
-
Game Cache - Store (Hero level of (Triggering unit)) as Hero_Level of Heros in (Last created game cache)
-
Game Cache - Store (Hero experience of (Triggering unit)) as Hero_Experience of Heros in (Last created game cache)
-
Game Cache - Store ((Owner of (Triggering unit)) Current gold) as Gold of Resources in (Last created game cache)
-
Game Cache - Store ((Owner of (Triggering unit)) Current lumber) as Lumber of Resources in (Last created game cache)
-
Game Cache - Store Middle as Region of RegionName in (Last created game cache)
-
Game Cache - Save (Last created game cache)
-
Game - Save game as Middle.w3z and change level to North.w3x (Skip scores)
Only use ONE gamecache for all of this, you won't need more than one. You can set the region name you just came from as a string in that main cache, you'll just have to remember to change that value in the game cache every time you move to a different map. Using more than one cache isn't the best idea, and for all I know its not even possible. Also, I removed the Save GameCache you had at the beginning. Not sure what exactly it referenced to, whether it was a variable or just a name you replaced for our sake, but it shouldn't be there either way, especially if you are only using one game cache from now on. I replaced your 'placeholders' with real values so it doesn't look like they are all strings.
And for load..
-
LoadGameCache1
-
Events
-
Conditions
-
Actions
-
Game Cache - Reload all game cache data from disk
-
Game Cache - Create a game cache from DBZw3v
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Load Region of RegionName from (Last created game cache)) Equal to Middle
-
Then - Actions
-
Game Cache - Restore Hero of Heros from (Last created game cache) for Player 1 (Red) at (Center of ComeFromMiddle <gen>) facing 0.00
-
Else - Actions
-
Game Cache - Restore Hero of Heros from (Last created game cache) for Player 1 (Red) at (Center of ComeFromWest <gen>) facing 0.00
-
Set HeroName = (Proper name of (Last restored unit))
-
Hero - Set (Last restored unit) Hero-level to (Load Hero_Level of Heros from (Last created game cache)), Hide level-up graphics
-
Hero - Set (Last restored unit) experience to (Load Hero_Experience of Heros from (Last created game cache)), Hide level-up graphics
-
Player - Set Player 1 (Red) Current gold to (Load Gold of Resources from (Last created game cache))
-
Player - Set Player 1 (Red) Current lumber to (Load Lumber of Resources from (Last created game cache))
Here where you were a little wrong. You want to restore all game cache data from disk before you create a game cache, you had it visa versa, and then about halfway through the trigger you re-loaded all game cache data. No need for that. To detect the region you just came from, use an If/Then/Else to detect the string that was set in the cache by using the Label and Category you defined before. Of course this is a string condition.
Make these changes, test it out, and if it doesn't work repost your new trigger (after the changes) and I'll let you know whats wrong.
I tested this personally before posting it, and if need-be I'll post a test campaign.