diff options
-rw-r--r-- | engines/fullpipe/constants.h | 2 | ||||
-rw-r--r-- | engines/fullpipe/scenes/scene25.cpp | 41 |
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; |