aboutsummaryrefslogtreecommitdiff
path: root/engines/access/debugger.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/access/debugger.cpp')
-rw-r--r--engines/access/debugger.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/engines/access/debugger.cpp b/engines/access/debugger.cpp
index 17ab6e101d..9a82168561 100644
--- a/engines/access/debugger.cpp
+++ b/engines/access/debugger.cpp
@@ -88,8 +88,18 @@ bool Debugger::Cmd_LoadScene(int argc, const char **argv) {
debugPrintf("%d - %s\n", i, _sceneDescr[i].c_str());
return true;
- case 2:
- _vm->_player->_roomNumber = strToInt(argv[1]);
+ case 2: {
+ int newRoom = strToInt(argv[1]);
+ if (newRoom < 0 || newRoom >= _sceneNumb) {
+ debugPrintf("Invalid Room Number");
+ return true;
+ }
+ if (!_sceneDescr[newRoom].size()) {
+ debugPrintf("Unused Room Number");
+ return true;
+ }
+
+ _vm->_player->_roomNumber = newRoom;
_vm->_room->_function = FN_CLEAR1;
_vm->freeChar();
@@ -98,7 +108,7 @@ bool Debugger::Cmd_LoadScene(int argc, const char **argv) {
_vm->_scripts->_returnCode = 0;
return false;
-
+ }
default:
debugPrintf("Current scene is: %d\n", _vm->_player->_roomNumber);
debugPrintf("Usage: %s <scene number>\n", argv[0]);