diff options
-rw-r--r-- | engines/fullpipe/constants.h | 2 | ||||
-rw-r--r-- | engines/fullpipe/scenes/scene25.cpp | 25 |
2 files changed, 24 insertions, 3 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 92f2f3ccbe..3eb636476e 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -876,6 +876,7 @@ namespace Fullpipe { #define MSG_SC25_STARTBEARDEDS 3423 #define MSG_SC25_STOPBEARDEDS 3424 #define MSG_SC25_TOLADDER 4215 +#define MV_MAN_GOLADDERDOWN 455 #define MV_MAN25_CHIH 1886 #define rMV_MAN25_CHIH 3343 #define MV_BRD25_RIGHT 1899 @@ -920,6 +921,7 @@ namespace Fullpipe { #define ST_BRD25_RIGHT2 1902 #define ST_BRDCMN_EMPTY 3422 #define ST_DRP25_EMPTY 3501 +#define ST_MAN_GOLADDERD 456 #define ST_MAN_LADDERDOWN_R 3419 #define ST_MAN25_ONBOARD 1879 diff --git a/engines/fullpipe/scenes/scene25.cpp b/engines/fullpipe/scenes/scene25.cpp index 6a0b92c6cf..6e22d5a6a9 100644 --- a/engines/fullpipe/scenes/scene25.cpp +++ b/engines/fullpipe/scenes/scene25.cpp @@ -438,14 +438,33 @@ void sceneHandler25_backToPipe() { } } -void sceneHandler25_sub01() { +void sceneHandler25_sub01(StaticANIObject *ani, Common::Point *pnt, MessageQueue *mq, int flag) { warning("STUB: sceneHandler25_sub01()"); } bool sceneHandler25_sub02(ExCommand *cmd) { - warning("STUB: sceneHandler25_sub02()"); + if ((g_fp->_aniMan->_movement && g_fp->_aniMan->_movement->_id == MV_MAN_GOLADDERDOWN) + || g_fp->_aniMan->_statics->_staticsId == ST_MAN_GOLADDERD) { + Interaction *inter = getGameLoaderInteractionController()->getInteractionByObjectIds(PIC_SC25_LADDERDOWN, ANI_MAN, cmd->_keyCode); - return false; + if (!inter) + return 0; + + MessageQueue *mq = new MessageQueue(inter->_messageQueue, 0, 1); + PictureObject *pic = g_fp->_currentScene->getPictureObjectById(PIC_SC25_LADDERDOWN, 0); + Common::Point point; + + point.x = inter->_xOffs + pic->_ox; + point.y = inter->_yOffs + pic->_oy; + + mq->setFlags(mq->getFlags() | 1); + + sceneHandler25_sub01(g_fp->_aniMan, &point, mq, 0); + + return true; + } else { + return false; + } } void sceneHandler25_sub03() { |