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

sev- sev at scummvm.org
Sat Jan 18 12:50:13 CET 2014


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

Summary:
66e252bafc FULLPIPE: Initial code for scene37
9dd3c9d2b7 FULLPIPE: Plug scene37 in
9a4d233fc5 FULLPIPE: Implement scene37_updateCursor()
8a229f5a66 FULLPIPE: Implement sceneHandler37()
d122b201d6 FULLPIPE: Implement sceneHandler37_setRingsState()
7445f89353 FULLPIPE: Plug scene37 in
ce69278a48 FULLPIPE: Implement sceneHandler37_updateRing()
dc7fc44929 FULLPIPE: Renames in scene37. This completes the scene


Commit: 66e252bafc7f6f93eb81a0e62e6f09572fe59794
    https://github.com/scummvm/scummvm/commit/66e252bafc7f6f93eb81a0e62e6f09572fe59794
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-18T01:17:57-08:00

Commit Message:
FULLPIPE: Initial code for scene37

Changed paths:
  A engines/fullpipe/scenes/scene37.cpp
    engines/fullpipe/scenes.h



diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 3e197b4..76f870b 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -505,6 +505,17 @@ public:
 	PictureObject *selector;
 };
 
+struct Ring {
+	StaticANIObject *ani;
+	int x;
+	int y;
+	int numSubRings;
+	int subRing[10];
+	bool state;
+
+	Ring();
+};
+
 } // End of namespace Fullpipe
 
 #endif /* FULLPIPE_SCENES_H */
diff --git a/engines/fullpipe/scenes/scene37.cpp b/engines/fullpipe/scenes/scene37.cpp
new file mode 100644
index 0000000..e0c27b6
--- /dev/null
+++ b/engines/fullpipe/scenes/scene37.cpp
@@ -0,0 +1,152 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "fullpipe/fullpipe.h"
+
+#include "fullpipe/objectnames.h"
+#include "fullpipe/constants.h"
+
+#include "fullpipe/gameloader.h"
+#include "fullpipe/motion.h"
+#include "fullpipe/scenes.h"
+#include "fullpipe/statics.h"
+
+#include "fullpipe/interaction.h"
+#include "fullpipe/behavior.h"
+
+
+namespace Fullpipe {
+
+Ring::Ring() {
+	ani = 0;
+	x = 0;
+	y = 0;
+	numSubRings = 0;
+
+	for (int i = 0; i < 10; i++)
+		subRing[i] = 0;
+
+	state = false;
+}
+
+void scene37_initScene(Scene *sc) {
+	Ring *ring;
+	StaticANIObject *ani;
+
+	g_vars->scene37_var01 = 200;
+	g_vars->scene37_var02 = 200;
+	g_vars->scene37_var03 = 300;
+	g_vars->scene37_var04 = 300;
+	g_vars->scene37_var06 = -1;
+
+	ring = new Ring();
+	ani = sc->getStaticANIObject1ById(ANI_GUARD_37, 0);
+	ring->ani = ani;
+	ring->x = ani->_ox - 40;
+	ring->y = ani->_ox + 40;
+	ring->numSubRings = 3;
+	ring->subRing[0] = 1;
+	ring->subRing[1] = 4;
+	ring->subRing[2] = 8;
+	ring->state = false;
+	g_vars->scene37_var05.push_back(ring);
+
+	ring = new Ring();
+	ani = sc->getStaticANIObject1ById(ANI_GUARD_37, 1);
+	ring->ani = ani;
+	ring->x = ani->_ox - 40;
+	ring->y = ani->_ox + 40;
+	ring->numSubRings = 3;
+	ring->subRing[0] = 2;
+	ring->subRing[1] = 5;
+	ring->subRing[2] = 9;
+	ring->state = false;
+	g_vars->scene37_var05.push_back(ring);
+
+	ring = new Ring();
+	ani = sc->getStaticANIObject1ById(ANI_GUARD_37, 2);
+	ring->ani = ani;
+	ring->x = ani->_ox - 40;
+	ring->y = ani->_ox + 40;
+	ring->numSubRings = 3;
+	ring->subRing[0] = 3;
+	ring->subRing[1] = 7;
+	ring->subRing[2] = 11;
+	ring->state = false;
+	g_vars->scene37_var05.push_back(ring);
+
+	g_fp->setObjectState(sO_LeftPipe_37, g_fp->getObjectEnumState(sO_LeftPipe_37, sO_IsClosed));
+	
+	Scene *oldsc = g_fp->_currentScene;
+
+	g_fp->_currentScene = sc;
+
+	g_vars->scene37_var07 = 0;
+
+	g_vars->scene37_plusMinus1 = sc->getStaticANIObject1ById(ANI_PLUSMINUS, 1);
+
+	for (int i = 0; i < g_vars->scene37_var05[0]->numSubRings; i++) {
+		ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_RING, g_vars->scene37_var05[0]->subRings[i]);
+
+		if (g_fp->getObjectState(sO_Guard_1) == g_fp->getObjectEnumState(sO_Guard_1, sO_On)) {
+			g_vars->scene37_plusMinus1->_statics = g_vars->scene37_plusMinus1->getStaticsById(ST_PMS_PLUS);
+			ani->changeStatics2(ST_RNG_OPEN);
+		} else {
+			g_vars->scene37_plusMinus1->_statics = g_vars->scene37_plusMinus1->getStaticsById(ST_PMS_MINUS);
+			ani->changeStatics2(ST_RNG_CLOSED2);
+		}
+	}
+
+	g_vars->scene37_plusMinus2 = sc->getStaticANIObject1ById(ANI_PLUSMINUS, 2);
+
+	for (int i = 0; i < g_vars->scene37_var05[1]->numSubRings; i++) {
+		ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_RING, g_vars->scene37_var05[1]->subRings[i]);
+
+		if (g_fp->getObjectState(sO_Guard_2) == g_fp->getObjectEnumState(sO_Guard_2, sO_On)) {
+			g_vars->scene37_plusMinus2->_statics = g_vars->scene37_plusMinus2->getStaticsById(ST_PMS_PLUS);
+			ani->changeStatics2(ST_RNG_OPEN);
+		} else {
+			g_vars->scene37_plusMinus2->_statics = g_vars->scene37_plusMinus2->getStaticsById(ST_PMS_MINUS);
+			ani->changeStatics2(ST_RNG_CLOSED2);
+		}
+	}
+
+	g_vars->scene37_plusMinus3 = sc->getStaticANIObject1ById(ANI_PLUSMINUS, 3);
+
+	for (int i = 0; i < g_vars->scene37_var05[2]->numSubRings; i++) {
+		ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_RING, g_vars->scene37_var05[2]->subRings[i]);
+
+		if (g_fp->getObjectState(sO_Guard_3) == g_fp->getObjectEnumState(sO_Guard_3, sO_On)) {
+			g_vars->scene37_plusMinus3->_statics = g_vars->scene37_plusMinus3->getStaticsById(ST_PMS_PLUS);
+			ani->changeStatics2(ST_RNG_OPEN);
+		} else {
+			g_vars->scene37_plusMinus3->_statics = g_vars->scene37_plusMinus3->getStaticsById(ST_PMS_MINUS);
+			ani->changeStatics2(ST_RNG_CLOSED2);
+		}
+	}
+
+	g_fp->_currentScene = oldsc;
+
+	g_fp->initArcadeKeys("SC_37");
+}
+
+} // End of namespace Fullpipe


