[Scummvm-cvs-logs] scummvm master -> fdad3971e5092e79794900ecc3e89d90a51a4b83

sev- sev at scummvm.org
Thu Jan 2 21:58:01 CET 2014


This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
b3a9832b6f FULLPIPE: Plug scene22 in
073fe02b38 FULLPIPE: Implement scene22_setBagState() and updateCursor()
82367c9b40 FULLPIPE: Implement sceneHandler22()
9ee4cf899b FULLPIPE: Implement sceneHandler22_handleDown() and smaller ones
fdad3971e5 FULLPIPE: Implement sceneHandler22_fromStool()


Commit: b3a9832b6f4821092b99defb4b1e5f59a91755d0
    https://github.com/scummvm/scummvm/commit/b3a9832b6f4821092b99defb4b1e5f59a91755d0
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-02T11:01:34-08:00

Commit Message:
FULLPIPE: Plug scene22 in

Changed paths:
    engines/fullpipe/constants.h
    engines/fullpipe/module.mk
    engines/fullpipe/scenes.cpp
    engines/fullpipe/scenes.h
    engines/fullpipe/scenes/scene22.cpp



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 03c9984..a25e974 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -737,6 +737,12 @@ namespace Fullpipe {
 #define ST_GRFB_SIT 1687
 #define ST_GRFB_HANG 1638
 
+// Scene 22
+#define ANI_GIRAFFE_MIDDLE 1981
+#define ANI_MESHOK 1754
+#define ST_GRFM_AFTER 3472
+#define ST_GRFM_NORM 1983
+
 // Scene 24
 #define ANI_DROP_24 3505
 #define ANI_INV_HAMMER 884
diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk
index 245cbae..6562e9a 100644
--- a/engines/fullpipe/module.mk
+++ b/engines/fullpipe/module.mk
@@ -42,6 +42,7 @@ MODULE_OBJS = \
 	scenes/scene17.o \
 	scenes/scene20.o \
 	scenes/scene21.o \
+	scenes/scene22.o \
 	scenes/scene24.o \
 	scenes/scene30.o \
 	scenes/scene31.o \
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 65d394f..483d3cf 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -257,6 +257,18 @@ Vars::Vars() {
 	scene21_wigglePos = 0.0;
 	scene21_wiggleTrigger = 0;
 
+	scene22_var01 = 200;
+	scene22_var02 = 200;
+	scene22_var03 = 300;
+	scene22_var04 = 300;
+	scene22_bag = 0;
+	scene22_giraffeMiddle = 0;
+	scene22_var07 = 0;
+	scene22_var08 = 0;
+	scene22_var09 = 0;
+	scene22_var10 = 1;
+	scene22_var11 = 1;
+
 	scene24_jetIsOn = false;
 	scene24_flowIsLow = false;
 	scene24_waterIsOn = false;
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index e3534c8..49c25ac 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -361,6 +361,18 @@ public:
 	double scene21_wigglePos;
 	bool scene21_wiggleTrigger;
 
+	int scene22_var01;
+	int scene22_var02;
+	int scene22_var03;
+	int scene22_var04;
+	StaticANIObject *scene22_bag;
+	StaticANIObject *scene22_giraffeMiddle;
+	int scene22_var07;
+	int scene22_var08;
+	int scene22_var09;
+	int scene22_var10;
+	int scene22_var11;
+
 	bool scene24_jetIsOn;
 	bool scene24_flowIsLow;
 	bool scene24_waterIsOn;
diff --git a/engines/fullpipe/scenes/scene22.cpp b/engines/fullpipe/scenes/scene22.cpp
index 970f5b3..7b36c63 100644
--- a/engines/fullpipe/scenes/scene22.cpp
+++ b/engines/fullpipe/scenes/scene22.cpp
@@ -41,12 +41,12 @@ void scene22_initScene(Scene *sc) {
 	g_vars->scene22_var02 = 200;
 	g_vars->scene22_var03 = 300;
 	g_vars->scene22_var04 = 300;
-	g_vars->scene22_var05 = Scene_getStaticANIObject1ById(sc, ANI_MESHOK, -1);
+	g_vars->scene22_bag = sc->getStaticANIObject1ById(ANI_MESHOK, -1);
 
 	Scene *oldsc = g_fp->_currentScene;
 	g_fp->_currentScene = sc;
 
-	g_vars->scene22_giraffeMiddle = sc->getStaticANIObject1ById(sc, ANI_GIRAFFE_MIDDLE, -1);
+	g_vars->scene22_giraffeMiddle = sc->getStaticANIObject1ById(ANI_GIRAFFE_MIDDLE, -1);
 	g_vars->scene22_var07 = 0;
 	g_vars->scene22_var08 = 0;
 	g_vars->scene22_var09 = 0;


Commit: 073fe02b38f5aef5b203422c97a6b635c1a9e3c9
    https://github.com/scummvm/scummvm/commit/073fe02b38f5aef5b203422c97a6b635c1a9e3c9
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-02T11:11:37-08:00

Commit Message:
FULLPIPE: Implement scene22_setBagState() and updateCursor()

Changed paths:
    engines/fullpipe/constants.h
    engines/fullpipe/scenes/scene22.cpp



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index a25e974..0ac3cad 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -732,6 +732,8 @@ namespace Fullpipe {
 
 // Scene 21
 #define ANI_GIRAFFE_BOTTOM 1633
+#define ANI_INV_BOX 890
+#define ANI_INV_STOOL 1780
 #define MSG_SC21_UPDATEASS 4211
 #define PIC_SC21_DTRUBA 1823
 #define ST_GRFB_SIT 1687
@@ -740,8 +742,11 @@ namespace Fullpipe {
 // Scene 22
 #define ANI_GIRAFFE_MIDDLE 1981
 #define ANI_MESHOK 1754
+#define QU_MSH_CRANEOUT 1811
+#define QU_MSH_MOVE 1812
 #define ST_GRFM_AFTER 3472
 #define ST_GRFM_NORM 1983
+#define ST_MSH_SIT 1756
 
 // Scene 24
 #define ANI_DROP_24 3505
diff --git a/engines/fullpipe/scenes/scene22.cpp b/engines/fullpipe/scenes/scene22.cpp
index 7b36c63..d28ea92 100644
--- a/engines/fullpipe/scenes/scene22.cpp
+++ b/engines/fullpipe/scenes/scene22.cpp
@@ -74,4 +74,35 @@ void scene22_initScene(Scene *sc) {
 	g_fp->initArcadeKeys("SC_22");
 }
 
+int scene22_updateCursor() {
+	g_fp->updateCursorCommon();
+
+	if (g_fp->_objectIdAtCursor != ANI_HANDLE_L)
+		return g_fp->_cursorId;
+
+	int sel = g_fp->_inventory->getSelectedItemId();
+
+	if (!sel) {
+		g_fp->_cursorId = PIC_CSR_ITN;
+		return g_fp->_cursorId;
+	}
+
+	if (g_vars->scene22_var07 || (sel != ANI_INV_STOOL && sel != ANI_INV_BOX))
+		; //empty
+	else
+		g_fp->_cursorId = PIC_CSR_ITN_INV;
+
+	return g_fp->_cursorId;
+}
+
+void scene22_setBagState() {
+	if (g_vars->scene22_var10) {
+		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_CRANEOUT, 1);
+		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_MOVE, 0);
+	} else {
+		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_CRANEOUT, 0);
+		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_MOVE, 1);
+	}
+}
+
 } // End of namespace Fullpipe


