diff options
-rw-r--r-- | engines/fullpipe/constants.h | 5 | ||||
-rw-r--r-- | engines/fullpipe/scenes/scene28.cpp | 26 |
2 files changed, 30 insertions, 1 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 50ca12bcdf..6d05ecc352 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -1005,6 +1005,11 @@ namespace Fullpipe { #define MSG_SC28_TURNON_3 4274 #define MSG_SC28_TURNON_4 4281 #define MSG_SC28_TURNON_6 4272 +#define MV_WMN28_IN_1 3443 +#define MV_WMN28_IN_2 3445 +#define MV_WMN28_IN_3 3446 +#define MV_WMN28_IN_4 3447 +#define MV_WMN28_IN_5 3448 #define PIC_SC28_DARK0 4675 #define PIC_SC28_DARK1 4266 #define PIC_SC28_DARK2 4267 diff --git a/engines/fullpipe/scenes/scene28.cpp b/engines/fullpipe/scenes/scene28.cpp index b6031f2c99..9165953d06 100644 --- a/engines/fullpipe/scenes/scene28.cpp +++ b/engines/fullpipe/scenes/scene28.cpp @@ -73,7 +73,31 @@ void sceneHandler28_lift1ShowAfter() { } void sceneHandler28_makeFaces(ExCommand *cmd) { - warning("STUB: sceneHandler28_makeFaces()"); + g_fp->_currentScene->getPictureObjectById(PIC_SC28_DARK4, 0)->_flags &= 0xFFFB; + + g_vars->scene28_var08 = 0; + + MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(cmd->_parId); + if (mq) { + int frames[5]; + + frames[0] = MV_WMN28_IN_1; + frames[1] = MV_WMN28_IN_2; + frames[2] = MV_WMN28_IN_3; + frames[3] = MV_WMN28_IN_4; + frames[4] = MV_WMN28_IN_5; + + for (int i = 0; i < 5; i++) { + int pos; + + while (frames[pos = g_fp->_rnd->getRandomNumber(4)] == 0) + ; + + mq->getExCommandByIndex(i)->_messageNum = frames[pos]; + + frames[pos] = 0; + } + } } void sceneHandler28_trySecondaryPers() { |