aboutsummaryrefslogtreecommitdiff
path: root/engines/fullpipe
diff options
context:
space:
mode:
Diffstat (limited to 'engines/fullpipe')
-rw-r--r--engines/fullpipe/constants.h1
-rw-r--r--engines/fullpipe/scenes/scene32.cpp24
2 files changed, 24 insertions, 1 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 3df6ab33f3..aba3c613ee 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -1078,6 +1078,7 @@ namespace Fullpipe {
#define MV_FLG_STARTR 2263
#define MV_FLG_STOPL 2261
#define MV_FLG_STOPR 2265
+#define MV_MAN32_SITDOWN 2276
#define MV_MAN32_STANDUP 2313
#define MV_TSTG_FLOW 2663
#define MV_TSTO_FLOW 2657
diff --git a/engines/fullpipe/scenes/scene32.cpp b/engines/fullpipe/scenes/scene32.cpp
index b73dd99d7c..4b463c4d55 100644
--- a/engines/fullpipe/scenes/scene32.cpp
+++ b/engines/fullpipe/scenes/scene32.cpp
@@ -173,7 +173,29 @@ void sceneHandler32_startFlagRight() {
}
void sceneHandler32_trySit(ExCommand *cmd) {
- warning("STUB: sceneHandler32_trySit(cmd)");
+ MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(cmd->_parId);
+
+ if (!mq || !mq->getCount() <= 0)
+ return;
+
+ ExCommand *ex = mq->getExCommandByIndex(0);
+
+ if (g_vars->scene32_var10 || g_vars->scene32_cactus->_movement
+ || g_vars->scene32_cactus->_statics->_staticsId != ST_CTS_EMPTY
+ || (g_vars->scene32_var08 >= 0 && g_vars->scene32_var08 <= 20)) {
+ ex->_messageKind = 0;
+ ex->_excFlags |= 1;
+ } else {
+ ex->_parentId = ANI_MAN;
+ ex->_messageKind = 1;
+ ex->_messageNum = MV_MAN32_SITDOWN;
+ ex->_keyCode = g_fp->_aniMan->_okeyCode;
+
+ g_vars->scene32_var07 = 1;
+
+ getCurrSceneSc2MotionController()->clearEnabled();
+ getGameLoaderInteractionController()->disableFlag24();
+ }
}
void sceneHandler32_buttonPush() {