[Scummvm-git-logs] scummvm master -> 0e75b171318b339e3a23e22cb9f9f1ceec858c5f

dreammaster noreply at scummvm.org
Sat Aug 24 17:30:29 UTC 2024


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

Summary:
0e75b17131 M4: RIDDLE: More room 407 parser and support methods


Commit: 0e75b171318b339e3a23e22cb9f9f1ceec858c5f
    https://github.com/scummvm/scummvm/commit/0e75b171318b339e3a23e22cb9f9f1ceec858c5f
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-08-24T10:30:22-07:00

Commit Message:
M4: RIDDLE: More room 407 parser and support methods

Changed paths:
    engines/m4/riddle/rooms/section4/room407.cpp
    engines/m4/riddle/rooms/section4/room407.h


diff --git a/engines/m4/riddle/rooms/section4/room407.cpp b/engines/m4/riddle/rooms/section4/room407.cpp
index ebe814df384..cd10627448c 100644
--- a/engines/m4/riddle/rooms/section4/room407.cpp
+++ b/engines/m4/riddle/rooms/section4/room407.cpp
@@ -798,7 +798,7 @@ void Room407::parser() {
 	} else if (lookFlag && player_said("PUMP ROD ")) {
 		digi_play("407r13", 1);
 	} else if (lookFlag && player_said("LEVER KEY  ")) {
-		lookLeverKey();
+		roofPistonPopup();
 		digi_play("407r26a", 1);
 	} else if (lookFlag && player_said("RUBBER PLUG") &&
 			inv_object_is_here("RUBBER PLUG")) {
@@ -806,7 +806,7 @@ void Room407::parser() {
 	} else if (lookFlag && player_said("JAR/RUBBER PLUG") &&
 			inv_object_is_here("JAR/RUBBER PLUG")) {
 		if (_xyzzy7 == 1112)
-			lookGlassBottom();
+			glassBottomPopup();
 		digi_play("407r77", 1);
 	} else if (lookFlag && player_said("FAUCET PIPE") &&
 			inv_object_is_here("FAUCET PIPE")) {
@@ -818,11 +818,64 @@ void Room407::parser() {
 			inv_object_is_here("FAUCET HANDLE")) {
 		digi_play("407r08", 1);
 	} else if (lookFlag && player_said("TABLE PIVOT")) {
-		lookPivot();
+		pivotPopup();
 		digi_play("407r09", 1);
 	} else if (lookFlag && player_said("NOZZLES")) {
-		lookNozzles();
+		tabletopPopup();
 		digi_play("407r10", 1);
+	} else if (lookFlag && player_said("PUMP ROD") &&
+			inv_object_is_here("PUMP ROD")) {
+		digi_play("407r13", 1);
+	} else if (lookFlag && player_said("GLASS JAR") &&
+			inv_object_is_here("GLASS JAR") && lookGlassJar()) {
+		// No implementation
+	} else if (lookFlag && player_said("EMERALD/CORK") &&
+			inv_object_is_here("EMERALD/CORK") && lookEmeraldCork()) {
+		// No implementation
+	} else if (lookFlag && player_said("IRON SUPPORT")) {
+		if (_xyzzy7 == 1112) {
+			glassTopPopup();
+		} else {
+			glassGonePopup();
+		}
+	} else if (lookFlag && player_said("SMALL GEAR WHEEL")) {
+		if (_xyzzy7 == 1112) {
+			glassTopPopup();
+		} else {
+			glassGonePopup();
+		}
+
+		digi_play("407r21", 1);
+	} else if (lookFlag && player_said("PERIODIC TABLE/JAR") && _xyzzy7 == 1112) {
+		glassTopPopup();
+	} else if (lookFlag && player_said("PERIODIC TABLE")) {
+		if (inv_player_has("PERIODIC TABLE")) {
+			periodicTablePopup();
+		} else {
+			digi_play(_frotz8 ? "407r99c" : "407r22", 1);
+		}
+	} else if (lookFlag && player_said("BRACKET")) {
+		roofPistonPopup();
+		digi_play("407r24", 1);
+	} else if (lookFlag && player_said("CEILING PISTON")) {
+		roofPistonPopup();
+		digi_play("407r25", 1);
+	} else if (lookFlag && player_said("LEVER KEY") &&
+			inv_object_is_here("LEVER KEY") && lookLeverKey()) {
+		// No implementation
+	} else if (lookFlag && player_said("LEVER KEY ") &&
+			inv_object_is_here("LEVER KEY")) {
+		pivotPopup();
+		digi_play("407r64", 1);
+	} else if (lookFlag && player_said("AIR VALVE/HANDLE")) {
+		tabletopPopup();
+		digi_play("407r63", 1);
+	} else if (lookFlag && player_said("AIR VALVE")) {
+		tabletopPopup();
+		digi_play("407r62", 1);
+	} else if (lookFlag && player_said("NOZZLES/TUBE")) {
+		tabletopPopup();
+		digi_play("407r31", 1);
 	}
 	// TODO
 	else {
@@ -1014,7 +1067,7 @@ void Room407::useMicroscope() {
 	}
 }
 
-void Room407::lookLeverKey() {
+void Room407::roofPistonPopup() {
 	if (_G(kernel).trigger == -1) {
 		_int5 = 1030;
 		_roofPiston = series_place_sprite("407 ROOF PISTON/BRACE",
@@ -1035,7 +1088,7 @@ void Room407::lookLeverKey() {
 	}
 }
 
-void Room407::lookGlassBottom() {
+void Room407::glassBottomPopup() {
 	if (_G(kernel).trigger == -1) {
 		_int4 = 1030;
 		_glassTopPopup = series_place_sprite(
@@ -1062,7 +1115,45 @@ void Room407::lookGlassBottom() {
 	}
 }
 
-void Room407::lookPivot() {
+void Room407::glassTopPopup() {
+	if (_G(kernel).trigger == -1) {
+		_int3 = 1030;
+		_glassTopPopup = series_place_sprite("407 GLASS TOP POPUP",
+			0, 0, 0, 100, 0x200);
+
+		if (_val6 == 1010) {
+			_glassTopPopupWithItems1 = series_place_sprite(
+				"407 GLASS TOP POPUP WITH ITEMS", 1, 0, 0, 100, 0x100);
+
+			if (!player_said("SMALL GEAR WHEEL"))
+				digi_play("407r66a", 1);
+
+		} else if (_xyzzy6 == 1116) {
+			_glassTopPopupWithItems2 = series_place_sprite(
+				"407 GLASS TOP POPUP WITH ITEMS", 0, 0, 0, 100, 0x100);
+
+			if (!player_said("SMALL GEAR WHEEL"))
+				digi_play("407r99a", 1);
+
+		} else {
+			if (!player_said("SMALL GEAR WHEEL"))
+				digi_play("407r19", 1);
+		}
+	}
+}
+
+void Room407::glassGonePopup() {
+	if (_G(kernel).trigger == -1) {
+		_int6 = 1030;
+		_glassGone = series_place_sprite("407 GLASS GONE CU PU",
+			0, 0, 0, 100, 0x200);
+		disableHotspots();
+		hotspot_set_active(" ", true);
+		player_set_commands_allowed(true);
+	}
+}
+
+void Room407::pivotPopup() {
 	if (_G(kernel).trigger == -1) {
 		_int1 = 1030;
 		_pivotPopup = series_place_sprite("407 PIVOT POPUP",
@@ -1078,7 +1169,7 @@ void Room407::lookPivot() {
 	}
 }
 
-void Room407::lookNozzles() {
+void Room407::tabletopPopup() {
 	if (_G(kernel).trigger == -1) {
 		_frotz10 = 1030;
 		_tabletopPopup = series_place_sprite("407 TABLETOP POPUP",
@@ -1103,6 +1194,124 @@ void Room407::lookNozzles() {
 	}
 }
 
+bool Room407::lookGlassJar() {
+	if (_xyzzy7 == 1112) {
+		switch (_G(kernel).trigger) {
+		case -1:
+			lookGlassJar();
+
+			if (!inv_object_is_here("EMERALD/CORK")) {
+				digi_play("407r99a", 1);
+			} else if (!_frotz6 && !_frotz7) {
+				_frotz7 = 1;
+				digi_play("407r15", 1);
+			} else {
+				_frotz7 = 1;
+				digi_play("407r15", 1, 255, _frotz6 ? 2 : -1);
+			}
+			return true;
+		case 1:
+			digi_play("407r16", 1);
+			return true;
+		case 2:
+			digi_play("407r16a", 1);
+			return true;
+		default:
+			break;
+		}
+	}
+
+	return false;
+}
+
+void Room407::fullglassPopup() {
+	if (_G(kernel).trigger == -1) {
+		_int2 = 1030;
+		_glassTopPopup = series_place_sprite("407 FULL GLASS POPUP",
+			0, 0, 0, 100, 0x200);
+
+		if (_xyzzy6 == 1116)
+			_glassTopPopupWithItems2 = series_place_sprite(
+				"407 FULL GLASS POPUP WITH ITEMS", 0, 0, 0, 100, 0x100);
+
+		if (_xyzzy8 == 1116)
+			_glassBottomWithItems1 = series_place_sprite(
+				"407 FULL GLASS POPUP WITH ITEMS", 1, 0, 0, 100, 0x100);
+
+		if (_xyzzy5 == 1116)
+			_glassBottomWithItems2 = series_place_sprite(
+				"407 FULL GLASS POPUP WITH ITEMS", 4, 0, 0, 100, 0x100);
+
+		if (_val6 == 1010)
+			_glassTopPopupWithItems1 = series_place_sprite(
+				"407 FULL GLASS POPUP WITH ITEMS", 6, 0, 0, 100, 0x100);
+
+		disableHotspots();
+		hotspot_set_active(" ", true);
+		player_set_commands_allowed(true);
+	}
+}
+
+bool Room407::lookEmeraldCork() {
+	if (_xyzzy7 == 1112) {
+		switch (_G(kernel).trigger) {
+		case -1:
+			glassBottomPopup();
+
+			if (_frotz6) {
+				digi_play("407r17", 1);
+			} else {
+				_frotz6 = 1;
+				digi_play("407r17", 1, 255, 1);
+			}
+			return true;
+
+		case 1:
+			digi_play("407r17a", 1);
+			return true;
+
+		default:
+			break;
+		}
+	}
+
+	return false;
+}
+
+void Room407::periodicTablePopup() {
+	if (_G(kernel).trigger == -1) {
+		_val15 = 1030;
+		_glassTopPopupWithItems2 = series_place_sprite(
+			"Large periodic table", 0, 0, 0, 100, 0);
+		disableHotspots();
+		hotspot_set_active(" ", true);
+		player_set_commands_allowed(true);
+	}
+}
+
+bool Room407::lookLeverKey() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		if (_frotz9) {
+			digi_play("407r26a", 1);
+		} else {
+			digi_play("407r26", 1, 255, 2);
+			_frotz9 = 1;
+		}
+
+		return true;
+
+	case 2:
+		digi_play("407r26a", 1);
+		return true;
+
+	default:
+		break;
+	}
+
+	return false;
+}
+
 } // namespace Rooms
 } // namespace Riddle
 } // namespace M4
diff --git a/engines/m4/riddle/rooms/section4/room407.h b/engines/m4/riddle/rooms/section4/room407.h
index fda582b1c69..c1ea9586f86 100644
--- a/engines/m4/riddle/rooms/section4/room407.h
+++ b/engines/m4/riddle/rooms/section4/room407.h
@@ -129,10 +129,17 @@ private:
 	void setHotspots();
 	void lookItem(const char *item, const char *digi);
 	void useMicroscope();
-	void lookLeverKey();
-	void lookGlassBottom();
-	void lookPivot();
-	void lookNozzles();
+	void roofPistonPopup();
+	void glassBottomPopup();
+	void glassTopPopup();
+	void glassGonePopup();
+	void pivotPopup();
+	void tabletopPopup();
+	bool lookGlassJar();
+	void fullglassPopup();
+	bool lookEmeraldCork();
+	void periodicTablePopup();
+	bool lookLeverKey();
 
 public:
 	Room407() : Room() {}




More information about the Scummvm-git-logs mailing list