aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/fullpipe/constants.h2
-rw-r--r--engines/fullpipe/scenes/scene25.cpp25
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() {