diff options
author | Jaromir Wysoglad | 2019-06-10 12:22:05 +0200 |
---|---|---|
committer | Thierry Crozat | 2019-07-28 15:09:14 +0100 |
commit | 13c6b96305e83d2961a1486a8741f15994758956 (patch) | |
tree | e6cb59a74d6f03ea3e5bf8e1b8088af8d0801011 | |
parent | f5afd19df763c8380855d1175c53408ad085286e (diff) | |
download | scummvm-rg350-13c6b96305e83d2961a1486a8741f15994758956.tar.gz scummvm-rg350-13c6b96305e83d2961a1486a8741f15994758956.tar.bz2 scummvm-rg350-13c6b96305e83d2961a1486a8741f15994758956.zip |
SUPERNOVA2: Add CoffinRoom room
-rw-r--r-- | engines/supernova2/ms2_def.h | 6 | ||||
-rw-r--r-- | engines/supernova2/rooms.cpp | 50 |
2 files changed, 52 insertions, 4 deletions
diff --git a/engines/supernova2/ms2_def.h b/engines/supernova2/ms2_def.h index 0a60205aae..e82985989a 100644 --- a/engines/supernova2/ms2_def.h +++ b/engines/supernova2/ms2_def.h @@ -151,7 +151,7 @@ kString105, kStringSuctionCup, kString107, kStringOpening, kStringLetter, kStringMassive, kStringInscriptionDescription, kStringPyramid0, kStringPyramid1, kStringPyramid2, kStringPyramid3, kStringPyramid4, kStringPiece, kStringPyramid5, kStringPyramid6, kStringPyramid7, kStringPyramid8, kStringPyramid9, kStringPyramid10, kStringPyramid11, -kStringPyramid12, kString126, kString127, kString128, kString129, +kStringPyramid12, kStringPyramid13, kStringPyramid14, kStringPyramid15, kString129, kString130, kString131, kStringDirection1, kStringDirection2, kStringDirection3, kStringDirection4, kStringRope, kStringSign, kStringSignDescription, kStringEntrance1Description, kStringPyramid, kStringPyramidDescription, kStringSun, kStringSunDescription, kStringSign5Description, @@ -160,8 +160,8 @@ kStringFunnyDescription, kStringKnife1, kStringKnife1Description, kStringMonster kStringEyes, kStringMouth, kStringMonster1Description, kStringNote, kStringNoteDescription, kStringOpeningDescription1, kStringOpeningDescription2, kStringNoteDescription1, kStringSlot, kStringSlotDescription3, kStringOpeningDescription3, kStringStones, kStringPlate, kStringCoffin, kStringExit, -kString170, kStringToothbrush, kString172, kString173, kString174, -kString175, kString176, kString177, kStringDefaultDescription, kStringLooksMetal, +kStringCreepy, kStringToothbrush, kStringToothbrushDescription1, kStringToothpaste, kStringBall, +kStringBallDescription, kString176, kString177, kStringDefaultDescription, kStringLooksMetal, kStringTaxiArrives, kStringNothingHappens, kStringEmpty, kStringWalletOpen, kStringAttachMagnet, kStringPoleMagnet, kStringCunning, kStringMustBuyFirst, kStringInsertChip, kStringTransferCD, kStringCDNotInserted, kStringRemoveChip, kStringChipNotInserted, kStringWhatFor, kStringMMCD, diff --git a/engines/supernova2/rooms.cpp b/engines/supernova2/rooms.cpp index 6d4e0e5e19..60d96d6a44 100644 --- a/engines/supernova2/rooms.cpp +++ b/engines/supernova2/rooms.cpp @@ -3661,9 +3661,16 @@ CoffinRoom::CoffinRoom(Supernova2Engine *vm, GameManager *gm) { _vm = vm; _gm = gm; - _fileNumber = 6; + _fileNumber = 17; _id = COFFIN_ROOM; _shown[0] = kShownTrue; + + _objectState[0] = Object(_id, kStringExit, kStringDefaultDescription, NULLOBJECT, EXIT, 255, 255, 0, HALL, 22); + _objectState[1] = Object(_id, kStringCoffin, kStringCreepy, COFFIN, NULLTYPE, 0, 0, 0); + _objectState[2] = Object(_id, kStringToothbrush, kStringToothbrushDescription1, NULLOBJECT, NULLTYPE, 1, 1, 0); + _objectState[3] = Object(_id, kStringToothpaste, kStringToothbrushDescription1, NULLOBJECT, NULLTYPE, 2, 2, 0); + _objectState[4] = Object(_id, kStringBall, kStringBallDescription, L_BALL, NULLTYPE, 3, 3, 0); + _objectState[5] = Object(_id, kStringBall, kStringBallDescription, R_BALL, NULLTYPE, 3, 3, 0); } void CoffinRoom::onEntrance() { @@ -3674,6 +3681,47 @@ void CoffinRoom::animation() { } bool CoffinRoom::interact(Action verb, Object &obj1, Object &obj2) { + char change; + if (verb == ACTION_OPEN && obj1._id == COFFIN && !isSectionVisible(1)) { + _vm->renderMessage(kStringPyramid13); + } else if (verb == ACTION_PRESS && (obj1._id == L_BALL || obj1._id == R_BALL)) { + if (obj1._id == L_BALL) { + if ((change = !isSectionVisible(2))) { + _vm->renderImage(2); + _vm->playSound(kAudioTaxiOpen); + } else + _vm->renderMessage(kStringPyramid14); + } else { + if ((change = !isSectionVisible(3))) { + _vm->renderImage(3); + _vm->playSound(kAudioTaxiOpen); + } else + _vm->renderMessage(kStringPyramid14); + } if (change) { + if (isSectionVisible(2) && isSectionVisible(3)) { + _vm->playSound(kAudioShip2); + _vm->renderImage(4); + _gm->wait(4); + _vm->renderImage(5); + _gm->wait(4); + _vm->renderImage(5); + _gm->wait(4); + _vm->renderImage(5); + _gm->wait(4); + _vm->renderImage(1); + setSectionVisible(4, kShownFalse); + setSectionVisible(5, kShownFalse); + setSectionVisible(6, kShownFalse); + setSectionVisible(7, kShownFalse); + } + else + _vm->renderMessage(kStringPyramid15); + } + } else if (verb == ACTION_LOOK && obj1._id == COFFIN && isSectionVisible(1)) { + _gm->changeRoom(MASK); + _gm->_newRoom = true; + } else + return false; return true; } |