Commit: 9dd3c9d2b77e13310d15637f8941a2f7e132166e
    https://github.com/scummvm/scummvm/commit/9dd3c9d2b77e13310d15637f8941a2f7e132166e
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-18T01:26:51-08:00

Commit Message:
FULLPIPE: Plug scene37 in

Changed paths:
    engines/fullpipe/constants.h
    engines/fullpipe/init.cpp
    engines/fullpipe/module.mk
    engines/fullpipe/objectnames.h
    engines/fullpipe/scenes.cpp
    engines/fullpipe/scenes.h
    engines/fullpipe/scenes/scene15.cpp
    engines/fullpipe/scenes/scene37.cpp



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index b3e06bb..7d99393 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -1284,6 +1284,12 @@ namespace Fullpipe {
 #define PIC_SC36_MASK 5221
 #define ST_RHT_OPEN 2362
 
+// Scene 37
+#define ANI_GUARD_37 2588
+#define ANI_RING 2604
+#define ST_RNG_CLOSED2 4865
+#define ST_RNG_OPEN 2606
+
 // Debug scene
 #define MSG_RESTARTGAME 4767
 #define PIC_SCD_1 727
diff --git a/engines/fullpipe/init.cpp b/engines/fullpipe/init.cpp
index f661340..8de37b5 100644
--- a/engines/fullpipe/init.cpp
+++ b/engines/fullpipe/init.cpp
@@ -116,7 +116,7 @@ void FullpipeEngine::initObjectStates() {
 	setObjectState(sO_BellyInflater, getObjectEnumState(sO_BellyInflater, sO_WithCork));
 	setObjectState(sO_Jawcrucnher, getObjectEnumState(sO_Jawcrucnher, sO_WithoutCarpet));
 	setObjectState(sO_Guard_1, getObjectEnumState(sO_Guard_1, sO_On));
-	setObjectState(sO_Gurad_2, getObjectEnumState(sO_Gurad_2, sO_On));
+	setObjectState(sO_Guard_2, getObjectEnumState(sO_Guard_2, sO_On));
 	setObjectState(sO_Guard_3, getObjectEnumState(sO_Guard_3, sO_On));
 	setObjectState(sO_Bottle_38, getObjectEnumState(sO_Bottle_38, sO_OnTheTable));
 	setObjectState(sO_Boss, getObjectEnumState(sO_Boss, sO_WithHammer));
diff --git a/engines/fullpipe/module.mk b/engines/fullpipe/module.mk
index 5f7d8a4..a692491 100644
--- a/engines/fullpipe/module.mk
+++ b/engines/fullpipe/module.mk
@@ -57,6 +57,7 @@ MODULE_OBJS = \
 	scenes/scene34.o \
 	scenes/scene35.o \
 	scenes/scene36.o \
+	scenes/scene37.o \
 	scenes/sceneDbg.o
 
 # This module can be built as a plugin
diff --git a/engines/fullpipe/objectnames.h b/engines/fullpipe/objectnames.h
index 8939f44..eafdb2a 100644
--- a/engines/fullpipe/objectnames.h
+++ b/engines/fullpipe/objectnames.h
@@ -217,7 +217,7 @@ namespace Fullpipe {
 #define sO_IsStandingInCorner "\xd1\xf2\xee\xe8\xf2 \xe2 \xf3\xe3\xeb\xf3"	// "Стоит в углу"
 #define sO_Guardian "\xd1\xf2\xee\xf0\xee\xe6"	// "Сторож"
 #define sO_Guard_1 "\xd1\xf2\xf0\xe0\xe6 1"	// "Страж 1"
-#define sO_Gurad_2 "\xd1\xf2\xf0\xe0\xe6 2"	// "Страж 2"
+#define sO_Guard_2 "\xd1\xf2\xf0\xe0\xe6 2"	// "Страж 2"
 #define sO_Guard_3 "\xd1\xf2\xf0\xe0\xe6 3"	// "Страж 3"
 #define sO_Stool_34 "\xd2\xe0\xe1\xf3\xf0\xe5\xf2_34"	// "Табурет_34"
 #define sO_Pipe_9 "\xd2\xf0\xf3\xe1\xe0_9"	// "Труба_9"
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index c49b2fc..de7ddfe 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -356,6 +356,17 @@ Vars::Vars() {
 	scene36_rotohrust = 0;
 	scene36_scissors = 0;
 
+	scene37_var01 = 0;
+	scene37_var02 = 0;
+	scene37_var03 = 0;
+	scene37_var04 = 0;
+	scene37_var05.clear();
+	scene37_var06 = 0;
+	scene37_var07 = 0;
+	scene37_plusMinus1 = 0;
+	scene37_plusMinus2 = 0;
+	scene37_plusMinus3 = 0;
+
 	selector = 0;
 }
 
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 76f870b..0137df3 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -26,9 +26,10 @@
 namespace Fullpipe {
 
 struct BehaviorEntryInfo;
-class StaticANIObject;
-class MctlLadder;
 class MGM;
+class MctlLadder;
+struct Ring;
+class StaticANIObject;
 
 int defaultUpdateCursor();
 
@@ -502,6 +503,18 @@ public:
 	StaticANIObject *scene36_rotohrust;
 	StaticANIObject *scene36_scissors;
 
+	int scene37_var01;
+	int scene37_var02;
+	int scene37_var03;
+	int scene37_var04;
+	Common::Array<Ring *> scene37_var05;
+	int scene37_var06;
+	int scene37_var07;
+	StaticANIObject *scene37_plusMinus1;
+	StaticANIObject *scene37_plusMinus2;
+	StaticANIObject *scene37_plusMinus3;
+
+
 	PictureObject *selector;
 };
 
@@ -510,7 +523,7 @@ struct Ring {
 	int x;
 	int y;
 	int numSubRings;
-	int subRing[10];
+	int subRings[10];
 	bool state;
 
 	Ring();
diff --git a/engines/fullpipe/scenes/scene15.cpp b/engines/fullpipe/scenes/scene15.cpp
index fa8db64..046e9c9 100644
--- a/engines/fullpipe/scenes/scene15.cpp
+++ b/engines/fullpipe/scenes/scene15.cpp
@@ -74,7 +74,7 @@ void scene15_initScene(Scene *sc) {
 	
 	g_vars->scene15_plusminus = sc->getStaticANIObject1ById(ANI_PLUSMINUS, -1);
 
-	if (g_fp->getObjectState(sO_Gurad_2) == g_fp->getObjectEnumState(sO_Gurad_2, sO_Off))
+	if (g_fp->getObjectState(sO_Guard_2) == g_fp->getObjectEnumState(sO_Guard_2, sO_Off))
 		g_vars->scene15_plusminus->_statics = g_vars->scene15_plusminus->getStaticsById(ST_PMS_MINUS);
 	else
 		g_vars->scene15_plusminus->_statics = g_vars->scene15_plusminus->getStaticsById(ST_PMS_PLUS);
diff --git a/engines/fullpipe/scenes/scene37.cpp b/engines/fullpipe/scenes/scene37.cpp
index e0c27b6..ed9ce02 100644
--- a/engines/fullpipe/scenes/scene37.cpp
+++ b/engines/fullpipe/scenes/scene37.cpp
@@ -43,7 +43,7 @@ Ring::Ring() {
 	numSubRings = 0;
 
 	for (int i = 0; i < 10; i++)
-		subRing[i] = 0;
+		subRings[i] = 0;
 
 	state = false;
 }
@@ -64,9 +64,9 @@ void scene37_initScene(Scene *sc) {
 	ring->x = ani->_ox - 40;
 	ring->y = ani->_ox + 40;
 	ring->numSubRings = 3;
-	ring->subRing[0] = 1;
-	ring->subRing[1] = 4;
-	ring->subRing[2] = 8;
+	ring->subRings[0] = 1;
+	ring->subRings[1] = 4;
+	ring->subRings[2] = 8;
 	ring->state = false;
 	g_vars->scene37_var05.push_back(ring);
 
@@ -76,9 +76,9 @@ void scene37_initScene(Scene *sc) {
 	ring->x = ani->_ox - 40;
 	ring->y = ani->_ox + 40;
 	ring->numSubRings = 3;
-	ring->subRing[0] = 2;
-	ring->subRing[1] = 5;
-	ring->subRing[2] = 9;
+	ring->subRings[0] = 2;
+	ring->subRings[1] = 5;
+	ring->subRings[2] = 9;
 	ring->state = false;
 	g_vars->scene37_var05.push_back(ring);
 
@@ -88,9 +88,9 @@ void scene37_initScene(Scene *sc) {
 	ring->x = ani->_ox - 40;
 	ring->y = ani->_ox + 40;
 	ring->numSubRings = 3;
-	ring->subRing[0] = 3;
-	ring->subRing[1] = 7;
-	ring->subRing[2] = 11;
+	ring->subRings[0] = 3;
+	ring->subRings[1] = 7;
+	ring->subRings[2] = 11;
 	ring->state = false;
 	g_vars->scene37_var05.push_back(ring);
 


Commit: 9a4d233fc5457687474c0b08c6e828beb8cafeb4
    https://github.com/scummvm/scummvm/commit/9a4d233fc5457687474c0b08c6e828beb8cafeb4
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-18T01:28:57-08:00

Commit Message:
FULLPIPE: Implement scene37_updateCursor()

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



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 7d99393..b1d0809 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -1287,6 +1287,7 @@ namespace Fullpipe {
 // Scene 37
 #define ANI_GUARD_37 2588
 #define ANI_RING 2604
+#define PIC_SC37_MASK 2608
 #define ST_RNG_CLOSED2 4865
 #define ST_RNG_OPEN 2606
 
diff --git a/engines/fullpipe/scenes/scene37.cpp b/engines/fullpipe/scenes/scene37.cpp
index ed9ce02..0383212 100644
--- a/engines/fullpipe/scenes/scene37.cpp
+++ b/engines/fullpipe/scenes/scene37.cpp
@@ -149,4 +149,15 @@ void scene37_initScene(Scene *sc) {
 	g_fp->initArcadeKeys("SC_37");
 }
 
+int scene37_updateCursor() {
+	g_fp->updateCursorCommon();
+
+	if (g_fp->_cursorId == PIC_CSR_ITN && g_fp->_objectIdAtCursor == PIC_SC37_MASK) {
+		if (g_vars->scene37_var07)
+			g_fp->_cursorId = PIC_CSR_GOL;
+	}
+
+	return g_fp->_cursorId;
+}
+
 } // End of namespace Fullpipe


Commit: 8a229f5a665037d0cdf65ae77c818b7c92cd19e8
    https://github.com/scummvm/scummvm/commit/8a229f5a665037d0cdf65ae77c818b7c92cd19e8
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-18T02:01:06-08:00

Commit Message:
FULLPIPE: Implement sceneHandler37()

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



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index b1d0809..13c1da6 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -1287,7 +1287,11 @@ namespace Fullpipe {
 // Scene 37
 #define ANI_GUARD_37 2588
 #define ANI_RING 2604
+#define MSG_SC37_EXITLEFT 5006
+#define MSG_SC37_PULL 2945
+#define MV_GRD37_PULL 2589
 #define PIC_SC37_MASK 2608
+#define SND_37_007 4547
 #define ST_RNG_CLOSED2 4865
 #define ST_RNG_OPEN 2606
 
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index de7ddfe..e8df272 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -366,6 +366,9 @@ Vars::Vars() {
 	scene37_plusMinus1 = 0;
 	scene37_plusMinus2 = 0;
 	scene37_plusMinus3 = 0;
+	scene37_var07 = 0;
+	scene37_var09 = 0;
+	scene37_var10 = 0;
 
 	selector = 0;
 }
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 0137df3..34218e4 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -513,7 +513,8 @@ public:
 	StaticANIObject *scene37_plusMinus1;
 	StaticANIObject *scene37_plusMinus2;
 	StaticANIObject *scene37_plusMinus3;
-
+	int scene37_var09;
+	int scene37_var10;
 
 	PictureObject *selector;
 };
diff --git a/engines/fullpipe/scenes/scene37.cpp b/engines/fullpipe/scenes/scene37.cpp
index 0383212..9bbc6ea 100644
--- a/engines/fullpipe/scenes/scene37.cpp
+++ b/engines/fullpipe/scenes/scene37.cpp
@@ -160,4 +160,107 @@ int scene37_updateCursor() {
 	return g_fp->_cursorId;
 }
 
+void sceneHandler37_updateRing(int num) {
+	warning("STUB: sceneHandler37_updateRing()");
+}
+
+void sceneHandler37_setRingsState() {
+	warning("STUB: sceneHandler37_setRingsState()");
+}
+
+int sceneHandler37(ExCommand *cmd) {
+	if (cmd->_messageKind != 17)
+		return 0;
+
+	switch(cmd->_messageNum) {
+	case MSG_SC37_EXITLEFT:
+		sceneHandler37_updateRing(0);
+		sceneHandler37_updateRing(1);
+		sceneHandler37_updateRing(2);
+
+		break;
+
+	case 29:
+		{
+			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+
+			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);
+						break;
+					}
+				}
+			}
+		}
+
+		break;
+
+	case 33:
+		if (g_fp->_aniMan2) {
+			int x = g_fp->_aniMan2->_ox;
+
+			g_vars->scene37_var10 = x;
+
+			if (x >= 500) {
+				if (x < g_fp->_sceneRect.left + g_vars->scene37_var01)
+					g_fp->_currentScene->_x = x - g_vars->scene37_var03 - g_fp->_sceneRect.left;
+			} else {
+				g_fp->_currentScene->_x = -g_fp->_sceneRect.left;
+			}
+			x = g_vars->scene37_var10;
+
+			if (x > g_fp->_sceneRect.right - g_vars->scene37_var01)
+				g_fp->_currentScene->_x = x + g_vars->scene37_var03 - g_fp->_sceneRect.right;
+		}
+
+		sceneHandler37_setRingsState();
+
+		g_fp->_behaviorManager->updateBehaviors();
+		g_fp->startSceneTrack();
+
+		++g_vars->scene37_var09;
+
+		break;
+
+	case MSG_SC37_PULL:
+		if (g_vars->scene37_var05[0]->ani->_movement && g_vars->scene37_var05[0]->ani->_movement->_id == MV_GRD37_PULL) {
+			if ((g_fp->getObjectState(sO_Guard_1) == g_fp->getObjectEnumState(sO_Guard_1, sO_On) && !g_vars->scene37_var05[0]->state)
+				|| (g_fp->getObjectState(sO_Guard_1) == g_fp->getObjectEnumState(sO_Guard_1, sO_Off) && g_vars->scene37_var05[0]->state)) {
+				g_vars->scene37_plusMinus1->_statics = g_vars->scene37_plusMinus1->getStaticsById(ST_PMS_PLUS);
+			} else {
+				g_vars->scene37_plusMinus1->_statics = g_vars->scene37_plusMinus1->getStaticsById(ST_PMS_MINUS);
+			}
+		} else if (g_vars->scene37_var05[1]->ani->_movement && g_vars->scene37_var05[1]->ani->_movement->_id == MV_GRD37_PULL) {
+			if ((g_fp->getObjectState(sO_Guard_2) == g_fp->getObjectEnumState(sO_Guard_2, sO_On) && !g_vars->scene37_var05[1]->state)
+				|| (g_fp->getObjectState(sO_Guard_2) == g_fp->getObjectEnumState(sO_Guard_2, sO_Off) && g_vars->scene37_var05[1]->state)) {
+				g_vars->scene37_plusMinus2->_statics = g_vars->scene37_plusMinus2->getStaticsById(ST_PMS_PLUS);
+			} else {
+				g_vars->scene37_plusMinus2->_statics = g_vars->scene37_plusMinus2->getStaticsById(ST_PMS_MINUS);
+			}
+		} else if (g_vars->scene37_var05[2]->ani->_movement && g_vars->scene37_var05[2]->ani->_movement->_id == MV_GRD37_PULL) {
+			if ((g_fp->getObjectState(sO_Guard_3) == g_fp->getObjectEnumState(sO_Guard_3, sO_On) && !g_vars->scene37_var05[2]->state)
+				|| (g_fp->getObjectState(sO_Guard_3) == g_fp->getObjectEnumState(sO_Guard_3, sO_Off) && g_vars->scene37_var05[2]->state)) {
+				g_vars->scene37_plusMinus3->_statics = g_vars->scene37_plusMinus3->getStaticsById(ST_PMS_PLUS);
+			} else {
+				g_vars->scene37_plusMinus3->_statics = g_vars->scene37_plusMinus3->getStaticsById(ST_PMS_MINUS);
+			}
+		}
+
+		if (g_vars->scene37_var09) {
+			g_fp->playSound(SND_37_007, 0);
+
+			g_vars->scene37_var09 = 0;
+		}
+
+		break;
+	}
+
+	return 0;
+}
+
 } // End of namespace Fullpipe


Commit: d122b201d6db593db48f0b8d0bc648cc112d2d85
    https://github.com/scummvm/scummvm/commit/d122b201d6db593db48f0b8d0bc648cc112d2d85
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-18T02:06:05-08:00

Commit Message:
FULLPIPE: Implement sceneHandler37_setRingsState()

Changed paths:
    engines/fullpipe/scenes/scene37.cpp



diff --git a/engines/fullpipe/scenes/scene37.cpp b/engines/fullpipe/scenes/scene37.cpp
index 9bbc6ea..a20eaab 100644
--- a/engines/fullpipe/scenes/scene37.cpp
+++ b/engines/fullpipe/scenes/scene37.cpp
@@ -165,7 +165,25 @@ void sceneHandler37_updateRing(int num) {
 }
 
 void sceneHandler37_setRingsState() {
-	warning("STUB: sceneHandler37_setRingsState()");
+	if (g_vars->scene37_var06 == -1) {
+		g_vars->scene37_var06 = g_vars->scene37_var10;
+	} else {
+		for (int i = 0; i < g_vars->scene37_var05.size(); i++) {
+			int x = g_vars->scene37_var05[i]->x;
+
+			if (g_vars->scene37_var06 > x && g_vars->scene37_var10 <= x && !g_vars->scene37_var05[i]->state)
+				sceneHandler37_updateRing(i);
+
+			x = g_vars->scene37_var05[i]->y;
+
+			if (g_vars->scene37_var06 < x && g_vars->scene37_var10 >= x) {
+				if (g_vars->scene37_var05[i]->state)
+					sceneHandler37_updateRing(i);
+			}
+		}
+
+		g_vars->scene37_var06 = g_vars->scene37_var10;
+	}
 }
 
 int sceneHandler37(ExCommand *cmd) {


Commit: 7445f8935320739f81dd7a31bc039b37453eea87
    https://github.com/scummvm/scummvm/commit/7445f8935320739f81dd7a31bc039b37453eea87
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-18T02:07:28-08:00

Commit Message:
FULLPIPE: Plug scene37 in

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



diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index e8df272..95c5e98 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -948,7 +948,6 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
 		_updateCursorCallback = scene36_updateCursor;
 		break;
 
-#if 0
 	case SC_37:
 		sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_37");
 		scene->preloadMovements(sceneVar);
@@ -960,6 +959,7 @@ bool FullpipeEngine::sceneSwitcher(EntranceInfo *entrance) {
 		_updateCursorCallback = scene37_updateCursor;
 		break;
 
+#if 0
 	case SC_38:
 		sceneVar = _gameLoader->_gameVar->getSubVarByName("SC_38");
 		scene->preloadMovements(sceneVar);
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 34218e4..7c91f31 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -169,6 +169,10 @@ int scene36_updateCursor();
 void scene36_initScene(Scene *sc);
 int sceneHandler36(ExCommand *cmd);
 
+void scene37_initScene(Scene *sc);
+int sceneHandler37(ExCommand *ex);
+int scene37_updateCursor();
+
 void sceneDbgMenu_initScene(Scene *sc);
 int sceneHandlerDbgMenu(ExCommand *cmd);
 


Commit: ce69278a48b5763270d14127bc74963627b3f4eb
    https://github.com/scummvm/scummvm/commit/ce69278a48b5763270d14127bc74963627b3f4eb
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-18T03:42:18-08:00

Commit Message:
FULLPIPE: Implement sceneHandler37_updateRing()

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



diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 13c1da6..2968048 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -1290,8 +1290,11 @@ namespace Fullpipe {
 #define MSG_SC37_EXITLEFT 5006
 #define MSG_SC37_PULL 2945
 #define MV_GRD37_PULL 2589
+#define MV_RNG_CLOSE 2605
+#define MV_RNG_OPEN 4612
 #define PIC_SC37_MASK 2608
 #define SND_37_007 4547
+#define ST_GRD37_STAND 2590
 #define ST_RNG_CLOSED2 4865
 #define ST_RNG_OPEN 2606
 
diff --git a/engines/fullpipe/scenes/scene37.cpp b/engines/fullpipe/scenes/scene37.cpp
index a20eaab..82cf5e4 100644
--- a/engines/fullpipe/scenes/scene37.cpp
+++ b/engines/fullpipe/scenes/scene37.cpp
@@ -160,8 +160,44 @@ int scene37_updateCursor() {
 	return g_fp->_cursorId;
 }
 
-void sceneHandler37_updateRing(int num) {
-	warning("STUB: sceneHandler37_updateRing()");
+void sceneHandler37_updateRing(int ringNum) {
+	g_vars->scene37_var05[ringNum]->ani->changeStatics2(ST_GRD37_STAND);
+	g_vars->scene37_var05[ringNum]->ani->startAnim(MV_GRD37_PULL, 0, -1);
+	g_vars->scene37_var05[ringNum]->state = !g_vars->scene37_var05[ringNum]->state;
+
+	StaticANIObject *ani;
+
+	for (int i = 0; i < g_vars->scene37_var05[ringNum]->numSubRings; i++) {
+		ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_RING, g_vars->scene37_var05[ringNum]->subRings[i]);
+
+		if ((ani->_movement && ani->_movement->_id != MV_RNG_CLOSE) || ani->_statics->_staticsId != ST_RNG_CLOSED2) {
+			ani->changeStatics2(ST_RNG_OPEN);
+			ani->startAnim(MV_RNG_CLOSE, 0, -1);
+		} else {
+			ani->changeStatics2(ST_RNG_CLOSED2);
+			ani->startAnim(MV_RNG_OPEN, 0, -1);
+		}
+	}
+
+	g_vars->scene37_var07 = 1;
+
+	for (int j = 0; j < g_vars->scene37_var05.size(); j++) {
+		for (int i = 0; i < g_vars->scene37_var05[ringNum]->numSubRings; i++) {
+			ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_RING, g_vars->scene37_var05[j]->subRings[i]);
+
+			if ((ani->_movement && ani->_movement->_id != MV_RNG_CLOSE) || ani->_statics->_staticsId != ST_RNG_CLOSED2)
+				g_vars->scene37_var07 = 0;
+		}
+	}
+
+	int state;
+
+	if (g_vars->scene37_var07)
+		state = g_fp->getObjectEnumState(sO_LeftPipe_37, sO_IsOpened);
+	else
+		state = g_fp->getObjectEnumState(sO_LeftPipe_37, sO_IsClosed);
+
+	g_fp->setObjectState(sO_LeftPipe_37, state);
 }
 
 void sceneHandler37_setRingsState() {


Commit: dc7fc449299e54a07da4fd0335abb9cdbe1db62d
    https://github.com/scummvm/scummvm/commit/dc7fc449299e54a07da4fd0335abb9cdbe1db62d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2014-01-18T03:49:19-08:00

Commit Message:
FULLPIPE: Renames in scene37. This completes the scene

Changed paths:
    engines/fullpipe/scenes.cpp
    engines/fullpipe/scenes.h
    engines/fullpipe/scenes/scene37.cpp



diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 95c5e98..c021a02 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -356,19 +356,14 @@ Vars::Vars() {
 	scene36_rotohrust = 0;
 	scene36_scissors = 0;
 
-	scene37_var01 = 0;
-	scene37_var02 = 0;
-	scene37_var03 = 0;
-	scene37_var04 = 0;
-	scene37_var05.clear();
-	scene37_var06 = 0;
-	scene37_var07 = 0;
+	scene37_rings.clear();
+	scene37_lastDudeX = -1;
+	scene37_cursorIsLocked = 0;
 	scene37_plusMinus1 = 0;
 	scene37_plusMinus2 = 0;
 	scene37_plusMinus3 = 0;
-	scene37_var07 = 0;
-	scene37_var09 = 0;
-	scene37_var10 = 0;
+	scene37_soundFlipper = 0;
+	scene37_dudeX = 0;
 
 	selector = 0;
 }
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index 7c91f31..61fb5b3 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -507,18 +507,14 @@ public:
 	StaticANIObject *scene36_rotohrust;
 	StaticANIObject *scene36_scissors;
 
-	int scene37_var01;
-	int scene37_var02;
-	int scene37_var03;
-	int scene37_var04;
-	Common::Array<Ring *> scene37_var05;
-	int scene37_var06;
-	int scene37_var07;
+	Common::Array<Ring *> scene37_rings;
+	int scene37_lastDudeX;
+	bool scene37_cursorIsLocked;
 	StaticANIObject *scene37_plusMinus1;
 	StaticANIObject *scene37_plusMinus2;
 	StaticANIObject *scene37_plusMinus3;
-	int scene37_var09;
-	int scene37_var10;
+	int scene37_soundFlipper;
+	int scene37_dudeX;
 
 	PictureObject *selector;
 };
diff --git a/engines/fullpipe/scenes/scene37.cpp b/engines/fullpipe/scenes/scene37.cpp
index 82cf5e4..d0135d7 100644
--- a/engines/fullpipe/scenes/scene37.cpp
+++ b/engines/fullpipe/scenes/scene37.cpp
@@ -52,11 +52,7 @@ void scene37_initScene(Scene *sc) {
 	Ring *ring;
 	StaticANIObject *ani;
 
-	g_vars->scene37_var01 = 200;
-	g_vars->scene37_var02 = 200;
-	g_vars->scene37_var03 = 300;
-	g_vars->scene37_var04 = 300;
-	g_vars->scene37_var06 = -1;
+	g_vars->scene37_lastDudeX = -1;
 
 	ring = new Ring();
 	ani = sc->getStaticANIObject1ById(ANI_GUARD_37, 0);
@@ -68,7 +64,7 @@ void scene37_initScene(Scene *sc) {
 	ring->subRings[1] = 4;
 	ring->subRings[2] = 8;
 	ring->state = false;
-	g_vars->scene37_var05.push_back(ring);
+	g_vars->scene37_rings.push_back(ring);
 
 	ring = new Ring();
 	ani = sc->getStaticANIObject1ById(ANI_GUARD_37, 1);
@@ -80,7 +76,7 @@ void scene37_initScene(Scene *sc) {
 	ring->subRings[1] = 5;
 	ring->subRings[2] = 9;
 	ring->state = false;
-	g_vars->scene37_var05.push_back(ring);
+	g_vars->scene37_rings.push_back(ring);
 
 	ring = new Ring();
 	ani = sc->getStaticANIObject1ById(ANI_GUARD_37, 2);
@@ -92,7 +88,7 @@ void scene37_initScene(Scene *sc) {
 	ring->subRings[1] = 7;
 	ring->subRings[2] = 11;
 	ring->state = false;
-	g_vars->scene37_var05.push_back(ring);
+	g_vars->scene37_rings.push_back(ring);
 
 	g_fp->setObjectState(sO_LeftPipe_37, g_fp->getObjectEnumState(sO_LeftPipe_37, sO_IsClosed));
 	
@@ -100,12 +96,12 @@ void scene37_initScene(Scene *sc) {
 
 	g_fp->_currentScene = sc;
 
-	g_vars->scene37_var07 = 0;
+	g_vars->scene37_cursorIsLocked = false;
 
 	g_vars->scene37_plusMinus1 = sc->getStaticANIObject1ById(ANI_PLUSMINUS, 1);
 
-	for (int i = 0; i < g_vars->scene37_var05[0]->numSubRings; i++) {
-		ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_RING, g_vars->scene37_var05[0]->subRings[i]);
+	for (int i = 0; i < g_vars->scene37_rings[0]->numSubRings; i++) {
+		ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_RING, g_vars->scene37_rings[0]->subRings[i]);
 
 		if (g_fp->getObjectState(sO_Guard_1) == g_fp->getObjectEnumState(sO_Guard_1, sO_On)) {
 			g_vars->scene37_plusMinus1->_statics = g_vars->scene37_plusMinus1->getStaticsById(ST_PMS_PLUS);
@@ -118,8 +114,8 @@ void scene37_initScene(Scene *sc) {
 
 	g_vars->scene37_plusMinus2 = sc->getStaticANIObject1ById(ANI_PLUSMINUS, 2);
 
-	for (int i = 0; i < g_vars->scene37_var05[1]->numSubRings; i++) {
-		ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_RING, g_vars->scene37_var05[1]->subRings[i]);
+	for (int i = 0; i < g_vars->scene37_rings[1]->numSubRings; i++) {
+		ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_RING, g_vars->scene37_rings[1]->subRings[i]);
 
 		if (g_fp->getObjectState(sO_Guard_2) == g_fp->getObjectEnumState(sO_Guard_2, sO_On)) {
 			g_vars->scene37_plusMinus2->_statics = g_vars->scene37_plusMinus2->getStaticsById(ST_PMS_PLUS);
@@ -132,8 +128,8 @@ void scene37_initScene(Scene *sc) {
 
 	g_vars->scene37_plusMinus3 = sc->getStaticANIObject1ById(ANI_PLUSMINUS, 3);
 
-	for (int i = 0; i < g_vars->scene37_var05[2]->numSubRings; i++) {
-		ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_RING, g_vars->scene37_var05[2]->subRings[i]);
+	for (int i = 0; i < g_vars->scene37_rings[2]->numSubRings; i++) {
+		ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_RING, g_vars->scene37_rings[2]->subRings[i]);
 
 		if (g_fp->getObjectState(sO_Guard_3) == g_fp->getObjectEnumState(sO_Guard_3, sO_On)) {
 			g_vars->scene37_plusMinus3->_statics = g_vars->scene37_plusMinus3->getStaticsById(ST_PMS_PLUS);
@@ -153,7 +149,7 @@ int scene37_updateCursor() {
 	g_fp->updateCursorCommon();
 
 	if (g_fp->_cursorId == PIC_CSR_ITN && g_fp->_objectIdAtCursor == PIC_SC37_MASK) {
-		if (g_vars->scene37_var07)
+		if (g_vars->scene37_cursorIsLocked)
 			g_fp->_cursorId = PIC_CSR_GOL;
 	}
 
@@ -161,14 +157,14 @@ int scene37_updateCursor() {
 }
 
 void sceneHandler37_updateRing(int ringNum) {
-	g_vars->scene37_var05[ringNum]->ani->changeStatics2(ST_GRD37_STAND);
-	g_vars->scene37_var05[ringNum]->ani->startAnim(MV_GRD37_PULL, 0, -1);
-	g_vars->scene37_var05[ringNum]->state = !g_vars->scene37_var05[ringNum]->state;
+	g_vars->scene37_rings[ringNum]->ani->changeStatics2(ST_GRD37_STAND);
+	g_vars->scene37_rings[ringNum]->ani->startAnim(MV_GRD37_PULL, 0, -1);
+	g_vars->scene37_rings[ringNum]->state = !g_vars->scene37_rings[ringNum]->state;
 
 	StaticANIObject *ani;
 
-	for (int i = 0; i < g_vars->scene37_var05[ringNum]->numSubRings; i++) {
-		ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_RING, g_vars->scene37_var05[ringNum]->subRings[i]);
+	for (int i = 0; i < g_vars->scene37_rings[ringNum]->numSubRings; i++) {
+		ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_RING, g_vars->scene37_rings[ringNum]->subRings[i]);
 
 		if ((ani->_movement && ani->_movement->_id != MV_RNG_CLOSE) || ani->_statics->_staticsId != ST_RNG_CLOSED2) {
 			ani->changeStatics2(ST_RNG_OPEN);
@@ -179,20 +175,20 @@ void sceneHandler37_updateRing(int ringNum) {
 		}
 	}
 
-	g_vars->scene37_var07 = 1;
+	g_vars->scene37_cursorIsLocked = true;
 
-	for (int j = 0; j < g_vars->scene37_var05.size(); j++) {
-		for (int i = 0; i < g_vars->scene37_var05[ringNum]->numSubRings; i++) {
-			ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_RING, g_vars->scene37_var05[j]->subRings[i]);
+	for (int j = 0; j < g_vars->scene37_rings.size(); j++) {
+		for (int i = 0; i < g_vars->scene37_rings[ringNum]->numSubRings; i++) {
+			ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_RING, g_vars->scene37_rings[j]->subRings[i]);
 
 			if ((ani->_movement && ani->_movement->_id != MV_RNG_CLOSE) || ani->_statics->_staticsId != ST_RNG_CLOSED2)
-				g_vars->scene37_var07 = 0;
+				g_vars->scene37_cursorIsLocked = false;
 		}
 	}
 
 	int state;
 
-	if (g_vars->scene37_var07)
+	if (g_vars->scene37_cursorIsLocked)
 		state = g_fp->getObjectEnumState(sO_LeftPipe_37, sO_IsOpened);
 	else
 		state = g_fp->getObjectEnumState(sO_LeftPipe_37, sO_IsClosed);
@@ -201,24 +197,24 @@ void sceneHandler37_updateRing(int ringNum) {
 }
 
 void sceneHandler37_setRingsState() {
-	if (g_vars->scene37_var06 == -1) {
-		g_vars->scene37_var06 = g_vars->scene37_var10;
+	if (g_vars->scene37_lastDudeX == -1) {
+		g_vars->scene37_lastDudeX = g_vars->scene37_dudeX;
 	} else {
-		for (int i = 0; i < g_vars->scene37_var05.size(); i++) {
-			int x = g_vars->scene37_var05[i]->x;
+		for (int i = 0; i < g_vars->scene37_rings.size(); i++) {
+			int x = g_vars->scene37_rings[i]->x;
 
-			if (g_vars->scene37_var06 > x && g_vars->scene37_var10 <= x && !g_vars->scene37_var05[i]->state)
+			if (g_vars->scene37_lastDudeX > x && g_vars->scene37_dudeX <= x && !g_vars->scene37_rings[i]->state)
 				sceneHandler37_updateRing(i);
 
-			x = g_vars->scene37_var05[i]->y;
+			x = g_vars->scene37_rings[i]->y;
 
-			if (g_vars->scene37_var06 < x && g_vars->scene37_var10 >= x) {
-				if (g_vars->scene37_var05[i]->state)
+			if (g_vars->scene37_lastDudeX < x && g_vars->scene37_dudeX >= x) {
+				if (g_vars->scene37_rings[i]->state)
 					sceneHandler37_updateRing(i);
 			}
 		}
 
-		g_vars->scene37_var06 = g_vars->scene37_var10;
+		g_vars->scene37_lastDudeX = g_vars->scene37_dudeX;
 	}
 }
 
@@ -258,18 +254,18 @@ int sceneHandler37(ExCommand *cmd) {
 		if (g_fp->_aniMan2) {
 			int x = g_fp->_aniMan2->_ox;
 
-			g_vars->scene37_var10 = x;
+			g_vars->scene37_dudeX = x;
 
 			if (x >= 500) {
-				if (x < g_fp->_sceneRect.left + g_vars->scene37_var01)
-					g_fp->_currentScene->_x = x - g_vars->scene37_var03 - g_fp->_sceneRect.left;
+				if (x < g_fp->_sceneRect.left + 200)
+					g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
 			} else {
 				g_fp->_currentScene->_x = -g_fp->_sceneRect.left;
 			}
-			x = g_vars->scene37_var10;
+			x = g_vars->scene37_dudeX;
 
-			if (x > g_fp->_sceneRect.right - g_vars->scene37_var01)
-				g_fp->_currentScene->_x = x + g_vars->scene37_var03 - g_fp->_sceneRect.right;
+			if (x > g_fp->_sceneRect.right - 200)
+				g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
 		}
 
 		sceneHandler37_setRingsState();
@@ -277,38 +273,38 @@ int sceneHandler37(ExCommand *cmd) {
 		g_fp->_behaviorManager->updateBehaviors();
 		g_fp->startSceneTrack();
 
-		++g_vars->scene37_var09;
+		++g_vars->scene37_soundFlipper;
 
 		break;
 
 	case MSG_SC37_PULL:
-		if (g_vars->scene37_var05[0]->ani->_movement && g_vars->scene37_var05[0]->ani->_movement->_id == MV_GRD37_PULL) {
-			if ((g_fp->getObjectState(sO_Guard_1) == g_fp->getObjectEnumState(sO_Guard_1, sO_On) && !g_vars->scene37_var05[0]->state)
-				|| (g_fp->getObjectState(sO_Guard_1) == g_fp->getObjectEnumState(sO_Guard_1, sO_Off) && g_vars->scene37_var05[0]->state)) {
+		if (g_vars->scene37_rings[0]->ani->_movement && g_vars->scene37_rings[0]->ani->_movement->_id == MV_GRD37_PULL) {
+			if ((g_fp->getObjectState(sO_Guard_1) == g_fp->getObjectEnumState(sO_Guard_1, sO_On) && !g_vars->scene37_rings[0]->state)
+				|| (g_fp->getObjectState(sO_Guard_1) == g_fp->getObjectEnumState(sO_Guard_1, sO_Off) && g_vars->scene37_rings[0]->state)) {
 				g_vars->scene37_plusMinus1->_statics = g_vars->scene37_plusMinus1->getStaticsById(ST_PMS_PLUS);
 			} else {
 				g_vars->scene37_plusMinus1->_statics = g_vars->scene37_plusMinus1->getStaticsById(ST_PMS_MINUS);
 			}
-		} else if (g_vars->scene37_var05[1]->ani->_movement && g_vars->scene37_var05[1]->ani->_movement->_id == MV_GRD37_PULL) {
-			if ((g_fp->getObjectState(sO_Guard_2) == g_fp->getObjectEnumState(sO_Guard_2, sO_On) && !g_vars->scene37_var05[1]->state)
-				|| (g_fp->getObjectState(sO_Guard_2) == g_fp->getObjectEnumState(sO_Guard_2, sO_Off) && g_vars->scene37_var05[1]->state)) {
+		} else if (g_vars->scene37_rings[1]->ani->_movement && g_vars->scene37_rings[1]->ani->_movement->_id == MV_GRD37_PULL) {
+			if ((g_fp->getObjectState(sO_Guard_2) == g_fp->getObjectEnumState(sO_Guard_2, sO_On) && !g_vars->scene37_rings[1]->state)
+				|| (g_fp->getObjectState(sO_Guard_2) == g_fp->getObjectEnumState(sO_Guard_2, sO_Off) && g_vars->scene37_rings[1]->state)) {
 				g_vars->scene37_plusMinus2->_statics = g_vars->scene37_plusMinus2->getStaticsById(ST_PMS_PLUS);
 			} else {
 				g_vars->scene37_plusMinus2->_statics = g_vars->scene37_plusMinus2->getStaticsById(ST_PMS_MINUS);
 			}
-		} else if (g_vars->scene37_var05[2]->ani->_movement && g_vars->scene37_var05[2]->ani->_movement->_id == MV_GRD37_PULL) {
-			if ((g_fp->getObjectState(sO_Guard_3) == g_fp->getObjectEnumState(sO_Guard_3, sO_On) && !g_vars->scene37_var05[2]->state)
-				|| (g_fp->getObjectState(sO_Guard_3) == g_fp->getObjectEnumState(sO_Guard_3, sO_Off) && g_vars->scene37_var05[2]->state)) {
+		} else if (g_vars->scene37_rings[2]->ani->_movement && g_vars->scene37_rings[2]->ani->_movement->_id == MV_GRD37_PULL) {
+			if ((g_fp->getObjectState(sO_Guard_3) == g_fp->getObjectEnumState(sO_Guard_3, sO_On) && !g_vars->scene37_rings[2]->state)
+				|| (g_fp->getObjectState(sO_Guard_3) == g_fp->getObjectEnumState(sO_Guard_3, sO_Off) && g_vars->scene37_rings[2]->state)) {
 				g_vars->scene37_plusMinus3->_statics = g_vars->scene37_plusMinus3->getStaticsById(ST_PMS_PLUS);
 			} else {
 				g_vars->scene37_plusMinus3->_statics = g_vars->scene37_plusMinus3->getStaticsById(ST_PMS_MINUS);
 			}
 		}
 
-		if (g_vars->scene37_var09) {
+		if (g_vars->scene37_soundFlipper) {
 			g_fp->playSound(SND_37_007, 0);
 
-			g_vars->scene37_var09 = 0;
+			g_vars->scene37_soundFlipper = 0;
 		}
 
 		break;






More information about the Scummvm-git-logs mailing list