aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaromir Wysoglad2019-06-10 07:38:09 +0200
committerThierry Crozat2019-07-28 15:09:14 +0100
commit3524c4fc1f822e241d52c92c6e54a7e652bdfd85 (patch)
tree6d897e3349750766a68cc61319fb11b4afa972a8
parentd40d52cb2fd9c520044794606c3349157a94a381 (diff)
downloadscummvm-rg350-3524c4fc1f822e241d52c92c6e54a7e652bdfd85.tar.gz
scummvm-rg350-3524c4fc1f822e241d52c92c6e54a7e652bdfd85.tar.bz2
scummvm-rg350-3524c4fc1f822e241d52c92c6e54a7e652bdfd85.zip
SUPERNOVA2: Add BehindPuzzle and Formula1F rooms
-rw-r--r--engines/supernova2/ms2_def.h4
-rw-r--r--engines/supernova2/rooms.cpp26
2 files changed, 26 insertions, 4 deletions
diff --git a/engines/supernova2/ms2_def.h b/engines/supernova2/ms2_def.h
index 56635b3643..6e0fc98135 100644
--- a/engines/supernova2/ms2_def.h
+++ b/engines/supernova2/ms2_def.h
@@ -148,14 +148,14 @@ kString90, kString91, kString92, kString93, kString94,
kStringEntrance, kStringDoor, kString97, kString98, kString99,
kString100, kStringCorridor, kString102, kStringDinosaurHead, kString104,
kString105, kStringSuctionCup, kString107, kStringOpening, kString109,
-kStringMassive, kString111, kStringPyramid0, kStringPyramid1, kStringPyramid2,
+kStringMassive, kStringInscriptionDescription, kStringPyramid0, kStringPyramid1, kStringPyramid2,
kStringPyramid3, kStringPyramid4, kStringPiece, kStringPyramid5, kString119,
kString120, kString121, kString122, kString123, kString124,
kString125, kString126, kString127, kString128, kString129,
kString130, kString131, kStringDirection1, kStringDirection2, kStringDirection3,
kStringDirection4, kStringRope, kStringSign, kStringSignDescription, kStringEntrance1Description,
kStringPyramid, kStringPyramidDescription, kStringSun, kStringSunDescription, kStringSign5Description,
-kStringRight, kStringLeft, kStringButton, kString148, kString149,
+kStringRight, kStringLeft, kStringButton, kStringInscription, kString149,
kString150, kString151, kString152, kString153, kString154,
kString155, kString156, kString157, kString158, kString159,
kString160, kString161, kString162, kStringSlot, kString164,
diff --git a/engines/supernova2/rooms.cpp b/engines/supernova2/rooms.cpp
index 1c2311b4ca..57ec3b8e19 100644
--- a/engines/supernova2/rooms.cpp
+++ b/engines/supernova2/rooms.cpp
@@ -2825,9 +2825,15 @@ PuzzleBehind::PuzzleBehind(Supernova2Engine *vm, GameManager *gm) {
_vm = vm;
_gm = gm;
- _fileNumber = 6;
+ _fileNumber = 12;
_id = PUZZLE_BEHIND;
_shown[0] = kShownTrue;
+ _shown[29] = kShownTrue;
+ _shown[31] = 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, kStringMassive, DOOR, EXIT | OPENABLE | CLOSED, 0, 0, 0, PYR_ENTRANCE, 2);
}
void PuzzleBehind::onEntrance() {
@@ -2838,6 +2844,10 @@ void PuzzleBehind::animation() {
}
bool PuzzleBehind::interact(Action verb, Object &obj1, Object &obj2) {
+ if (!_gm->move(verb, obj1))
+ return false;
+ _gm->passageConstruction();
+ _gm->_newRoom = true;
return true;
}
@@ -2845,9 +2855,15 @@ Formula1F::Formula1F(Supernova2Engine *vm, GameManager *gm) {
_vm = vm;
_gm = gm;
- _fileNumber = 6;
+ _fileNumber = 14;
_id = FORMULA1_F;
_shown[0] = kShownTrue;
+ _shown[2] = kShownTrue;
+ _shown[15] = kShownTrue;
+
+ _objectState[0] = Object(_id, kStringRight, kStringDefaultDescription, G_RIGHT, EXIT, 12, 12, 0, PYR_ENTRANCE, 14);
+ _objectState[1] = Object(_id, kStringLeft, kStringDefaultDescription, G_LEFT, EXIT, 11, 11, 0, PYR_ENTRANCE, 10);
+ _objectState[2] = Object(_id, kStringInscription, kStringInscriptionDescription, DOOR, EXIT, 1, 1, 0, PYR_ENTRANCE, 2);
}
void Formula1F::onEntrance() {
@@ -2858,6 +2874,12 @@ void Formula1F::animation() {
}
bool Formula1F::interact(Action verb, Object &obj1, Object &obj2) {
+ if (!_gm->move(verb, obj1))
+ return false;
+ if (obj1._id == CORRIDOR)
+ _gm->changeRoom(FORMULA1_N);
+ _gm->passageConstruction();
+ _gm->_newRoom = true;
return true;
}