aboutsummaryrefslogtreecommitdiff
path: root/engines/fullpipe
diff options
context:
space:
mode:
Diffstat (limited to 'engines/fullpipe')
-rw-r--r--engines/fullpipe/constants.h1
-rw-r--r--engines/fullpipe/scenes/scene06.cpp53
2 files changed, 49 insertions, 5 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index d1e1820c27..1a41538732 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -269,6 +269,7 @@ namespace Fullpipe {
#define QU_KOZAW_WALK 505
#define QU_MOM_JUMPBK 671
#define QU_MOM_JUMPFW 670
+#define QU_MOM_PUTBALL 2903
#define QU_MOM_SITDOWN 685
#define QU_MOM_STANDUP 2899
#define QU_MOM_TOLIFT 2902
diff --git a/engines/fullpipe/scenes/scene06.cpp b/engines/fullpipe/scenes/scene06.cpp
index 4f76714660..7f49df385e 100644
--- a/engines/fullpipe/scenes/scene06.cpp
+++ b/engines/fullpipe/scenes/scene06.cpp
@@ -419,7 +419,54 @@ void sceneHandler06_sub05() {
}
void sceneHandler06_sub09() {
- warning("STUB: sceneHandler06_sub09()");
+ if (g_vars->scene06_var11) {
+ g_vars->scene06_var11->hide();
+
+ g_vars->scene06_balls.push_back(g_vars->scene06_var11);
+
+ g_vars->scene06_var11 = 0;
+
+ g_vars->scene06_var13++;
+
+ if (g_vars->scene06_mumsy->_movement) {
+ Common::Point point;
+
+ if (g_vars->scene06_mumsy->_movement->_id == MV_MOM_JUMPFW) {
+ if (g_vars->scene06_mumsy->_movement->_currDynamicPhaseIndex <= 5) {
+ g_vars->scene06_mumsy->_movement->calcSomeXY(point, 0);
+
+ point.x = -point.x;
+ point.y = -point.y;
+ } else {
+ g_vars->scene06_mumsy->_movement->calcSomeXY(point, 1);
+
+ g_vars->scene06_mumsyPos++;
+ }
+ } else if (g_vars->scene06_mumsy->_movement->_id == MV_MOM_JUMPBK) {
+ if (g_vars->scene06_mumsy->_movement->_currDynamicPhaseIndex <= 4) {
+ g_vars->scene06_mumsy->_movement->calcSomeXY(point, 0);
+
+ point.x = -point.x;
+ point.y = -point.y;
+ } else {
+ g_vars->scene06_mumsy->_movement->calcSomeXY(point, 1);
+
+ g_vars->scene06_mumsyPos--;
+ }
+ }
+
+ g_vars->scene06_mumsy->changeStatics2(ST_MOM_STANDS);
+ g_vars->scene06_mumsy->setOXY(point.x + g_vars->scene06_mumsy->_ox,
+ point.y + g_vars->scene06_mumsy->_oy);
+ } else {
+ g_vars->scene06_mumsy->changeStatics2(ST_MOM_STANDS);
+ }
+
+ chainQueue(QU_MOM_PUTBALL, 1);
+ g_vars->scene06_var16 = 1;
+
+ sceneHandler06_sub10();
+ }
}
void sceneHandler06_sub04(int par) {
@@ -437,10 +484,6 @@ void sceneHandler06_sub04(int par) {
}
}
-void sceneHandler06_sub06() {
- warning("STUB: sceneHandler06_sub06()");
-}
-
void scene06_initScene(Scene *sc) {
g_vars->scene06_mumsy = sc->getStaticANIObject1ById(ANI_MAMASHA, -1);
g_vars->scene06_var06 = 0;