aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/fullpipe/constants.h1
-rw-r--r--engines/fullpipe/scenes/scene32.cpp16
2 files changed, 16 insertions, 1 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 532cfdcdeb..21ae1d927d 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -1087,6 +1087,7 @@ namespace Fullpipe {
#define QU_SC32_ENTERLIFT 2827
#define QU_SC32_EXITLIFT 2828
#define QU_SC32_FALLHANDLE 5351
+#define QU_SC32_FROMLADDER 4300
#define QU_SC32_SHOWHANDLE 2399
#define ST_BTN32_OFF 5349
#define ST_BTN32_ON 5350
diff --git a/engines/fullpipe/scenes/scene32.cpp b/engines/fullpipe/scenes/scene32.cpp
index 38a29d31c3..ac26cf452c 100644
--- a/engines/fullpipe/scenes/scene32.cpp
+++ b/engines/fullpipe/scenes/scene32.cpp
@@ -172,7 +172,21 @@ void sceneHandler32_animateCactus() {
}
void sceneHandler32_ladderLogic(ExCommand *cmd) {
- warning("STUB: sceneHandler32_ladderLogic(cmd)");
+ MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC32_FROMLADDER), 0, 0);
+
+ if (g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY) != PIC_SC32_LADDER)
+ mq->addExCommandToEnd(cmd->createClone());
+
+ mq->setFlags(mq->getFlags() | 1);
+
+ g_fp->_aniMan->changeStatics2(ST_MAN_STANDLADDER);
+ if (!mq->chain(g_fp->_aniMan))
+ delete mq;
+
+ g_vars->scene32_var09 = 0;
+
+ getCurrSceneSc2MotionController()->setEnabled();
+ getGameLoaderInteractionController()->enableFlag24();
}
void sceneHandler32_potLogic(ExCommand *cmd) {