aboutsummaryrefslogtreecommitdiff
path: root/engines/supernova2/rooms.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/supernova2/rooms.cpp')
-rw-r--r--engines/supernova2/rooms.cpp42
1 files changed, 32 insertions, 10 deletions
diff --git a/engines/supernova2/rooms.cpp b/engines/supernova2/rooms.cpp
index e9fdae9f4d..46c391bf94 100644
--- a/engines/supernova2/rooms.cpp
+++ b/engines/supernova2/rooms.cpp
@@ -2370,7 +2370,7 @@ bool PyrEntrance::interact(Action verb, Object &obj1, Object &obj2) {
{1, 10, 7, 0, MONSTER2_N},
{0, 2, 4, 2, DOWNSTAIRS3},
{1, 2, 5, 0, UPSTAIRS3},
- {1, 2, 5, 3, LGANG1},
+ {1, 2, 5, 3, LCORRIDOR1},
{1, 1, 5, 1, LGANG2},
{1, 1, 5, 3, HOLE_ROOM},
{0, 7, 4, 0, BST_DOOR}
@@ -2878,6 +2878,8 @@ bool Formula1F::interact(Action verb, Object &obj1, Object &obj2) {
return false;
if (obj1._id == CORRIDOR)
_gm->changeRoom(FORMULA1_N);
+ else
+ _gm->passageConstruction();
_gm->_newRoom = true;
return true;
}
@@ -2939,6 +2941,8 @@ bool Formula2F::interact(Action verb, Object &obj1, Object &obj2) {
return false;
if (obj1._id == CORRIDOR)
_gm->changeRoom(FORMULA2_N);
+ else
+ _gm->passageConstruction();
_gm->_newRoom = true;
return true;
}
@@ -2999,6 +3003,8 @@ bool TomatoF::interact(Action verb, Object &obj1, Object &obj2) {
return false;
if (obj1._id == CORRIDOR)
_gm->changeRoom(TOMATO_N);
+ else
+ _gm->passageConstruction();
_gm->_newRoom = true;
return true;
}
@@ -3068,7 +3074,8 @@ bool MonsterF::interact(Action verb, Object &obj1, Object &obj2) {
_gm->changeRoom(MONSTER1_N);
else
_gm->changeRoom(MONSTER2_N);
- }
+ } else
+ _gm->passageConstruction();
_gm->_newRoom = true;
return true;
}
@@ -3228,7 +3235,7 @@ bool Upstairs3::interact(Action verb, Object &obj1, Object &obj2) {
_gm->_state._pyraE = 1;
}
if (obj1._id == G_LEFT)
- _gm->changeRoom(LGANG1);
+ _gm->changeRoom(LCORRIDOR1);
else
_gm->passageConstruction();
_gm->_newRoom = true;
@@ -3247,7 +3254,7 @@ Downstairs3::Downstairs3(Supernova2Engine *vm, GameManager *gm) {
_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, 0, 0, 0, PYR_ENTRANCE, 2);
+ _objectState[2] = Object(_id, kStringCorridor, kStringDefaultDescription, CORRIDOR, EXIT, 3, 3, 0, PYR_ENTRANCE, 2);
}
void Downstairs3::onEntrance() {
@@ -3271,23 +3278,38 @@ bool Downstairs3::interact(Action verb, Object &obj1, Object &obj2) {
return true;
}
-LGang1::LGang1(Supernova2Engine *vm, GameManager *gm) {
+LCorridor1::LCorridor1(Supernova2Engine *vm, GameManager *gm) {
_vm = vm;
_gm = gm;
- _fileNumber = 6;
- _id = LGANG1;
+ _fileNumber = 9;
+ _id = LCORRIDOR1;
_shown[0] = kShownTrue;
+ _shown[2] = kShownTrue;
+ _shown[17] = 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, 6, 6, 0, PYR_ENTRANCE, 2);
}
-void LGang1::onEntrance() {
+void LCorridor1::onEntrance() {
setRoomSeen(true);
}
-void LGang1::animation() {
+void LCorridor1::animation() {
}
-bool LGang1::interact(Action verb, Object &obj1, Object &obj2) {
+bool LCorridor1::interact(Action verb, Object &obj1, Object &obj2) {
+ if (!_gm->move(verb, obj1))
+ return false;
+ if (obj1._id == G_RIGHT)
+ _gm->changeRoom(UPSTAIRS3);
+ else if (obj1._id == CORRIDOR)
+ _gm->changeRoom(HOLE_ROOM);
+ else
+ _gm->passageConstruction();
+ _gm->_newRoom = true;
return true;
}