aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorJaromir Wysoglad2019-06-10 11:23:21 +0200
committerThierry Crozat2019-07-28 15:09:14 +0100
commit6744c0b4b172b2b61ff31959f61edb06476e0465 (patch)
treed9d729e17a595d1366ad0324e0b4f519a0ad2ea8 /engines
parent9c1eba6bd6a785709ceb7d980ef239ba803e0f04 (diff)
downloadscummvm-rg350-6744c0b4b172b2b61ff31959f61edb06476e0465.tar.gz
scummvm-rg350-6744c0b4b172b2b61ff31959f61edb06476e0465.tar.bz2
scummvm-rg350-6744c0b4b172b2b61ff31959f61edb06476e0465.zip
SUPERNOVA2: Add FloordoorU room
Diffstat (limited to 'engines')
-rw-r--r--engines/supernova2/ms2_def.h2
-rw-r--r--engines/supernova2/rooms.cpp29
2 files changed, 29 insertions, 2 deletions
diff --git a/engines/supernova2/ms2_def.h b/engines/supernova2/ms2_def.h
index f74e2848ea..280770bdd8 100644
--- a/engines/supernova2/ms2_def.h
+++ b/engines/supernova2/ms2_def.h
@@ -159,7 +159,7 @@ kStringRight, kStringLeft, kStringButton, kStringInscription, kStringTomato,
kStringFunnyDescription, kStringKnife1, kStringKnife1Description, kStringMonster, kStringRopeDescription,
kStringEyes, kStringMouth, kStringMonster1Description, kStringNote, kStringNoteDescription,
kStringOpeningDescription1, kStringOpeningDescription2, kStringNoteDescription1, kStringSlot, kStringSlotDescription3,
-kStringOpeningDescription3, kStringStones, kString167, kString168, kStringExit,
+kStringOpeningDescription3, kStringStones, kStringPlate, kString168, kStringExit,
kString170, kStringToothbrush, kString172, kString173, kString174,
kString175, kString176, kString177, kStringDefaultDescription, kStringLooksMetal,
kStringTaxiArrives, kStringNothingHappens, kStringEmpty, kStringWalletOpen, kStringAttachMagnet,
diff --git a/engines/supernova2/rooms.cpp b/engines/supernova2/rooms.cpp
index e095ab7acf..c991474ee5 100644
--- a/engines/supernova2/rooms.cpp
+++ b/engines/supernova2/rooms.cpp
@@ -3516,9 +3516,18 @@ FloordoorU::FloordoorU(Supernova2Engine *vm, GameManager *gm) {
_vm = vm;
_gm = gm;
- _fileNumber = 6;
+ _fileNumber = 14;
_id = FLOORDOOR_U;
_shown[0] = kShownTrue;
+ _shown[12] = kShownTrue;
+ _shown[13] = 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, kStringRope, kStringDefaultDescription, ROPE, NULLTYPE, 10, 10, 0, FLOORDOOR, 2);
+ _objectState[3] = Object(_id, kStringOpening, kStringDefaultDescription, HOLE, EXIT, 8, 8, 0, FLOORDOOR, 2);
+ _objectState[4] = Object(_id, kStringPlate, kStringDefaultDescription, NULLOBJECT, NULLTYPE, 9, 9, 0);
}
void FloordoorU::onEntrance() {
@@ -3529,6 +3538,24 @@ void FloordoorU::animation() {
}
bool FloordoorU::interact(Action verb, Object &obj1, Object &obj2) {
+ if (_gm->move(verb, obj1)) {
+ _gm->passageConstruction();
+ _gm->_newRoom = true;
+ } else if (verb == ACTION_WALK && obj1._id == HOLE) {
+ _gm->_state._pyraZ = 6;
+ _gm->_state._pyraDirection = 0;
+ _gm->_state._pyraE = 1;
+ return false;
+ } else if (verb == ACTION_USE && obj1._id == ROPE) {
+ _gm->_state._pyraZ = 6;
+ _gm->_state._pyraDirection = 0;
+ _gm->_state._pyraE = 1;
+ _gm->changeRoom(FLOORDOOR);
+ _gm->_newRoom = true;
+ } else if (verb == ACTION_TAKE && obj1._id == ROPE) {
+ _vm->renderMessage(kStringPyramid9);
+ } else
+ return false;
return true;
}