aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/fullpipe/constants.h2
-rw-r--r--engines/fullpipe/scenes/scene25.cpp41
2 files changed, 38 insertions, 5 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 0b1aae7207..15de01e8cf 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -883,10 +883,12 @@ namespace Fullpipe {
#define PIC_SC25_RTRUBA 1853
#define QU_DRP25_TOFLOOR 3502
#define QU_DRP25_TOWATER 3504
+#define QU_SC25_BACKTOLADDER 1955
#define QU_SC25_BACKTOTRUBA 2061
#define QU_SC25_BEARDED 3425
#define QU_SC25_BEARDED2 3426
#define QU_SC25_BEARDED3 3427
+#define QU_SC25_BOARDTOLADDER 1911
#define QU_SC25_ENTERUP_FLOOR 1904
#define QU_SC25_ENTERUP_WATER 1895
#define QU_SC25_LADDERUP 1925
diff --git a/engines/fullpipe/scenes/scene25.cpp b/engines/fullpipe/scenes/scene25.cpp
index 83ff7e5649..ad2ca5abb3 100644
--- a/engines/fullpipe/scenes/scene25.cpp
+++ b/engines/fullpipe/scenes/scene25.cpp
@@ -177,8 +177,43 @@ void sceneHandler25_enterTruba() {
}
}
+void sceneHandler25_saveEntrance(int value) {
+ g_fp->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName("SAVEGAME")->setSubVarAsInt("Entrance", value);
+}
+
void sceneHandler25_toLadder() {
- warning("STUB: sceneHandler25_toLadder()");
+ PicAniInfo info;
+
+ g_fp->_aniMan->getPicAniInfo(&info);
+ g_fp->_aniMan->_messageQueueId = 0;
+ g_fp->_aniMan->changeStatics2(g_fp->_aniMan->_statics->_staticsId);
+
+ int x = g_fp->_aniMan->_ox;
+ int y = g_fp->_aniMan->_oy;
+
+ g_fp->_aniMan->setPicAniInfo(&info);
+
+ int id = g_fp->_aniMan->_statics->_staticsId;
+ int qid = 0;
+
+ if (id == ST_MAN25_ONBOARD && x == 307 && y == 502) {
+ g_fp->_aniMan->changeStatics2(ST_MAN25_ONBOARD);
+
+ qid = QU_SC25_BACKTOLADDER;
+ } else if (id == (ST_MAN25_ONBOARD|0x4000) && x == 192 && y == 502) {
+ g_fp->_aniMan->changeStatics2(ST_MAN25_ONBOARD|0x4000);
+
+ qid = QU_SC25_BOARDTOLADDER;
+ }
+
+ if (qid) {
+ chainQueue(qid, 1);
+ g_vars->scene25_var05 = 0;
+ g_vars->scene25_var07 = 1;
+ g_vars->scene25_var12 = 0;
+
+ sceneHandler25_saveEntrance(TrubaUp);
+ }
}
void sceneHandler25_animateBearders() {
@@ -338,10 +373,6 @@ void sceneHandler25_sub03() {
warning("STUB: sceneHandler25_sub03()");
}
-void sceneHandler25_sub04(int value) {
- g_fp->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName("SAVEGAME")->setSubVarAsInt("Entrance", value);
-}
-
int sceneHandler25(ExCommand *cmd) {
if (cmd->_messageKind != 17)
return 0;