aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorJaromir Wysoglad2019-06-07 13:44:28 +0200
committerThierry Crozat2019-07-28 15:09:14 +0100
commitc8b900bd4a9d4f230e18a4db94c888a211690ae1 (patch)
treebe1d13f391f576d517850a3ad3843baa8173a2b5 /engines
parent277b4eeac70caf59af64c792d2dbb06f88313f4d (diff)
downloadscummvm-rg350-c8b900bd4a9d4f230e18a4db94c888a211690ae1.tar.gz
scummvm-rg350-c8b900bd4a9d4f230e18a4db94c888a211690ae1.tar.bz2
scummvm-rg350-c8b900bd4a9d4f230e18a4db94c888a211690ae1.zip
SUPERNOVA2: Add UpperDoor room
Diffstat (limited to 'engines')
-rw-r--r--engines/supernova2/rooms.cpp32
1 files changed, 30 insertions, 2 deletions
diff --git a/engines/supernova2/rooms.cpp b/engines/supernova2/rooms.cpp
index 4a9a2a2e53..eff6a4d602 100644
--- a/engines/supernova2/rooms.cpp
+++ b/engines/supernova2/rooms.cpp
@@ -2640,9 +2640,15 @@ Downstairs2::Downstairs2(Supernova2Engine *vm, GameManager *gm) {
_vm = vm;
_gm = gm;
- _fileNumber = 6;
+ _fileNumber = 10;
_id = DOWNSTAIRS2;
_shown[0] = kShownTrue;
+ _shown[1] = kShownTrue;
+ _shown[3] = kShownTrue;
+
+ _objectState[0] = Object(_id, kStringRight, kStringDefaultDescription, G_RIGHT, EXIT, 1, 1, 0, PYR_ENTRANCE, 14);
+ _objectState[1] = Object(_id, kStringLeft, kStringDefaultDescription, G_LEFT, EXIT, 2, 2, 0, PYR_ENTRANCE, 10);
+ _objectState[2] = Object(_id, kStringCorridor, kStringDefaultDescription, CORRIDOR, EXIT, 3, 3, 0, PYR_ENTRANCE, 2);
}
void Downstairs2::onEntrance() {
@@ -2653,6 +2659,17 @@ void Downstairs2::animation() {
}
bool Downstairs2::interact(Action verb, Object &obj1, Object &obj2) {
+ if (!_gm->move(verb, obj1))
+ return false;
+ if (obj1._id == CORRIDOR) {
+ if (_gm->_state._pyraE)
+ _gm->_state._pyraE = 0;
+ else
+ _gm->_state._pyraE = 1;
+ }
+ _gm->passageConstruction();
+ _gm->_newRoom = true;
+ return true;
return true;
}
@@ -2660,9 +2677,16 @@ UpperDoor::UpperDoor(Supernova2Engine *vm, GameManager *gm) {
_vm = vm;
_gm = gm;
- _fileNumber = 6;
+ _fileNumber = 12;
_id = UPPER_DOOR;
_shown[0] = kShownTrue;
+ _shown[26] = kShownTrue;
+ _shown[27] = kShownTrue;
+ _shown[30] = kShownTrue;
+
+ _objectState[0] = Object(_id, kStringRight, kStringDefaultDescription, G_RIGHT, EXIT, 1, 1, 0, PYR_ENTRANCE, 14);
+ _objectState[1] = Object(_id, kStringLeft, kStringDefaultDescription, G_LEFT, EXIT, 2, 2, 0, PYR_ENTRANCE, 10);
+ _objectState[2] = Object(_id, kStringDoor, kStringDefaultDescription, CORRIDOR, EXIT, 0, 0, 0, PYR_ENTRANCE, 2);
}
void UpperDoor::onEntrance() {
@@ -2673,6 +2697,10 @@ void UpperDoor::animation() {
}
bool UpperDoor::interact(Action verb, Object &obj1, Object &obj2) {
+ if (!_gm->move(verb, obj1))
+ return false;
+ _gm->passageConstruction();
+ _gm->_newRoom = true;
return true;
}