Commit: 82367c9b4083b52288caece983413c373c84d9ed
    https://github.com/scummvm/scummvm/commit/82367c9b4083b52288caece983413c373c84d9ed
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-02T12:32:41-08:00

Commit Message:
FULLPIPE: Implement sceneHandler22()

Changed paths:
    engines/fullpipe/constants.h
    engines/fullpipe/objectnames.h
    engines/fullpipe/scenes/scene15.cpp
    engines/fullpipe/scenes/scene22.cpp



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 0ac3cad..6b82165 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -742,7 +742,15 @@ namespace Fullpipe {
 // Scene 22
 #define ANI_GIRAFFE_MIDDLE 1981
 #define ANI_MESHOK 1754
+#define MSG_SC22_CHECKGMABOOT 4782
+#define MSG_SC22_CRANEOUT_GMA 5218
+#define MSG_SC22_FROMSTOOL 1799
+#define MSG_SC22_HANDLEDOWN 1796
+#define MSG_SC22_HIDESTOOL 2503
+#define MSG_SC22_ONSTOOL 1798
+#define MSG_SC22_SHOWSTOOL 2495
 #define QU_MSH_CRANEOUT 1811
+#define QU_MSH_CRANEOUT_GMA 5219
 #define QU_MSH_MOVE 1812
 #define ST_GRFM_AFTER 3472
 #define ST_GRFM_NORM 1983
diff --git a/engines/fullpipe/objectnames.h b/engines/fullpipe/objectnames.h
index 06888b6..594f0a6 100644
--- a/engines/fullpipe/objectnames.h
+++ b/engines/fullpipe/objectnames.h
@@ -166,7 +166,7 @@ namespace Fullpipe {
 #define sO_FullPipe "\xcf\xee\xeb\xed\xe0\xff \xd2\xf0\xf3\xe1\xe0"	// "Полная Труба"
 #define sO_RightStairs_9 "\xcf\xf0\xe0\xe2\xe0\xff \xeb\xe5\xf1\xf2\xed\xe8\xf6\xe0_9"	// "Правая лестница_9"
 #define sO_RightPipe_17 "\xcf\xf0\xe0\xe2\xe0\xff \xf2\xf0\xf3\xe1\xe0_17"	// "Правая труба_17"
-#define sO_Available "\xcf\xf0\xe8\xf1\xf3\xf2\xf1\xf2\xe2\xf3\xe5\xf2"	// "Присутствует"
+#define sO_IsPresent "\xcf\xf0\xe8\xf1\xf3\xf2\xf1\xf2\xe2\xf3\xe5\xf2"	// "Присутствует"
 #define sO_GulpedEgg "\xcf\xf0\xee\xe3\xeb\xee\xf7\xe5\xed\xed\xee\xe5 \xff\xe9\xf6\xee"	// "Проглоченное яйцо"
 #define sO_GulpedEggs "\xcf\xf0\xee\xe3\xeb\xee\xf7\xe5\xed\xed\xfb\xe5 \xff\xe9\xf6\xe0"	// "Проглоченные яйца"
 #define sO_BellyInflater "\xcf\xf3\xe7\xee\xe4\xf3\xe2"	// "Пузодув"
diff --git a/engines/fullpipe/scenes/scene15.cpp b/engines/fullpipe/scenes/scene15.cpp
index 8310fc8..fa8db64 100644
--- a/engines/fullpipe/scenes/scene15.cpp
+++ b/engines/fullpipe/scenes/scene15.cpp
@@ -82,7 +82,7 @@ void scene15_initScene(Scene *sc) {
  	g_vars->scene15_ladder = sc->getPictureObjectById(PIC_SC15_LADDER, 0);
 	g_vars->scene15_boot = sc->getStaticANIObject1ById(ANI_BOOT_15, -1);
 
-	if (g_fp->getObjectState(sO_Boot_15) != g_fp->getObjectEnumState(sO_Boot_15, sO_Available))
+	if (g_fp->getObjectState(sO_Boot_15) != g_fp->getObjectEnumState(sO_Boot_15, sO_IsPresent))
 		g_vars->scene15_boot->_flags &= 0xFFFB;
 
 	g_fp->_currentScene = oldsc;
diff --git a/engines/fullpipe/scenes/scene22.cpp b/engines/fullpipe/scenes/scene22.cpp
index d28ea92..b57cf93 100644
--- a/engines/fullpipe/scenes/scene22.cpp
+++ b/engines/fullpipe/scenes/scene22.cpp
@@ -105,4 +105,123 @@ void scene22_setBagState() {
 	}
 }
 
+void sceneHandler22_showStool() {
+	warning("STUB: sceneHandler22_showStool()");
+}
+
+void sceneHandler22and23_hideStool() {
+	warning("STUB: sceneHandler22and23_hideStool()");
+}
+
+void sceneHandler22_handleDown() {
+	warning("STUB: sceneHandler22_handleDown()");
+}
+
+void sceneHandler22_sub01(ExCommand *cmd) {
+	warning("STUB: sceneHandler22_sub01(cmd)");
+}
+
+void sceneHandler22_sub02(ExCommand *cmd) {
+	warning("STUB: sceneHandler22_sub02(cmd)");
+}
+
+
+int sceneHandler22(ExCommand *cmd) {
+	if (cmd->_messageKind != 17)
+		return 0;
+
+	switch (cmd->_messageNum) {
+	case MSG_SC22_CRANEOUT_GMA:
+		chainQueue(QU_MSH_CRANEOUT_GMA, 1);
+		break;
+
+	case MSG_SC22_CHECKGMABOOT:
+		if (g_fp->getObjectState(sO_Grandma) == g_fp->getObjectEnumState(sO_Grandma, sO_In_15))
+			g_fp->setObjectState(sO_Boot_15, g_fp->getObjectEnumState(sO_Boot_15, sO_IsPresent));
+
+		break;
+
+	case MSG_SC22_SHOWSTOOL:
+		sceneHandler22_showStool();
+		break;
+
+	case MSG_SC22_HIDESTOOL:
+		sceneHandler22and23_hideStool();
+		break;
+
+	case MSG_SC22_FROMSTOOL:
+		g_vars->scene22_var07 = 0;
+		g_vars->scene22_var08 = 0;
+
+		getCurrSceneSc2MotionController()->setEnabled();
+		g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 1);
+		break;
+
+	case MSG_SC22_ONSTOOL:
+		g_vars->scene22_var07 = 1;
+		getCurrSceneSc2MotionController()->clearEnabled();
+		g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 0);
+		break;
+
+	case MSG_SC22_HANDLEDOWN:
+		sceneHandler22_handleDown();
+		break;
+
+	case 29:
+		if (!g_vars->scene22_var08) {
+			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+			if (ani && ani->_id == ANI_HANDLE_L) {
+				sceneHandler22_sub02(cmd);
+				return 0;
+			}
+			if (!g_vars->scene22_var07) {
+				if (!ani || !canInteractAny(g_fp->_aniMan, ani, cmd->_keyCode)) {
+					int picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+					PictureObject *pic = g_fp->_currentScene->getPictureObjectById(picId, 0);
+
+					if (!pic || !canInteractAny(g_fp->_aniMan, pic, cmd->_keyCode)) {
+						if ((g_fp->_sceneRect.right - cmd->_sceneClickX < 47 && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1)
+							|| (cmd->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0)) {
+							g_fp->processArcade(cmd);
+							return 0;
+						}
+					}
+				}
+				return 0;
+			}
+			if (g_fp->_aniMan->_statics->_staticsId == ST_MAN_RIGHT && !g_fp->_aniMan->_movement) {
+				sceneHandler22_sub01(cmd);
+
+				return 0;
+			}
+		}
+
+		cmd->_messageKind = 0;
+		break;
+
+	case 33:
+		if (g_fp->_aniMan2) {
+			int x = g_fp->_aniMan2->_ox;
+
+			if (x <= g_fp->_sceneWidth - 460) {
+				if (x < g_fp->_sceneRect.left + g_vars->scene22_var01)
+					g_fp->_currentScene->_x = x - g_vars->scene22_var03 - g_fp->_sceneRect.left;
+			} else {
+				g_fp->_currentScene->_x = g_fp->_sceneWidth - x;
+			}
+
+			if (x > g_fp->_sceneRect.right - g_vars->scene22_var01 )
+				g_fp->_currentScene->_x = x + g_vars->scene22_var03 - g_fp->_sceneRect.right;
+
+			g_fp->_behaviorManager->updateBehaviors();
+
+			g_fp->startSceneTrack();
+		}
+
+		break;
+	}
+
+	return 0;
+}
+
 } // End of namespace Fullpipe


