[Scummvm-git-logs] scummvm master -> 67e91ca74e8a93222e1e9bc1c5004e48e20708ff

dreammaster noreply at scummvm.org
Thu Aug 29 03:33:20 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:
67e91ca74e M4: RIDDLE: More room 407 parser


Commit: 67e91ca74e8a93222e1e9bc1c5004e48e20708ff
    https://github.com/scummvm/scummvm/commit/67e91ca74e8a93222e1e9bc1c5004e48e20708ff
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-08-28T20:33:15-07:00

Commit Message:
M4: RIDDLE: More room 407 parser

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 e1318825ba1..17dce7abeee 100644
--- a/engines/m4/riddle/rooms/section4/room407.cpp
+++ b/engines/m4/riddle/rooms/section4/room407.cpp
@@ -1099,6 +1099,48 @@ void Room407::parser() {
 		takeFaucetPipe2();
 	} else if (takeFlag && player_said("GARDEN HOSE ") && _xyzzy2 == 1116) {
 		takeGardenHose3();
+	} else if (takeFlag && player_said("SURGICAL TUBE ") && _xyzzy3 == 1116) {
+		takeSurgicalTube3();
+	} else if (takeFlag && player_said("GLASS JAR ")) {
+		if (_val8 == 1116 || _xyzzy7 != 1114)
+			digi_play("com096", 1);
+		else
+			takeGlassJar1();
+	} else if (takeFlag && player_said("GLASS JAR") &&
+			_val6 == 1010 && _xyzzy7 == 1112) {
+		takeGlassJar2();
+	} else if (takeFlag && player_said("PERIODIC TABLE") && _xyzzy6 == 1112) {
+		takePeriodicTable1();
+	} else if (takeFlag && player_said("PERIODIC TABLE ")) {
+		takePeriodicTable2();
+	} else if (takeFlag && player_said("JAR/GRIPS ") &&
+			(_xyzzy7 == 1114 || _xyzzy7 == 1140) &&
+			_xyzzy4 == 1116) {
+		takeJarGrips();
+	} else if (takeFlag && player_said("JAR/CORK") && _xyzzy7 == 1112) {
+		takeJarCork1();
+	} else if (takeFlag && player_said("JAR/CORK ") &&
+			(_xyzzy7 == 1114 || _xyzzy7 == 1140) &&
+			_xyzzy9 == 1116) {
+		takeJarCork2();
+	} else if (takeFlag && player_said("JAR/RUBBER PLUG") && _xyzzy7 == 1112) {
+		takeJarRubberPlug1();
+	} else if (takeFlag && player_said("JAR/RUBBER PLUG ") &&
+			(_xyzzy7 == 1114 || _xyzzy7 == 1140) &&
+			_xyzzy5 == 1116) {
+		takeJarRubberPlug2();
+	} else if (takeFlag && player_said("NOZZLES/TUBE")) {
+		takeNozzlesTube();
+	} else if (takeFlag && player_said("LEVER KEY") && _val10 == 1112) {
+		takeLeverKey1();
+	} else if (takeFlag && player_said("LEVER KEY ")) {
+		takeLeverKey2();
+	} else if (takeFlag && player_said("AIR VALVE/HANDLE") && _val9 == 1110) {
+		takeAirValveHandle();
+	} else if (takeFlag && player_said("FAUCET HANDLE") && _val9 == 1100) {
+		takeFaucetHandle();
+	} else if (takeFlag && player_said("FAUCET PIPE") && _val8 == 1100) {
+		takeFaucetPipe3();
 	}
 	// TODO
 	else {
@@ -3221,6 +3263,66 @@ void Room407::takeFaucetPipe2() {
 	}
 }
 
