[Scummvm-git-logs] scummvm master -> dd72a4d5b860cc2f42b563a22dee6ab805f3ae26

dreammaster noreply at scummvm.org
Wed Aug 28 04:20:49 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:
dd72a4d5b8 M4: RIDDLE: Added more room 407 parser


Commit: dd72a4d5b860cc2f42b563a22dee6ab805f3ae26
    https://github.com/scummvm/scummvm/commit/dd72a4d5b860cc2f42b563a22dee6ab805f3ae26
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-08-27T21:20:01-07:00

Commit Message:
M4: RIDDLE: Added 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 fa3812a2ead..e1318825ba1 100644
--- a/engines/m4/riddle/rooms/section4/room407.cpp
+++ b/engines/m4/riddle/rooms/section4/room407.cpp
@@ -755,7 +755,7 @@ void Room407::pre_parser() {
 
 void Room407::parser() {
 	bool lookFlag = player_said_any("look", "look at");
-	//bool takeFlag = player_said("take");
+	bool takeFlag = player_said("take");
 	bool useFlag = player_said_any("push", "pull", "gear", "open", "close");
 
 	if (lookFlag && _G(walker).ripley_said(SAID)) {
@@ -1039,7 +1039,66 @@ void Room407::parser() {
 			&& usePump()) {
 		// No implementation
 	} else if (useFlag && player_said("DRAWER")) {
-		// TODO
+		switch (_G(kernel).trigger) {
+		case -1:
+			player_set_commands_allowed(false);
+			_ripMedReach = series_load("RIP TREK MED REACH POS3");
+			setGlobals1(_ripMedReach, 1, 10, 10, 10, 0, 10, 1, 1, 1);
+			sendWSMessage_110000(1);
+			break;
+
+		case 1:
+			_val5 = 1010;
+			_drawerPopup = series_place_sprite("407 DRAWER POPUP", 0, 0, 0, 100, 0x200);
+			hotspot_set_active(" ", true);
+
+			if (_xyzzy2 == 1101) {
+				_drawerPopupHose = series_place_sprite("407 DRAWER POPUP HOSE", 0, 0, 0, 100, 0x100);
+				hotspot_set_active("GARDEN HOSE", true);
+			}
+
+			if (_xyzzy5 == 1101) {
+				_stopperInDrawer = series_place_sprite("407 STOPPER IN DRAWER",
+					0, 0, 0, 100, 0x100);
+				hotspot_set_active("RUBBER PLUG", true);
+			}
+
+			if (_xyzzy3 == 1101) {
+				_tubeInDrawer = series_place_sprite("407 TUBE IN DRAWER",
+					0, 0, 0, 100, 0x100);
+				hotspot_set_active("SURGICAL TUBE", true);
+			}
+
+			if (_xyzzy4 == 1101) {
+				_handleInDrawer = series_place_sprite(
+					"407 PUMP HANDLE IN DRAWER", 0, 0, 0, 100, 0x100);
+				hotspot_set_active("PUMP GRIPS", true);
+			}
+
+			digi_play("407_s01", 2);
+			player_set_commands_allowed(true);
+			break;
+
+		default:
+			break;
+		}
+
+	} else if (takeFlag && player_said("LETTER")) {
+		takeLetter();
+	} else if (takeFlag && player_said("FAUCET PIPE  ") && _val8 == 1130) {
+		takeFaucetPipe1();
+	} else if (takeFlag && player_said("SURGICAL TUBE   ") && _xyzzy3 == 1100) {
+		takeSurgicalTube1();
+	} else if (takeFlag && player_said("GARDEN HOSE    ") && _xyzzy2 == 1100) {
+		takeGardenHose1();
+	} else if (takeFlag && player_said("GARDEN HOSE  ") && _xyzzy2 == 1130) {
+		takeGardenHose2();
+	} else if (takeFlag && player_said("SURGICAL TUBE  ") && _xyzzy3 == 1130) {
+		takeSurgicalTube2();
+	} else if (takeFlag && player_said("FAUCET PIPE ") && _val8 == 1116) {
+		takeFaucetPipe2();
+	} else if (takeFlag && player_said("GARDEN HOSE ") && _xyzzy2 == 1116) {
+		takeGardenHose3();
 	}
 	// TODO
 	else {
@@ -3023,6 +3082,397 @@ void Room407::usePump2() {
 	}
 }
 
+void Room407::takeLetter() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		if (inv_object_is_here("MENENDEZ'S LETTER")) {
+			player_set_commands_allowed(false);
+			_ripMedHand1 = series_load("RIP TREK MED REACH HAND POS1");
+			setGlobals1(_ripMedHand1, 1, 10, 10, 10, 0, 10, 1, 1, 1);
+			sendWSMessage_110000(11);
+		}
+		break;
+
+	case 8:
+		series_unload(_ripMedHand1);
+		break;
+
+	case 11:
+		terminateMachineAndNull(_letter);
+		hotspot_set_active("LETTER", false);
+		hotspot_set_active("BUTTONS", true);
+		digi_play("407r39", 1, 255, 13);
+		break;
+
+	case 13:
+		kernel_examine_inventory_object("PING MENENDEZ'S LETTER",
+			_G(master_palette), 5, 1, 270, 150, 14, "407r41", -1);
+		_G(flags)[GLB_TEMP_11] = 1;
+		_G(flags)[V280] = 1;
+		break;
+
+	case 14:
+		digi_stop(1);
+		inv_give_to_player("MENENDEZ'S LETTER");
+		_frotz4 = 1;
+		_G(flags)[V370] = 1;
+		sendWSMessage_120000(15);
+		break;
+
+	case 15:
+		sendWSMessage_150000(8);
+		break;
+
+	default:
+		break;
+	}
+}
+
+void Room407::takeFaucetPipe1() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		reachHand(10);
+		break;
+
+	case 1:
+		terminateMachineAndNull(_faucet1);
+		inv_give_to_player("FAUCET PIPE");
+		hotspot_set_active("FAUCET PIPE  ", false);
+		kernel_examine_inventory_object("PING FAUCET PIPE",
+			_G(master_palette), 5, 1, 100, 200, 3, nullptr, -1);
+		break;
+
+	case 3:
+		sendWSMessage_120000(4);
+		break;
+
+	case 4:
+		sendWSMessage_150000(5);
+		break;
+
+	case 5:
+		series_unload(_ripMedHand1);
+		_val8 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	default:
+		break;
+	}
+}
+
+void Room407::takeFaucetPipe2() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		player_set_commands_allowed(false);
+		_ripHiHand1 = series_load("rip trek hi 1 hand");
+		setGlobals1(_ripHiHand1, 1, 12, 12, 12, 0, 12, 1, 1, 1);
+		sendWSMessage_110000(1);
+		break;
+
+	case 1:
+		terminateMachineAndNull(_faucet1);
+		hotspot_set_active("FAUCET PIPE ", false);
+		inv_give_to_player("FAUCET PIPE");
+
+		if (_xyzzy3 == 1116) {
+			terminateMachineAndNull(_tubeInDrawer);
+			hotspot_set_active("SURGICAL TUBE ", false);
+			inv_give_to_player("SURGICAL TUBE");
+			_xyzzy3 = 1000;
+
+			terminateMachineAndNull(_drawerPopupHose);
+			hotspot_set_active("GARDEN HOSE ", false);
+			inv_give_to_player("GARDEN HOSE");
+			_xyzzy2 = 1000;
+
+			kernel_examine_inventory_object("PING FAUCET PIPE/HOSE/TUBE",
+				_G(master_palette), 5, 1, 400, 150, 3, 0, -1);
+		} else if (_xyzzy2 == 1116) {
+			terminateMachineAndNull(_drawerPopupHose);
+			inv_give_to_player("GARDEN HOSE");
+			hotspot_set_active("GARDEN HOSE ", false);
+			_xyzzy2 = 1000;
+
+			kernel_examine_inventory_object("PING FAUCET PIPE/HOSE",
+				_G(master_palette), 5, 1, 400, 150, 3, 0, -1);
+		} else {
+			kernel_examine_inventory_object("PING FAUCET PIPE",
+				_G(master_palette), 5, 1, 400, 150, 3, 0, -1);
+		}
+		break;
+
+	case 3:
+		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:
+		if (_val4 == 1010) {
+			digi_play("407r99e", 1);
+		} else {
+			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(_tubeInDrawer);
+		hotspot_set_active("SURGICAL TUBE   ", false);
+		inv_give_to_player("SURGICAL TUBE");
+
+		if (_xyzzy2 == 1100) {
+			terminateMachineAndNull(_drawerPopupHose);
+			inv_give_to_player("GARDEN HOSE");
+			hotspot_set_active("GARDEN HOSE    ", false);
+			_xyzzy2 = 1000;
+			kernel_examine_inventory_object("PING TUBE/HOSE",
+				_G(master_palette), 5, 1, 75, 200, 2, "407_s06", -1);
+		} else {
+			kernel_examine_inventory_object("PING SURGICAL TUBE",
+				_G(master_palette), 5, 1, 75, 200, 2, "407_s06", -1);
+		}
+		break;
+
+	case 2:
+		sendWSMessage_120000(3);
+		break;
+
+	case 3:
+		sendWSMessage_150000(4);
+		break;
+
+	case 4:
+		series_unload(_ripHiHand1);
+		_xyzzy3 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	default:
+		break;
+	}
+}
+
+void Room407::takeSurgicalTube2() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		if (_val4 == 1010) {
+			digi_play("407r99e", 1);
+		} else {
+			reachHand(10);
+		}
+		break;
+
+	case 1:
+		terminateMachineAndNull(_tubeInDrawer);
+		hotspot_set_active("SURGICAL TUBE  ", false);
+		inv_give_to_player("SURGICAL TUBE");
+
+		if (_val8 == 1130) {
+			terminateMachineAndNull(_faucet1);
+			hotspot_set_active("GARDEN HOSE  ", false);
+			inv_give_to_player("FAUCET PIPE");
+			_val8 = 1000;
+
+			terminateMachineAndNull(_drawerPopupHose);
+			hotspot_set_active("GARDEN HOSE  ", false);
+			inv_give_to_player("GARDEN HOSE");
+			_xyzzy2 = 1000;
+
+			kernel_examine_inventory_object("PING FAUCET PIPE/HOSE/TUBE",
+				_G(master_palette), 5, 1, 175, 150, 3, "407_s06", -1);
+		} else if (_xyzzy2 == 1130) {
+			terminateMachineAndNull(_drawerPopupHose);
+			inv_give_to_player("GARDEN HOSE");
+			hotspot_set_active("GARDEN HOSE  ", false);
+			_xyzzy2 = 1000;
+
+			kernel_examine_inventory_object("PING TUBE/HOSE",
+				_G(master_palette), 5, 1, 175, 150, 3, "407_s06", -1);
+		} else {
+			kernel_examine_inventory_object("PING SURGICAL TUBE",
+				_G(master_palette), 5, 1, 175, 150, 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::takeGardenHose1() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		if (_val4 == 1010) {
+			digi_play("407r99e", 1);
+		} else {
+			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(_drawerPopupHose);
+		inv_give_to_player("GARDEN HOSE");
+		hotspot_set_active("GARDEN HOSE    ", false);
+		kernel_examine_inventory_object("PING GARDEN HOSE",
+			_G(master_palette), 5, 1, 75, 200, 2, nullptr, -1);
+		break;
+
+	case 2:
+		sendWSMessage_120000(3);
+		break;
+
+	case 3:
+		sendWSMessage_150000(4);
+		break;
+
+	case 4:
+		series_unload(_ripHiHand1);
+		_xyzzy2 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	default:
+		break;
+	}
+}
+
+void Room407::takeGardenHose2() {
+	switch (_G(kernel).trigger) {
+	case 1:
+		terminateMachineAndNull(_drawerPopupHose);
+		inv_give_to_player("GARDEN HOSE");
+		hotspot_set_active("GARDEN HOSE  ", false);
+
+		if (_val8 == 1130) {
+			terminateMachineAndNull(_faucet1);
+			hotspot_set_active("FAUCET PIPE  ", false);
+			inv_give_to_player("FAUCET PIPE");
+			_val8 = 1000;
+			kernel_examine_inventory_object("PING FAUCET PIPE/HOSE",
+				_G(master_palette), 5, 1, 175, 150, 3, 0, -1);
+		} else {
+			kernel_examine_inventory_object("PING GARDEN HOSE",
+				_G(master_palette), 5, 1, 175, 150, 3, 0, -1);
+		}
+		break;
+
+	case 3:
+		sendWSMessage_120000(4);
+		break;
+
+	case 4:
+		sendWSMessage_150000(5);
+		break;
+
+	case 5:
+		series_unload(_ripMedHand1);
+		_xyzzy2 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	case 70:
+		if (_val4 == 1010) {
+			digi_play("407r99e", 1);
+		} else {
+			reachHand(10);
+		}
+		break;
+
+	case 777:
+		ws_walk(170, 335, nullptr, 70, 11);
+		break;
+
+	default:
+		break;
+	}
+}
+
+void Room407::takeGardenHose3() {
+	switch (_G(kernel).trigger) {
+	case 1:
+		terminateMachineAndNull(_drawerPopupHose);
+		inv_give_to_player("GARDEN HOSE");
+		hotspot_set_active("GARDEN HOSE ", false);
+
+		if (_xyzzy3 == 1116) {
+			terminateMachineAndNull(_tubeInDrawer);
+			hotspot_set_active("SURGICAL TUBE ", false);
+			inv_give_to_player("SURGICAL TUBE");
+			_xyzzy3 = 1000;
+			kernel_examine_inventory_object("PING FAUCET PIPE/HOSE",
+				_G(master_palette), 5, 1, 400, 150, 3, 0, -1);
+		} else {
+			kernel_examine_inventory_object("PING GARDEN HOSE",
+				_G(master_palette), 5, 1, 400, 150, 3, 0, -1);
+		}
+		break;
+
+	case 3:
+		sendWSMessage_120000(4);
+		break;
+
+	case 4:
+		sendWSMessage_150000(5);
+		break;
+
+	case 5:
+		series_unload(_ripHiHand1);
+		_xyzzy2 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	case 70:
+		player_set_commands_allowed(false);
+		_ripHiHand1 = series_load("rip trek hi 1 hand");
+		setGlobals1(_ripHiHand1, 1, 12, 12, 12, 0, 12, 1, 1, 1);
+		sendWSMessage_110000(1);
+		break;
+
+	case 777:
+		ws_walk(436, 331, nullptr, 70, 1);
+		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 173963c954d..d38feb3c1bb 100644
--- a/engines/m4/riddle/rooms/section4/room407.h
+++ b/engines/m4/riddle/rooms/section4/room407.h
@@ -191,6 +191,14 @@ private:
 	void useValveHandle();
 	bool usePump();
 	void usePump2();
+	void takeLetter();
+	void takeFaucetPipe1();
+	void takeFaucetPipe2();
+	void takeSurgicalTube1();
+	void takeSurgicalTube2();
+	void takeGardenHose1();
+	void takeGardenHose2();
+	void takeGardenHose3();
 
 public:
 	Room407() : Room() {}




More information about the Scummvm-git-logs mailing list