aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/fullpipe/constants.h2
-rw-r--r--engines/fullpipe/scenes/scene23.cpp28
2 files changed, 25 insertions, 5 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index a8d3de986a..0d40f2981f 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -815,7 +815,9 @@ namespace Fullpipe {
#define PIC_SC23_LADDERU 3411
#define QU_GRFU_TURN_UD 1664
#define QU_GRFU_TURN_UL 1662
+#define QU_SC23_FROMCALENDAR 1734
#define QU_SC23_FROMCALENDAREXIT 1735
+#define QU_SC23_FROMSTOOL 3338
#define QU_SC23_SHOWSTOOL 3335
#define QU_SC23_STARTKISS 1822
#define ST_CND_0 1704
diff --git a/engines/fullpipe/scenes/scene23.cpp b/engines/fullpipe/scenes/scene23.cpp
index ed51e2638e..e703588e9d 100644
--- a/engines/fullpipe/scenes/scene23.cpp
+++ b/engines/fullpipe/scenes/scene23.cpp
@@ -330,18 +330,36 @@ void sceneHandler23_checkReachingTop() {
void sceneHandler23_exitCalendar() {
if (!g_fp->_aniMan->_movement && g_fp->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER
- && !g_fp->_aniMan->getMessageQueue() && !(g_fp->_aniMan->_flags & 0x100) ) {
+ && !g_fp->_aniMan->getMessageQueue() && !(g_fp->_aniMan->_flags & 0x100)) {
chainQueue(QU_SC23_FROMCALENDAREXIT, 1);
g_vars->scene23_var07 = 2;
}
}
-void sceneHandler23_lowerFromCalendar(ExCommand *cmd) {
- warning("STUB: sceneHandler23_lowerFromCalendar(cmd)");
+void sceneHandler23_fromCalendar(ExCommand *cmd) {
+ if (!g_fp->_aniMan->_movement && g_fp->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER
+ && !g_fp->_aniMan->getMessageQueue() && !(g_fp->_aniMan->_flags & 0x100)) {
+ MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC23_FROMCALENDAR), 0, 0);
+
+ mq->addExCommandToEnd(cmd->createClone());
+ mq->setFlags(mq->getFlags() | 1);
+ mq->chain(0);
+
+ g_vars->scene23_var05 = 0;
+ g_vars->scene23_var07 = 0;
+ }
}
void sceneHandler23_fromStool(ExCommand *cmd) {
- warning("STUB: sceneHandler23_fromStool(cmd)");
+ if (!g_fp->_aniMan->getMessageQueue() && !(g_fp->_aniMan->_flags & 0x100)) {
+ MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC23_FROMSTOOL), 0, 0);
+
+ mq->addExCommandToEnd(cmd->createClone());
+ mq->setFlags(mq->getFlags() | 1);
+ mq->chain(0);
+
+ cmd->_messageKind = 0;
+ }
}
int sceneHandler23(ExCommand *cmd) {
@@ -444,7 +462,7 @@ int sceneHandler23(ExCommand *cmd) {
}
if (cmd->_sceneClickY > 450) {
- sceneHandler23_lowerFromCalendar(cmd);
+ sceneHandler23_fromCalendar(cmd);
cmd->_messageKind = 0;
break;