aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorJaromir Wysoglad2019-06-10 10:18:21 +0200
committerThierry Crozat2019-07-28 15:09:14 +0100
commit48c84280cbe6e38a3023eede383cac5a6853e131 (patch)
tree5489db33ee050ae3a876bb010c883d9c24fd0b71 /engines
parentdf792b74d91429cd08381e495df9186e89a6de1d (diff)
downloadscummvm-rg350-48c84280cbe6e38a3023eede383cac5a6853e131.tar.gz
scummvm-rg350-48c84280cbe6e38a3023eede383cac5a6853e131.tar.bz2
scummvm-rg350-48c84280cbe6e38a3023eede383cac5a6853e131.zip
SUPERNOVA2: Add HoleRoom room
Diffstat (limited to 'engines')
-rw-r--r--engines/supernova2/ms2_def.h4
-rw-r--r--engines/supernova2/rooms.cpp30
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;
}