aboutsummaryrefslogtreecommitdiff
path: root/engines/supernova/supernova1
diff options
context:
space:
mode:
authorJaromir Wysoglad2019-07-01 10:45:20 +0200
committerThierry Crozat2019-07-28 15:09:14 +0100
commita4ca2a838f739a53894e05100acf468788eca21b (patch)
tree455ef1ce7715287ee4dc3a8a3948bf8f858f331a /engines/supernova/supernova1
parentb0e386b0147129017e8a0ed531332585f086aa11 (diff)
downloadscummvm-rg350-a4ca2a838f739a53894e05100acf468788eca21b.tar.gz
scummvm-rg350-a4ca2a838f739a53894e05100acf468788eca21b.tar.bz2
scummvm-rg350-a4ca2a838f739a53894e05100acf468788eca21b.zip
SUPERNOVA: When dead return back to main loop ASAP
Diffstat (limited to 'engines/supernova/supernova1')
-rw-r--r--engines/supernova/supernova1/rooms.cpp16
-rw-r--r--engines/supernova/supernova1/state.cpp5
2 files changed, 17 insertions, 4 deletions
diff --git a/engines/supernova/supernova1/rooms.cpp b/engines/supernova/supernova1/rooms.cpp
index 41b2338172..77d0eac244 100644
--- a/engines/supernova/supernova1/rooms.cpp
+++ b/engines/supernova/supernova1/rooms.cpp
@@ -3499,8 +3499,10 @@ bool AxacussBcorridor::interact(Action verb, Object &obj1, Object &obj2) {
else {
_vm->renderImage(1);
_vm->playSound(kAudioDoorOpen);
- if (getObject(4)->hasProperty(CAUGHT))
+ if (getObject(4)->hasProperty(CAUGHT)) {
_gm->busted(11);
+ return true;
+ }
getObject(4)->resetProperty(EXIT | OPENABLE | OPENED);
}
} else if ((verb == ACTION_USE) && Object::combine(obj1, obj2, MASTERKEYCARD, DOOR2) && !getObject(5)->hasProperty(OPENED)) {
@@ -3509,8 +3511,10 @@ bool AxacussBcorridor::interact(Action verb, Object &obj1, Object &obj2) {
else {
_vm->renderImage(2);
_vm->playSound(kAudioDoorOpen);
- if (getObject(5)->hasProperty(CAUGHT))
+ if (getObject(5)->hasProperty(CAUGHT)) {
_gm->busted(16);
+ return true;
+ }
getObject(5)->resetProperty(EXIT | OPENABLE | OPENED);
}
} else if ((verb == ACTION_USE) && Object::combine(obj1, obj2, MASTERKEYCARD, DOOR3) && !getObject(6)->hasProperty(OPENED)) {
@@ -3519,8 +3523,10 @@ bool AxacussBcorridor::interact(Action verb, Object &obj1, Object &obj2) {
else {
_vm->renderImage(3);
_vm->playSound(kAudioDoorOpen);
- if (getObject(6)->hasProperty(CAUGHT))
+ if (getObject(6)->hasProperty(CAUGHT)) {
_gm->busted(15);
+ return true;
+ }
getObject(6)->resetProperty(EXIT | OPENABLE | OPENED);
}
} else if ((verb == ACTION_USE) && Object::combine(obj1, obj2, MASTERKEYCARD, DOOR4) && !getObject(7)->hasProperty(OPENED)) {
@@ -3529,8 +3535,10 @@ bool AxacussBcorridor::interact(Action verb, Object &obj1, Object &obj2) {
} else {
_vm->renderImage(4);
_vm->playSound(kAudioDoorOpen);
- if (getObject(7)->hasProperty(CAUGHT))
+ if (getObject(7)->hasProperty(CAUGHT)) {
_gm->busted(20);
+ return true;
+ }
getObject(7)->resetProperty(EXIT | OPENABLE | OPENED);
}
} else if ((verb == ACTION_LOOK) && (obj1._id >= DOOR1) && (obj1._id <= DOOR4)) {
diff --git a/engines/supernova/supernova1/state.cpp b/engines/supernova/supernova1/state.cpp
index 1f9c81b864..2dd2a1d08e 100644
--- a/engines/supernova/supernova1/state.cpp
+++ b/engines/supernova/supernova1/state.cpp
@@ -296,6 +296,7 @@ void GameManager1::initState() {
_state._dream = false;
_prevImgId = 0;
+ _dead = false;
}
void GameManager1::initRooms() {
@@ -1502,6 +1503,10 @@ void GameManager1::handleInput() {
void GameManager1::executeRoom() {
if (_processInput && !_vm->_screen->isMessageShown() && _guiEnabled) {
handleInput();
+ if (_dead) {
+ _dead = false;
+ return;
+ }
if (_mouseClicked) {
Common::Event event;
event.type = Common::EVENT_MOUSEMOVE;