diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 1c7779a02bf..1dfe6ba77c1 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -883,12 +883,19 @@ namespace Fullpipe { #define PIC_SC25_RTRUBA 1853 #define QU_DRP25_TOFLOOR 3502 #define QU_DRP25_TOWATER 3504 +#define QU_SC25_BACKTOTRUBA 2061 +#define QU_SC25_ENTERUP_FLOOR 1904 +#define QU_SC25_ENTERUP_WATER 1895 +#define QU_SC25_LADDERUP 1925 +#define QU_SC25_PUTBOARD 1896 +#define QU_SC25_TRYWATER 1906 #define SND_25_006 4059 #define SND_25_025 4874 #define SND_25_026 4875 #define SND_25_027 4876 #define SND_25_029 5174 #define ST_DRP25_EMPTY 3501 +#define ST_MAN_LADDERDOWN_R 3419 // Scene 30 #define ANI_LEG 2322 diff --git a/engines/fullpipe/scenes/scene25.cpp b/engines/fullpipe/scenes/scene25.cpp index 9ff710b03a2..37f837a7596 100644 --- a/engines/fullpipe/scenes/scene25.cpp +++ b/engines/fullpipe/scenes/scene25.cpp @@ -137,7 +137,13 @@ void sceneHandler25_startBearders() { } void sceneHandler25_enterMan() { - warning("STUB: sceneHandler25_enterMan()"); + if (g_vars->scene25_var06) { + chainQueue(QU_SC25_ENTERUP_WATER, 1); + + getCurrSceneSc2MotionController()->clearEnabled(); + } else { + chainQueue(QU_SC25_ENTERUP_FLOOR, 1); + } } void sceneHandler25_enterTruba() { @@ -165,11 +171,26 @@ void sceneHandler25_rowHand() { } void sceneHandler25_putBoard() { - warning("STUB: sceneHandler25_putBoard()"); + if (g_fp->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER + || g_fp->_aniMan->_statics->_staticsId == ST_MAN_LADDERDOWN_R) { + g_fp->_aniMan->changeStatics2(ST_MAN_STANDLADDER); + g_fp->_aniMan->setOXY(281, 481); + + chainQueue(QU_SC25_PUTBOARD, 1); + + g_vars->scene25_var05 = 1; + g_vars->scene25_var12 = 0; + g_vars->scene25_var07 = 0; + } } void sceneHandler25_tryWater() { - warning("STUB: sceneHandler25_tryWater()"); + if (g_fp->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER + || g_fp->_aniMan->_statics->_staticsId == ST_MAN_LADDERDOWN_R) { + g_fp->_aniMan->changeStatics2(ST_MAN_STANDLADDER); + + chainQueue(QU_SC25_TRYWATER, 1); + } } void sceneHandler25_tryRow(int code) { @@ -177,11 +198,20 @@ void sceneHandler25_tryRow(int code) { } void sceneHandler25_ladderUp() { - warning("STUB: sceneHandler25_ladderUp()"); + if (g_fp->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER + || g_fp->_aniMan->_statics->_staticsId == ST_MAN_LADDERDOWN_R) { + g_fp->_aniMan->changeStatics2(ST_MAN_STANDLADDER); + + chainQueue(QU_SC25_LADDERUP, 1); + } } void sceneHandler25_backToPipe() { - warning("STUB: sceneHandler25_backToPipe()"); + if (!g_fp->_aniMan->_movement && g_fp->_aniMan->_statics->_staticsId == (ST_MAN_RIGHT|0x4000)) { + g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT|0x4000); + + chainQueue(QU_SC25_BACKTOTRUBA, 1); + } } void sceneHandler25_sub01() { @@ -198,8 +228,8 @@ void sceneHandler25_sub03() { warning("STUB: sceneHandler25_sub03()"); } -void sceneHandler25_sub04() { - warning("STUB: sceneHandler25_sub04()"); +void sceneHandler25_sub04(int value) { + g_fp->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName("SAVEGAME")->setSubVarAsInt("Entrance", value); } int sceneHandler25(ExCommand *cmd) {