Commit: 9ee4cf899b26e3bc757bf77c4cda3dd3c67f0fd0
    https://github.com/scummvm/scummvm/commit/9ee4cf899b26e3bc757bf77c4cda3dd3c67f0fd0
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-02T12:43:51-08:00

Commit Message:
FULLPIPE: Implement sceneHandler22_handleDown() and smaller ones

Changed paths:
    engines/fullpipe/constants.h
    engines/fullpipe/objectnames.h
    engines/fullpipe/scenes/scene22.cpp



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 6b82165..dc58682 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -742,6 +742,7 @@ namespace Fullpipe {
 // Scene 22
 #define ANI_GIRAFFE_MIDDLE 1981
 #define ANI_MESHOK 1754
+#define ANI_TABURETTE 1745
 #define MSG_SC22_CHECKGMABOOT 4782
 #define MSG_SC22_CRANEOUT_GMA 5218
 #define MSG_SC22_FROMSTOOL 1799
@@ -751,6 +752,10 @@ namespace Fullpipe {
 #define MSG_SC22_SHOWSTOOL 2495
 #define QU_MSH_CRANEOUT 1811
 #define QU_MSH_CRANEOUT_GMA 5219
+#define QU_SC22_FALLBROOM 1786
+#define QU_SC22_FALLSACK 1791
+#define QU_SC22_FALLSACK_GMA 2613
+#define QU_SC22_SHOWSTOOL 1793
 #define QU_MSH_MOVE 1812
 #define ST_GRFM_AFTER 3472
 #define ST_GRFM_NORM 1983
diff --git a/engines/fullpipe/objectnames.h b/engines/fullpipe/objectnames.h
index 594f0a6..884271b 100644
--- a/engines/fullpipe/objectnames.h
+++ b/engines/fullpipe/objectnames.h
@@ -230,7 +230,7 @@ namespace Fullpipe {
 #define sO_IsGone "\xd3\xe5\xf5\xe0\xeb\xe0"	// "Уехала"
 #define sO_FallenTwice "\xd3\xef\xe0\xeb \xe4\xe2\xe0"	// "Упал два"
 #define sO_FallenOnce "\xd3\xef\xe0\xeb \xf0\xe0\xe7"	// "Упал раз"
-#define sO_FallenBrush "\xd3\xef\xe0\xeb\xe0 \xf9\xe5\xf2\xea\xe0"	// "Упала щетка"
+#define sO_BrushHasFallen "\xd3\xef\xe0\xeb\xe0 \xf9\xe5\xf2\xea\xe0"	// "Упала щетка"
 #define sO_NotBroken "\xd6\xe5\xeb\xe0"	// "Цела"
 #define sO_IsScratchingBelly "\xd7\xe5\xf8\xe5\xf2 \xef\xf3\xe7\xee"	// "Чешет пузо"
 #define sO_Level0 "\xdd\xf2\xe0\xe6 0"	// "Этаж 0"
diff --git a/engines/fullpipe/scenes/scene22.cpp b/engines/fullpipe/scenes/scene22.cpp
index b57cf93..8e1cd9e 100644
--- a/engines/fullpipe/scenes/scene22.cpp
+++ b/engines/fullpipe/scenes/scene22.cpp
@@ -106,15 +106,51 @@ void scene22_setBagState() {
 }
 
 void sceneHandler22_showStool() {
-	warning("STUB: sceneHandler22_showStool()");
+	chainQueue(QU_SC22_SHOWSTOOL, 0);
 }
 
 void sceneHandler22and23_hideStool() {
-	warning("STUB: sceneHandler22and23_hideStool()");
+	g_fp->_currentScene->getStaticANIObject1ById(ANI_TABURETTE, -1)->hide();
 }
 
 void sceneHandler22_handleDown() {
-	warning("STUB: sceneHandler22_handleDown()");
+	if (g_vars->scene22_bag->_statics->_staticsId == ST_MSH_SIT) {
+		chainQueue(QU_MSH_CRANEOUT, 1);
+		g_vars->scene22_var08 = 0;
+	} else {
+		++g_vars->scene22_var11;
+
+		int qid;
+
+		if (g_vars->scene22_var11 == 3) {
+			chainQueue(QU_SC22_FALLSACK_GMA, 1);
+			qid = QU_SC22_FALLBROOM;
+		} else {
+			qid = QU_SC22_FALLSACK;
+		}
+
+		chainQueue(qid, 1);
+
+		int state;
+
+		if (g_vars->scene22_var11) {
+			if (g_vars->scene22_var11 == 1) {
+				state = g_fp->getObjectEnumState(sO_Bag_22, sO_FallenOnce);
+			} else if (g_vars->scene22_var11 == 2) {
+				state = g_fp->getObjectEnumState(sO_Bag_22, sO_FallenTwice);
+			} else {
+				state = g_fp->getObjectEnumState(sO_Bag_22, sO_BrushHasFallen);
+			}
+		} else {
+			state = g_fp->getObjectEnumState(sO_Bag_22, sO_NotFallen);
+		}
+
+		g_fp->setObjectState(sO_Bag_22, state);
+	}
+	g_vars->scene22_var10 = 1;
+
+	g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_CRANEOUT, 1);
+	g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_MOVE, 0);
 }
 
 void sceneHandler22_sub01(ExCommand *cmd) {


Commit: fdad3971e5092e79794900ecc3e89d90a51a4b83
    https://github.com/scummvm/scummvm/commit/fdad3971e5092e79794900ecc3e89d90a51a4b83
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-02T12:56:24-08:00

Commit Message:
FULLPIPE: Implement sceneHandler22_fromStool()

Changed paths:
    engines/fullpipe/constants.h
    engines/fullpipe/scenes/scene22.cpp



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index dc58682..96abc3a 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -755,6 +755,7 @@ namespace Fullpipe {
 #define QU_SC22_FALLBROOM 1786
 #define QU_SC22_FALLSACK 1791
 #define QU_SC22_FALLSACK_GMA 2613
+#define QU_SC22_FROMSTOOL 1800
 #define QU_SC22_SHOWSTOOL 1793
 #define QU_MSH_MOVE 1812
 #define ST_GRFM_AFTER 3472
diff --git a/engines/fullpipe/scenes/scene22.cpp b/engines/fullpipe/scenes/scene22.cpp
index 8e1cd9e..f4c6009 100644
--- a/engines/fullpipe/scenes/scene22.cpp
+++ b/engines/fullpipe/scenes/scene22.cpp
@@ -153,15 +153,20 @@ void sceneHandler22_handleDown() {
 	g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_MOVE, 0);
 }
 
-void sceneHandler22_sub01(ExCommand *cmd) {
-	warning("STUB: sceneHandler22_sub01(cmd)");
+void sceneHandler22_fromStool(ExCommand *cmd) {
+	if (g_fp->_aniMan->isIdle() && !(g_fp->_aniMan->_flags & 0x100)) {
+		MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC22_FROMSTOOL), 0, 0);
+
+		mq->addExCommandToEnd(new ExCommand(cmd));
+		mq->setFlags(mq->getFlags() | 1);
+		mq->chain(0);
+	}
 }
 
 void sceneHandler22_sub02(ExCommand *cmd) {
 	warning("STUB: sceneHandler22_sub02(cmd)");
 }
 
-
 int sceneHandler22(ExCommand *cmd) {
 	if (cmd->_messageKind != 17)
 		return 0;
@@ -206,10 +211,12 @@ int sceneHandler22(ExCommand *cmd) {
 	case 29:
 		if (!g_vars->scene22_var08) {
 			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+
 			if (ani && ani->_id == ANI_HANDLE_L) {
 				sceneHandler22_sub02(cmd);
 				return 0;
 			}
+
 			if (!g_vars->scene22_var07) {
 				if (!ani || !canInteractAny(g_fp->_aniMan, ani, cmd->_keyCode)) {
 					int picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
@@ -225,8 +232,9 @@ int sceneHandler22(ExCommand *cmd) {
 				}
 				return 0;
 			}
+
 			if (g_fp->_aniMan->_statics->_staticsId == ST_MAN_RIGHT && !g_fp->_aniMan->_movement) {
-				sceneHandler22_sub01(cmd);
+				sceneHandler22_fromStool(cmd);
 
 				return 0;
 			}






More information about the Scummvm-git-logs mailing list