+void Room407::takeFaucetPipe3() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		if (_val4 == 1010)
+			digi_play("407r99e", 1);
+		else
+			reachHand(10);
+		break;
+
+	case 1:
+		terminateMachineAndNull(_faucet1);
+		inv_give_to_player("FAUCET PIPE");
+		hotspot_set_active("FAUCET PIPE", false);
+
+		if (_xyzzy2 == 1100) {
+			terminateMachineAndNull(_tubeInDrawer);
+			inv_give_to_player("GARDEN HOSE");
+			hotspot_set_active("GARDEN HOSE    ", false);
+			_xyzzy2 = 1000;
+
+			terminateMachineAndNull(_tubeInDrawer);
+			hotspot_set_active("SURGICAL TUBE   ", false);
+			inv_give_to_player("SURGICAL TUBE");
+			_xyzzy3 = 1000;
+
+			kernel_examine_inventory_object("PING FAUCET PIPE/HOSE/TUBE",
+				_G(master_palette), 5, 1, 75, 200, 2, 0, -1);
+		} else if (_xyzzy3 == 1100) {
+			terminateMachineAndNull(_tubeInDrawer);
+			hotspot_set_active("SURGICAL TUBE   ", false);
+			inv_give_to_player("SURGICAL TUBE");
+			_xyzzy3 = 1000;
+
+			kernel_examine_inventory_object("PING FAUCET PIPE/TUBE",
+				_G(master_palette), 5, 1, 75, 200, 2, 0, -1);
+		} else {
+			kernel_examine_inventory_object("PING FAUCET PIPE",
+				_G(master_palette), 5, 1, 75, 200, 2, 0, -1);
+		}
+		break;
+
+	case 2:
+		sendWSMessage_120000(4);
+		break;
+
+	case 4:
+		sendWSMessage_150000(5);
+		break;
+
+	case 5:
+		series_unload(_ripHiHand1);
+		_val8 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	default:
+		break;
+	}
+}
+
 void Room407::takeSurgicalTube1() {
 	switch (_G(kernel).trigger) {
 	case -1:
@@ -3332,6 +3434,42 @@ void Room407::takeSurgicalTube2() {
 	}
 }
 
+void Room407::takeSurgicalTube3() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		player_set_commands_allowed(false);
+		_ripLowHand1 = series_load("RIP LOW REACH POS1");
+		setGlobals1(_ripLowHand1, 1, 11, 11, 11, 0, 11, 1, 1, 1);
+		sendWSMessage_110000(1);
+		break;
+
+	case 1:
+		terminateMachineAndNull(_tubeInDrawer);
+		inv_give_to_player("SURGICAL TUBE");
+		hotspot_set_active("SURGICAL TUBE ", false);
+		kernel_examine_inventory_object("PING SURGICAL TUBE",
+			_G(master_palette), 5, 1, 380, 250, 3, nullptr, -1);
+		break;
+
+	case 3:
+		sendWSMessage_120000(4);
+		break;
+
+	case 4:
+		sendWSMessage_150000(5);
+		break;
+
+	case 5:
+		series_unload(_ripLowHand1);
+		_xyzzy3 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	default:
+		break;
+	}
+}
+
 void Room407::takeGardenHose1() {
 	switch (_G(kernel).trigger) {
 	case -1:
@@ -3473,6 +3611,536 @@ void Room407::takeGardenHose3() {
 	}
 }
 
+void Room407::takeGlassJar1() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		player_set_commands_allowed(false);
+		_ripHiHand2 = series_load("rip trek hi reach 2hnd");
+		setGlobals1(_ripHiHand2, 1, 13, 13, 13, 0, 13, 1, 1, 1);
+		sendWSMessage_110000(1);
+		break;
+
+	case 1:
+		terminateMachineAndNull(_bottle);
+		inv_give_to_player("GLASS JAR");
+		hotspot_set_active("GLASS JAR ", false);
+
+		if (_xyzzy5 == 1116) {
+			terminateMachineAndNull(_stopperInDrawer);
+			inv_give_to_player("RUBBER PLUG");
+			hotspot_set_active("JAR/RUBBER PLUG ", false);
+			_xyzzy5 = 1000;
+		}
+
+		if (_xyzzy4 == 1116) {
+			terminateMachineAndNull(_handleInDrawer);
+			inv_give_to_player("PUMP GRIPS");
+			hotspot_set_active("JAR/GRIPS ", false);
+			_xyzzy4 = 1000;
+		}
+
+		if (_xyzzy9 == 1116) {
+			terminateMachineAndNull(_bits);
+			inv_give_to_player("CORK");
+			hotspot_set_active("JAR/CORK ", false);
+			_xyzzy9 = 1000;
+		}
+
+		kernel_examine_inventory_object("PING GLASS JAR",
+			_G(master_palette), 5, 1, 375, 150, 3, 0, -1);
+		break;
+
+	case 3:
+		sendWSMessage_120000(4);
+		break;
+
+	case 4:
+		sendWSMessage_150000(5);
+		break;
+
+	case 5:
+		series_unload(_ripHiHand2);
+		_xyzzy7 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	default:
+		break;
+	}
+}
+
+void Room407::takeGlassJar2() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		player_set_commands_allowed(false);
+		_ripHiHand2 = series_load("rip trek hi reach 2hnd");
+		setGlobals1(_ripHiHand2, 1, 13, 13, 13, 0, 13, 1, 1, 1);
+		sendWSMessage_110000(1);
+		break;
+
+	case 1:
+		terminateMachineAndNull(_bottle);
+		inv_give_to_player("GLASS JAR");
+		hotspot_set_active("GLASS JAR", false);
+
+		if (_xyzzy5 == 1116) {
+			terminateMachineAndNull(_stopperInDrawer);
+			inv_give_to_player("RUBBER PLUG");
+			hotspot_set_active("JAR/RUBBER PLUG", false);
+			_xyzzy5 = 1000;
+		}
+
+		if (_xyzzy9 == 1116) {
+			terminateMachineAndNull(_bits);
+			inv_give_to_player("CORK");
+			hotspot_set_active("JAR/CORK", false);
+			_xyzzy9 = 1000;
+		}
+
+		kernel_examine_inventory_object("PING GLASS JAR",
+			_G(master_palette), 5, 1, 100, 200, 3, 0, -1);
+		break;
+
+	case 3:
+		sendWSMessage_120000(4);
+		break;
+
+	case 4:
+		sendWSMessage_150000(5);
+		break;
+
+	case 5:
+		series_unload(_ripHiHand2);
+		_xyzzy7 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	default:
+		break;
+	}
+}
+
+void Room407::takePeriodicTable1() {
+	switch (_G(kernel).trigger) {	
+	case -1:
+		player_set_commands_allowed(false);
+		_ripHiHand2 = series_load("RPTMHR11");
+		setGlobals1(_ripHiHand2, 1, 11, 11, 11, 0, 11, 1, 1, 1);
+		sendWSMessage_110000(1);
+		break;
+
+	case 1:
+		terminateMachineAndNull(_chart);
+		inv_give_to_player("PERIODIC TABLE");
+		hotspot_set_active("PERIODIC TABLE", false);
+		kernel_examine_inventory_object("PING PERIODIC TABLE",
+			_G(master_palette), 5, 1, 450, 200, 3, 0, -1);
+		break;
+
+	case 3:
+		sendWSMessage_120000(4);
+		break;
+
+	case 4:
+		sendWSMessage_150000(5);
+		break;
+
+	case 5:
+		series_unload(_rptmhr11);
+		_xyzzy6 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	default:
+		break;
+	}
+}
+
+void Room407::takePeriodicTable2() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		reachHand(10);
+		break;
+
+	case 1:
+		terminateMachineAndNull(_chart);
+		inv_give_to_player("PERIODIC TABLE");
+		hotspot_set_active("PERIODIC TABLE ", false);
+		kernel_examine_inventory_object("PING PERIODIC TABLE",
+			_G(master_palette), 5, 1, 100, 200, 3, 0, -1);
+		break;
+
+	case 3:
+		sendWSMessage_120000(4);
+		break;
+
+	case 4:
+		sendWSMessage_150000(5);
+		break;
+
+	case 5:
+		series_unload(_ripMedHand1);
+		_xyzzy6 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	default:
+		break;
+	}
+}
+
+void Room407::takeJarGrips() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		player_set_commands_allowed(false);
+		_ripHiHand1 = series_load("rip trek hi 1 hand");
+		setGlobals1(_ripHiHand1, 1, 7, 7, 7, 0, 7, 1, 1, 1);
+		sendWSMessage_110000(1);
+		break;
+
+	case 1:
+		terminateMachineAndNull(_handleInDrawer);
+		inv_give_to_player("PUMP GRIPS");
+		hotspot_set_active("PUMP GRIPS ", false);
+		kernel_examine_inventory_object("PING PUMP GRIPS",
+			_G(master_palette), 5, 1, 425, 150, 3, "407R30", -1);
+		break;
+
+	case 3:
+		sendWSMessage_120000(4);
+		break;
+
+	case 4:
+		sendWSMessage_150000(5);
+		break;
+
+	case 5:
+		series_unload(_ripHiHand1);
+		_xyzzy4 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	default:
+		break;
+	}
+}
+
+void Room407::takeJarCork1() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		reachHand(10);
+		break;
+
+	case 1:
+		terminateMachineAndNull(_bits);
+		inv_give_to_player("CORK");
+		hotspot_set_active("JAR/CORK", false);
+		kernel_examine_inventory_object("PING CORK",
+			_G(master_palette), 5, 1, 150, 200, 3, nullptr, -1);
+		break;
+
+	case 3:
+		sendWSMessage_120000(4);
+		break;
+
+	case 4:
+		sendWSMessage_150000(5);
+		break;
+
+	case 5:
+		series_unload(_ripMedHand1);
+		_xyzzy9 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	default:
+		break;
+	}
+}
+
+void Room407::takeJarCork2() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		player_set_commands_allowed(false);
+		_ripHiHand1 = series_load("rip trek hi 1 hand");
+		setGlobals1(_ripHiHand1, 1, 5, 5, 5, 0, 5, 1, 1, 1);
+		sendWSMessage_110000(1);
+		break;
+
+	case 1:
+		terminateMachineAndNull(_bits);
+		inv_give_to_player("CORK");
+		hotspot_set_active("JAR/CORK ", false);
+		kernel_examine_inventory_object("PING CORK",
+			_G(master_palette), 5, 1, 425, 150, 3, nullptr, -1);
+		break;
+
+	case 3:
+		sendWSMessage_120000(4);
+		break;
+
+	case 4:
+		sendWSMessage_150000(5);
+		break;
+
+	case 5:
+		series_unload(_ripHiHand1);
+		_xyzzy9 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	default:
+		break;
+	}
+}
+
+void Room407::takeJarRubberPlug1() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		reachHand(10);
+		break;
+
+	case 1:
+		terminateMachineAndNull(_stopperInDrawer);
+		inv_give_to_player("RUBBER PLUG");
+		hotspot_set_active("JAR/RUBBER PLUG", false);
+		kernel_examine_inventory_object("PING RUBBER PLUG",
+			_G(master_palette), 5, 1, 150, 200, 3, nullptr, -1);
+		break;
+
+	case 3:
+		sendWSMessage_120000(4);
+		break;
+
+	case 4:
+		sendWSMessage_150000(5);
+		break;
+
+	case 5:
+		series_unload(_ripMedHand1);
+		_xyzzy5 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	default:
+		break;
+	}
+}
+
+void Room407::takeJarRubberPlug2() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		player_set_commands_allowed(false);
+		_ripHiHand1 = series_load("rip trek hi 1 hand");
+		setGlobals1(_ripHiHand1, 1, 6, 6, 6, 0, 6, 1, 1, 1);
+		sendWSMessage_110000(1);
+		break;
+
+	case 1:
+		terminateMachineAndNull(_stopperInDrawer);
+		inv_give_to_player("RUBBER PLUG");
+		hotspot_set_active("JAR/RUBBER PLUG ", false);
+		kernel_examine_inventory_object("PING RUBBER PLUG",
+			_G(master_palette), 5, 1, 425, 150, 3, nullptr, -1);
+		break;
+
+	case 3:
+		sendWSMessage_120000(4);
+		break;
+
+	case 4:
+		sendWSMessage_150000(5);
+		break;
+
+	case 5:
+		series_unload(_ripHiHand1);
+		_xyzzy5 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	default:
+		break;
+	}
+}
+
+void Room407::takeNozzlesTube() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		reachHand(10);
+		break;
+
+	case 1:
+		terminateMachineAndNull(_tubeInDrawer);
+		inv_give_to_player("SURGICAL TUBE");
+		hotspot_set_active("NOZZLES/TUBE", false);
+		kernel_examine_inventory_object("PING SURGICAL TUBE",
+			_G(master_palette), 5, 1, 225, 200, 3, "407_s06", -1);
+		break;
+
+	case 3:
+		sendWSMessage_120000(4);
+		break;
+
+	case 4:
+		sendWSMessage_150000(5);
+		break;
+
+	case 5:
+		series_unload(_ripMedHand1);
+		_xyzzy3 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	default:
+		break;
+	}
+}
+
+void Room407::takeLeverKey1() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		player_set_commands_allowed(false);
+		_ripMedReach = series_load("RIP TREK MED REACH POS3");
+		setGlobals1(_ripMedReach, 1, 11, 11, 11, 0, 11, 1, 1, 1);
+		sendWSMessage_110000(1);
+		break;
+
+	case 1:
+		terminateMachineAndNull(_lever);
+		inv_give_to_player("LEVER KEY");
+		hotspot_set_active("LEVER KEY", false);
+		kernel_examine_inventory_object("PING LEVER KEY",
+			_G(master_palette), 5, 1, 25, 200, 2, nullptr, -1);
+		break;
+
+	case 2:
+		sendWSMessage_120000(3);
+		break;
+
+	case 3:
+		sendWSMessage_150000(4);
+		break;
+
+	case 4:
+		series_unload(_ripMedReach);
+		_val10 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	default:
+		break;
+	}
+}
+
+void Room407::takeLeverKey2() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		reachHand(10);
+		break;
+
+	case 1:
+		terminateMachineAndNull(_lever);
+		inv_give_to_player("LEVER KEY");
+		hotspot_set_active("LEVER KEY ", false);
+		kernel_examine_inventory_object("PING LEVER KEY",
+			_G(master_palette), 5, 1, 175, 200, 2, "407_s07a", -1);
+		break;
+
+	case 2:
+		sendWSMessage_120000(3);
+		break;
+
+	case 3:
+		sendWSMessage_150000(4);
+		break;
+
+	case 4:
+		series_unload(_ripMedReach);
+		_val10 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	default:
+		break;
+	}
+}
+
+void Room407::takeAirValveHandle() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		reachHand(4);
+		break;
+
+	case 1:
+		terminateMachineAndNull(_faucet2);
+		inv_give_to_player("FAUCET HANDLE");
+		hotspot_set_active("AIR VALVE/HANDLE", false);
+		hotspot_set_active("AIR VALVE", true);
+		kernel_examine_inventory_object("PING FAUCET HANDLE",
+			_G(master_palette), 5, 1, 175, 200, 2, "407_s13", -1);
+		break;
+
+	case 2:
+		sendWSMessage_120000(3);
+		break;
+
+	case 3:
+		sendWSMessage_150000(4);
+		break;
+
+	case 4:
+		series_unload(_ripMedHand1);
+		_val9 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	default:
+		break;
+	}
+}
+
+void Room407::takeFaucetHandle() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		reachHand(10);
+		break;
+
+	case 1:
+		if (_val4 == 1010) {
+			_val4 = 1011;
+
+			if (_val8 == 1100)
+				kernel_timing_trigger(1, 430, KT_DAEMON, KT_PARSE);
+			else if (_xyzzy3 == 1130)
+				kernel_timing_trigger(1, 440, KT_DAEMON, KT_PARSE);
+		}
+
+		terminateMachineAndNull(_faucet2);
+		inv_give_to_player("FAUCET HANDLE");
+		hotspot_set_active("FAUCET HANDLE", false);
+		kernel_examine_inventory_object("PING FAUCET HANDLE",
+			_G(master_palette), 5, 1, 75, 200, 2, "407_s04", -1);
+		break;
+
+	case 2:
+		sendWSMessage_120000(3);
+		break;
+
+	case 3:
+		sendWSMessage_150000(4);
+		break;
+
+	case 4:
+		series_unload(_ripMedHand1);
+		_val9 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	default:
+		break;
+	}
+}
+
 } // 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 d38feb3c1bb..9c966c95e54 100644
