diff options
author | Jaromir Wysoglad | 2019-06-10 10:18:21 +0200 |
---|---|---|
committer | Thierry Crozat | 2019-07-28 15:09:14 +0100 |
commit | 48c84280cbe6e38a3023eede383cac5a6853e131 (patch) | |
tree | 5489db33ee050ae3a876bb010c883d9c24fd0b71 | |
parent | df792b74d91429cd08381e495df9186e89a6de1d (diff) | |
download | scummvm-rg350-48c84280cbe6e38a3023eede383cac5a6853e131.tar.gz scummvm-rg350-48c84280cbe6e38a3023eede383cac5a6853e131.tar.bz2 scummvm-rg350-48c84280cbe6e38a3023eede383cac5a6853e131.zip |
SUPERNOVA2: Add HoleRoom room
-rw-r--r-- | engines/supernova2/ms2_def.h | 4 | ||||
-rw-r--r-- | engines/supernova2/rooms.cpp | 30 |
2 files changed, 31 insertions, 3 deletions
diff --git a/engines/supernova2/ms2_def.h b/engines/supernova2/ms2_def.h index fc1a745f62..3d2f801b69 100644 --- a/engines/supernova2/ms2_def.h +++ b/engines/supernova2/ms2_def.h @@ -150,7 +150,7 @@ kString100, kStringCorridor, kString102, kStringDinosaurHead, kString104, kString105, kStringSuctionCup, kString107, kStringOpening, kString109, kStringMassive, kStringInscriptionDescription, kStringPyramid0, kStringPyramid1, kStringPyramid2, kStringPyramid3, kStringPyramid4, kStringPiece, kStringPyramid5, kStringPyramid6, -kString120, kString121, kString122, kString123, kString124, +kStringPyramid7, kStringPyramid8, kStringPyramid9, kStringPyramid10, kString124, kString125, kString126, kString127, kString128, kString129, kString130, kString131, kStringDirection1, kStringDirection2, kStringDirection3, kStringDirection4, kStringRope, kStringSign, kStringSignDescription, kStringEntrance1Description, @@ -158,7 +158,7 @@ kStringPyramid, kStringPyramidDescription, kStringSun, kStringSunDescription, kS kStringRight, kStringLeft, kStringButton, kStringInscription, kStringTomato, kStringFunnyDescription, kStringKnife1, kStringKnife1Description, kStringMonster, kStringRopeDescription, kStringEyes, kStringMouth, kStringMonster1Description, kStringNote, kStringNoteDescription, -kString160, kString161, kString162, kStringSlot, kString164, +kStringOpeningDescription1, kStringOpeningDescription2, kString162, kStringSlot, kString164, kString165, kString166, kString167, kString168, kStringExit, kString170, kStringToothbrush, kString172, kString173, kString174, kString175, kString176, kString177, kStringDefaultDescription, kStringLooksMetal, diff --git a/engines/supernova2/rooms.cpp b/engines/supernova2/rooms.cpp index ea1c1c33ce..f604068c40 100644 --- a/engines/supernova2/rooms.cpp +++ b/engines/supernova2/rooms.cpp @@ -3346,9 +3346,17 @@ HoleRoom::HoleRoom(Supernova2Engine *vm, GameManager *gm) { _vm = vm; _gm = gm; - _fileNumber = 6; + _fileNumber = 9; _id = HOLE_ROOM; _shown[0] = kShownTrue; + _shown[8] = kShownTrue; + _shown[15] = 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, kStringRope, kStringDefaultDescription, ROPE, NULLTYPE, 255, 255, 0); + _objectState[3] = Object(_id, kStringOpening, kStringOpeningDescription1, HOLE, EXIT, 3, 3, 0, IN_HOLE, 12); + _objectState[4] = Object(_id, kStringOpening, kStringOpeningDescription2, NULLOBJECT, NULLTYPE, 4, 4, 0); } void HoleRoom::onEntrance() { @@ -3359,6 +3367,26 @@ void HoleRoom::animation() { } bool HoleRoom::interact(Action verb, Object &obj1, Object &obj2) { + if (_gm->move(verb, obj1)) { + _gm->passageConstruction(); + _gm->_newRoom = true; + } else if (verb == ACTION_USE && + (Object::combine(obj1, obj2, ROPE, G_RIGHT) || + Object::combine(obj1, obj2, ROPE, G_LEFT))) { + _vm->renderMessage(kStringPyramid7); + } else if (verb == ACTION_USE && + (Object::combine(obj1, obj2, TKNIFE, G_RIGHT) || + Object::combine(obj1, obj2, TKNIFE, G_LEFT))) { + _vm->renderMessage(kStringPyramid8); + } else if (verb == ACTION_TAKE && obj1._id == ROPE && !(obj1._type & CARRIED)) { + _vm->renderMessage(kStringPyramid9); + } else if (verb == ACTION_WALK && obj1._id == HOLE && !isSectionVisible(16)) { + _vm->renderMessage(kStringPyramid10); + } else if (verb == ACTION_USE && obj1._id == ROPE && isSectionVisible(16)) { + _gm->changeRoom(IN_HOLE); + _gm->_newRoom = true; + } else + return false; return true; } |