aboutsummaryrefslogtreecommitdiff
path: root/engines/zvision/scripting
diff options
context:
space:
mode:
authorRichieSams2015-01-18 20:22:02 -0600
committerRichieSams2015-01-18 20:22:02 -0600
commit3a31e1de96a860b9f971cef939cb8a4aed8bcd5d (patch)
treef7f80d7923e469aaff6cec7e110097284a2d28ed /engines/zvision/scripting
parent0fafb6a62c13f6f5a4ef6215a4be592ed84f248c (diff)
downloadscummvm-rg350-3a31e1de96a860b9f971cef939cb8a4aed8bcd5d.tar.gz
scummvm-rg350-3a31e1de96a860b9f971cef939cb8a4aed8bcd5d.tar.bz2
scummvm-rg350-3a31e1de96a860b9f971cef939cb8a4aed8bcd5d.zip
ZVISION: Don't change location when coming back from ScummVM save dialog and do change location when coming back from restore dialog
Fixes bug # 6771 We don't need to change locations, since we use the ScummVM save dialog instead of the original one (which is actually a location). Instead we just need to reset _nextLocation to _currentLocation so the engine can stop trying to save. If we change locations, the StateKey_LastWorld/Room/etc. end up being overwritten with the current room. So if a script refers to location 0, 0, 0, 0 (aka, the last room), the engine will try to change location to the same room. On restore, we have to force a location change, just in case we restore to the same room. (Since the logic will only do a location change if _nextLocation != _currentLocation)
Diffstat (limited to 'engines/zvision/scripting')
-rw-r--r--engines/zvision/scripting/script_manager.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/engines/zvision/scripting/script_manager.cpp b/engines/zvision/scripting/script_manager.cpp
index 4792a02045..b45f17a6f1 100644
--- a/engines/zvision/scripting/script_manager.cpp
+++ b/engines/zvision/scripting/script_manager.cpp
@@ -576,13 +576,14 @@ void ScriptManager::ChangeLocationReal() {
_nextLocation.node = _currentLocation.node;
_nextLocation.view = _currentLocation.view;
_nextLocation.offset = _currentLocation.offset;
- _currentLocation.world = '0';
+
+ return;
+ } else {
+ _currentLocation.world = 'g';
_currentLocation.room = '0';
_currentLocation.node = '0';
_currentLocation.view = '0';
_currentLocation.offset = 0;
- } else {
- return;
}
}
}