--- a/engines/m4/riddle/rooms/section4/room407.h
+++ b/engines/m4/riddle/rooms/section4/room407.h
@@ -137,6 +137,7 @@ private:
 	int _407rp99 = 0;
 	int _pump407 = 0;
 	int _hangRip = 0;
+	int _rptmhr11 = 0;
 
 	void setHotspots();
 	void lookItem(const char *item, const char *digi);
@@ -194,11 +195,27 @@ private:
 	void takeLetter();
 	void takeFaucetPipe1();
 	void takeFaucetPipe2();
+	void takeFaucetPipe3();
 	void takeSurgicalTube1();
 	void takeSurgicalTube2();
+	void takeSurgicalTube3();
 	void takeGardenHose1();
 	void takeGardenHose2();
 	void takeGardenHose3();
+	void takeGlassJar1();
+	void takeGlassJar2();
+	void takePeriodicTable1();
+	void takePeriodicTable2();
+	void takeJarGrips();
+	void takeJarCork1();
+	void takeJarCork2();
+	void takeJarRubberPlug1();
+	void takeJarRubberPlug2();
+	void takeNozzlesTube();
+	void takeLeverKey1();
+	void takeLeverKey2();
+	void takeAirValveHandle();
+	void takeFaucetHandle();
 
 public:
 	Room407() : Room() {}




More information about the Scummvm-git-logs mailing list