diff options
author | Jaromir Wysoglad | 2019-06-13 10:33:35 +0200 |
---|---|---|
committer | Thierry Crozat | 2019-07-28 15:09:14 +0100 |
commit | 01a3f82886c3acf4778fede58b3d93859620c971 (patch) | |
tree | ee98b4be319c0e5d550c676b45107a8421ee0eb4 | |
parent | a8ca6b9f5272a19956c722042ff6800d4b6985eb (diff) | |
download | scummvm-rg350-01a3f82886c3acf4778fede58b3d93859620c971.tar.gz scummvm-rg350-01a3f82886c3acf4778fede58b3d93859620c971.tar.bz2 scummvm-rg350-01a3f82886c3acf4778fede58b3d93859620c971.zip |
SUPERNOVA2: Add rooms Mus8 to Mus11
-rw-r--r-- | engines/supernova2/ms2_def.h | 2 | ||||
-rw-r--r-- | engines/supernova2/rooms.cpp | 113 | ||||
-rw-r--r-- | engines/supernova2/state.cpp | 3 |
3 files changed, 111 insertions, 7 deletions
diff --git a/engines/supernova2/ms2_def.h b/engines/supernova2/ms2_def.h index 1ec7360d94..092d4b1d01 100644 --- a/engines/supernova2/ms2_def.h +++ b/engines/supernova2/ms2_def.h @@ -146,7 +146,7 @@ kStringMuseum1, kStringMuseum2, kStringMuseum3, kStringMuseum4, kStringMuseum5, kString85, kString86, kString87, kString88, kString89, kString90, kString91, kString92, kStringDinosaur, kStringDinosaurDescription, kStringEntrance, kStringDoor, kStringRoad, kStringCamera, kStringCameraDescription, -kString100, kStringCorridor, kString102, kStringDinosaurHead, kString104, +kStringMainEntrance, kStringCorridor, kString102, kStringDinosaurHead, kString104, kString105, kStringSuctionCup, kString107, kStringOpening, kStringLetter, kStringMassive, kStringInscriptionDescription, kStringPyramid0, kStringPyramid1, kStringPyramid2, kStringPyramid3, kStringPyramid4, kStringPiece, kStringPyramid5, kStringPyramid6, diff --git a/engines/supernova2/rooms.cpp b/engines/supernova2/rooms.cpp index 925a936fd0..d788ad4589 100644 --- a/engines/supernova2/rooms.cpp +++ b/engines/supernova2/rooms.cpp @@ -4171,12 +4171,17 @@ Mus8::Mus8(Supernova2Engine *vm, GameManager *gm) { _vm = vm; _gm = gm; - _fileNumber = 6; + _fileNumber = 34; _id = MUS8; _shown[0] = kShownTrue; + _shown[12] = kShownTrue; + + _objectState[0] = Object(_id, kStringDoor, kStringDefaultDescription, DOOR, EXIT | OPENABLE, 0, 0, 1, MUS1, 10); + _objectState[1] = Object(_id, kStringDoor, kStringDefaultDescription, ENCRYPTED_DOOR, EXIT | OPENABLE | CLOSED | COMBINABLE, 1, 1, 2, MUS9, 14); } void Mus8::onEntrance() { + _gm->securityEntrance(); setRoomSeen(true); } @@ -4184,6 +4189,26 @@ void Mus8::animation() { } bool Mus8::interact(Action verb, Object &obj1, Object &obj2) { + _gm->museumDoorInteract(verb, obj1, obj2); + if (verb == ACTION_USE && + Object::combine(obj1, obj2, SP_KEYCARD, ENCRYPTED_DOOR) && + !(_objectState[1]._type & OPENED)) { + if (_gm->crackDoor(50)) { + _vm->renderImage(2); + _objectState[1]._type = EXIT | OPENABLE | OPENED; + _gm->_rooms[MUS9]->getObject(0)->_type = EXIT | OPENABLE | OPENED; + _gm->_rooms[MUS9]->setSectionVisible(1, kShownTrue); + _vm->playSound(kAudioTaxiOpen); + } + } else if (verb == ACTION_CLOSE && obj1._id == ENCRYPTED_DOOR && + (obj1._type & OPENED)) { + _vm->renderImage(2 + 128); + _objectState[1]._type = EXIT | OPENABLE | CLOSED; + _gm->_rooms[MUS9]->getObject(0)->_type = EXIT | OPENABLE | CLOSED; + _gm->_rooms[MUS9]->setSectionVisible(1, kShownFalse); + _vm->playSound(kAudioElevator1); + } else + return false; return true; } @@ -4191,12 +4216,19 @@ Mus9::Mus9(Supernova2Engine *vm, GameManager *gm) { _vm = vm; _gm = gm; - _fileNumber = 6; + _fileNumber = 34; _id = MUS9; _shown[0] = kShownTrue; + _shown[5] = kShownTrue; + _shown[10] = kShownTrue; + + _objectState[0] = Object(_id, kStringDoor, kStringDefaultDescription, ENCRYPTED_DOOR, EXIT | OPENABLE | CLOSED | COMBINABLE, 0, 0, 1, MUS8, 10); + _objectState[1] = Object(_id, kStringDoor, kStringDefaultDescription, DOOR, EXIT | OPENABLE, 1, 1, 2, MUS5, 14); + _objectState[2] = Object(_id, kStringDoor, kStringDefaultDescription, SMALL_DOOR, EXIT | OPENABLE | CLOSED, 3, 3, 0, MUS_RUND, 21); } void Mus9::onEntrance() { + _gm->securityEntrance(); setRoomSeen(true); } @@ -4204,6 +4236,43 @@ void Mus9::animation() { } bool Mus9::interact(Action verb, Object &obj1, Object &obj2) { + _gm->museumDoorInteract(verb, obj1, obj2); + if (verb == ACTION_USE && + Object::combine(obj1, obj2, SP_KEYCARD, ENCRYPTED_DOOR) && + !(_objectState[0]._type & OPENED)) { + if (_gm->crackDoor(50)) { + _vm->renderImage(1); + _objectState[0]._type = EXIT | OPENABLE | OPENED; + _gm->_rooms[MUS8]->getObject(1)->_type = EXIT | OPENABLE | OPENED; + _gm->_rooms[MUS8]->setSectionVisible(2, kShownTrue); + _vm->playSound(kAudioTaxiOpen); + } + } else if (verb == ACTION_CLOSE && obj1._id == ENCRYPTED_DOOR && + (obj1._type & OPENED)) { + _vm->renderImage(1 + 128); + _objectState[0]._type = EXIT | OPENABLE | CLOSED; + _gm->_rooms[MUS8]->getObject(1)->_type = EXIT | OPENABLE | CLOSED; + _gm->_rooms[MUS8]->setSectionVisible(2, kShownFalse); + _vm->playSound(kAudioElevator1); + } else if (verb == ACTION_USE && + Object::combine(obj1, obj2, SP_KEYCARD, SMALL_DOOR) && + !(_objectState[2]._type & OPENED)) { + if (_gm->crackDoor(50)) { + _vm->renderImage(6); + setSectionVisible(5, kShownFalse); + _objectState[2]._type = EXIT | OPENABLE | OPENED; + _gm->_rooms[MUS_RUND]->getObject(0)->_type = EXIT | OPENABLE | OPENED; + _vm->playSound(kAudioTaxiOpen); + } + } else if (verb == ACTION_CLOSE && obj1._id == SMALL_DOOR && + (obj1._type & OPENED)) { + _vm->renderImage(5); + setSectionVisible(6, kShownFalse); + _objectState[2]._type = EXIT | OPENABLE | CLOSED; + _gm->_rooms[MUS_RUND]->getObject(0)->_type = EXIT | OPENABLE | CLOSED; + _vm->playSound(kAudioElevator1); + } else + return false; return true; } @@ -4211,12 +4280,19 @@ Mus10::Mus10(Supernova2Engine *vm, GameManager *gm) { _vm = vm; _gm = gm; - _fileNumber = 6; + _fileNumber = 34; _id = MUS10; _shown[0] = kShownTrue; + _shown[11] = kShownTrue; + _shown[13] = kShownTrue; + + _objectState[0] = Object(_id, kStringDoor, kStringDefaultDescription, DOOR, EXIT | OPENABLE, 0, 0, 1, MUS3, 10); + _objectState[1] = Object(_id, kStringDoor, kStringDefaultDescription, DOOR, EXIT | OPENABLE, 1, 1, 2, MUS11, 14); + _objectState[2] = Object(_id, kStringMainEntrance, kStringDefaultDescription, BIG_DOOR, EXIT | OPENABLE | CLOSED, 4, 4, 0); } void Mus10::onEntrance() { + _gm->securityEntrance(); setRoomSeen(true); } @@ -4224,26 +4300,53 @@ void Mus10::animation() { } bool Mus10::interact(Action verb, Object &obj1, Object &obj2) { - return true; + _gm->museumDoorInteract(verb, obj1, obj2); + if (verb == ACTION_USE && Object::combine(obj1, obj2, SP_KEYCARD, BIG_DOOR)) { + _vm->renderMessage(kStringMuseum14); + return true; + } + return false; } Mus11::Mus11(Supernova2Engine *vm, GameManager *gm) { _vm = vm; _gm = gm; - _fileNumber = 6; + _fileNumber = 34; _id = MUS11; _shown[0] = kShownTrue; + _shown[4] = kShownTrue; + _shown[9] = kShownTrue; + + _objectState[0] = Object(_id, kStringDoor, kStringDefaultDescription, DOOR, EXIT | OPENABLE, 0, 0, 1, MUS10, 10); + _objectState[1] = Object(_id, kStringDoor, kStringDefaultDescription, DOOR, EXIT | OPENABLE, 1, 1, 2, MUS7, 14); + _objectState[2] = Object(_id, kStringDoor, kStringDefaultDescription, SMALL_DOOR, EXIT | OPENABLE, 2, 2, 0, MUS_ENTRANCE, 21); } void Mus11::onEntrance() { + _gm->pressureAlarmEntrance(); setRoomSeen(true); } void Mus11::animation() { + _gm->pressureAlarmCount(); } bool Mus11::interact(Action verb, Object &obj1, Object &obj2) { + _gm->museumDoorInteract(verb, obj1, obj2); + if (verb == ACTION_OPEN && obj1._id == SMALL_DOOR && !(obj1._type & OPENED)) { + obj1._type |= OPENED; + _vm->renderImage(4); + setSectionVisible(3, kShownFalse); + _vm->playSound(kAudioTaxiOpen); + } else if (verb == ACTION_CLOSE && obj1._id == SMALL_DOOR && + (obj1._type & OPENED)) { + obj1._type &= ~OPENED; + _vm->renderImage(3); + setSectionVisible(4, kShownFalse); + _vm->playSound(kAudioElevator1); + } else + return false; return true; } diff --git a/engines/supernova2/state.cpp b/engines/supernova2/state.cpp index 6309dab1da..a222af12db 100644 --- a/engines/supernova2/state.cpp +++ b/engines/supernova2/state.cpp @@ -1531,6 +1531,7 @@ void GameManager::handleInput() { void GameManager::executeRoom() { if (_currentRoom == _rooms[PUZZLE_FRONT]) puzzleConstruction(); + debug("Siren: %d Sound: %d", _state._sirenOn, _vm->_sound->isPlaying()); if (_state._sirenOn && !_vm->_sound->isPlaying()) _vm->_sound->playSiren(); if (_processInput && !_vm->_screen->isMessageShown() && _guiEnabled) { @@ -2063,7 +2064,7 @@ void GameManager::alarm() { if (_vm->_screen->isMessageShown()) _vm->removeMessage(); _vm->renderMessage(kStringMuseum7); - _state._eventTime = g_system->getMillis() + 270; + _state._eventTime = g_system->getMillis() + 18900; _state._eventCallback = kCaughtFn; _state._alarmOn = true; } |