diff options
-rw-r--r-- | engines/fullpipe/constants.h | 7 | ||||
-rw-r--r-- | engines/fullpipe/scenes/scene25.cpp | 56 |
2 files changed, 61 insertions, 2 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 074721f2af..ddb3c89786 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -901,15 +901,22 @@ namespace Fullpipe { #define QU_SC25_PUTBOARD 1896 #define QU_SC25_ROWTOLADDER 1910 #define QU_SC25_ROWTOTRUBA 1897 +#define QU_SC25_TRUBATOBOARD 1909 +#define QU_SC25_TRYBROOM 1912 +#define QU_SC25_TRYHAND 4219 #define QU_SC25_TRYROWHAND 3493 #define QU_SC25_TRYROWHAND_R 3494 +#define QU_SC25_TRYSPADE 3498 +#define QU_SC25_TRYSWAB 1913 #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_028 5173 #define SND_25_029 5174 #define SND_25_030 5175 +#define ST_BRD25_RIGHT2 1902 #define ST_DRP25_EMPTY 3501 #define ST_MAN_LADDERDOWN_R 3419 #define ST_MAN25_ONBOARD 1879 diff --git a/engines/fullpipe/scenes/scene25.cpp b/engines/fullpipe/scenes/scene25.cpp index 927a6e4dd8..ae5cd7908d 100644 --- a/engines/fullpipe/scenes/scene25.cpp +++ b/engines/fullpipe/scenes/scene25.cpp @@ -350,8 +350,60 @@ void sceneHandler25_tryWater() { } } -void sceneHandler25_tryRow(int code) { - warning("STUB: sceneHandler25_tryRow()"); +void sceneHandler25_tryRow(int obj) { + PicAniInfo info; + + g_fp->_aniMan->getPicAniInfo(&info); + g_fp->_aniMan->_messageQueueId = 0; + g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT|0x4000); + + int x = g_fp->_aniMan->_ox; + int y = g_fp->_aniMan->_oy; + + g_fp->_aniMan->setPicAniInfo(&info); + + int qid = 0; + + if (x == 788 && y == 468) { + if (g_vars->scene25_board->_statics->_staticsId == ST_BRD25_RIGHT2) { + if (obj == ANI_INV_BROOM) { + g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT|0x4000); + + qid = QU_SC25_TRYBROOM; + } + if (obj == ANI_INV_LOPAT) { + g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT|0x4000); + + qid = QU_SC25_TRYSPADE; + } + + if (qid) { + chainQueue(qid, 1); + + g_fp->playSound(SND_25_028, 0); + + return; + } + + if (obj == ANI_INV_SWAB) { + g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT|0x4000); + + chainQueue(QU_SC25_TRYSWAB, 1); + } else if (!obj) { + g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT|0x4000); + + chainObjQueue(g_fp->_aniMan, QU_SC25_TRYHAND, 1); + + g_fp->playSound(SND_25_028, 0); + } + } else if (g_vars->scene25_board->_statics->_staticsId == (ST_MAN_RIGHT|0x4000) && !obj) { + g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT|0x4000); + + chainQueue(QU_SC25_TRUBATOBOARD, 1); + + g_vars->scene25_var05 = 1; + } + } } void sceneHandler25_ladderUp() { |