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

dreammaster noreply at scummvm.org
Thu Aug 29 04:44:27 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:
e77296b1b3 M4: RIDDLE: More room 407 parser


Commit: e77296b1b3a884341cbd1839dd0e7b17709d8f3a
    https://github.com/scummvm/scummvm/commit/e77296b1b3a884341cbd1839dd0e7b17709d8f3a
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-08-28T21:44:20-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 17dce7abeee..aff02f53275 100644
--- a/engines/m4/riddle/rooms/section4/room407.cpp
+++ b/engines/m4/riddle/rooms/section4/room407.cpp
@@ -1141,6 +1141,14 @@ void Room407::parser() {
 		takeFaucetHandle();
 	} else if (takeFlag && player_said("FAUCET PIPE") && _val8 == 1100) {
 		takeFaucetPipe3();
+	} else if (takeFlag && player_said("PUMP ROD") && _xyzzy1 == 1115) {
+		takePumpRod1();
+	} else if (takeFlag && player_said("PUMP ROD ") &&
+			_xyzzy7 != 1114 && _xyzzy7 != 1140) {
+		if (_val10 == 1114)
+			takePumpRod2();
+		else
+			takePumpRod3();
 	}
 	// TODO
 	else {
@@ -3308,11 +3316,11 @@ void Room407::takeFaucetPipe3() {
 		sendWSMessage_120000(4);
 		break;
 
-	case 4:
+	case 3:
 		sendWSMessage_150000(5);
 		break;
 
-	case 5:
+	case 4:
 		series_unload(_ripHiHand1);
 		_val8 = 1000;
 		player_set_commands_allowed(true);
@@ -4141,6 +4149,160 @@ void Room407::takeFaucetHandle() {
 	}
 }
 
+void Room407::takePumpRod1() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		player_set_commands_allowed(false);
+		_pump407 = series_load("407 PUMP");
+		player_update_info();
+		_safariShadow = series_place_sprite("SAFARI SHADOW 1", 0,
+			_G(player_info).x, _G(player_info).y, _G(player_info).scale, 0xf00);
+
+		ws_hide_walker();
+		_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, 0,
+			triggerMachineByHashCallbackNegative, "RIP pumps");
+		sendWSMessage_10000(1, _ripley, _pump407, 1, 40, 1,
+			_pump407, 40, 40, 0);
+		kernel_timing_trigger(150, 69);
+		break;
+
+	case 1:
+		if (_xyzzy4 == 1115) {
+			terminateMachineAndNull(_handleInDrawer);
+			inv_give_to_player("PUMP GRIPS");
+			hotspot_set_active("PUMP GRIPS ", false);
+			_xyzzy4 = 1000;
+			kernel_examine_inventory_object("PING PUMP GRIPS",
+				_G(master_palette), 5, 1, 125, 200, 2, nullptr, -1);
+		} else {
+			kernel_timing_trigger(1, 2);
+		}
+		break;
+
+	case 3:
+		kernel_examine_inventory_object("PING PUMP ROD",
+			_G(master_palette), 5, 1, 125, 200, 4, nullptr, -1);
+		break;
+
+	case 5:
+		terminateMachineAndNull(_pump);
+		hotspot_set_active("PUMP ROD", false);
+		inv_give_to_player("PUMP ROD");
+		sendWSMessage_10000(1, _ripley, _pump407, 14, 1, 6,
+			_pump407, 1, 1, 0);
+		break;
+
+	case 6:
+		terminateMachineAndNull(_ripley);
+		terminateMachineAndNull(_safariShadow);
+		ws_hide_walker();
+		series_unload(_pump407);
+		_xyzzy1 = 1000;
+		player_set_commands_allowed(true);
+		break;
+
+	case 69:
+		digi_play("407_s07", 2);
+		break;
+
+	default:
+		break;
+	}
+}
+
+void Room407::takePumpRod2() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		if (inv_object_is_here("PUMP ROD")) {
+			player_set_commands_allowed(false);
+			_placeLeverKey = series_load("407 PLACE LEVER KEY");
+			terminateMachineAndNull(_lever);
+			terminateMachineAndNull(_pump);
+			player_update_info();
+
+			_safariShadow = series_place_sprite("SAFARI SHADOW 1", 0,
+				_G(player_info).x, _G(player_info).y, _G(player_info).scale, 0xf00);
+
+			ws_hide_walker();
+			_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0, 0,
+				triggerMachineByHashCallbackNegative, "RIP levers ceiling");
+			sendWSMessage_10000(1, _ripley, _placeLeverKey, 70, 49, 2,
+				_placeLeverKey, 49, 49, 0);
+		}
+		break;
+
+	case 2:
+		kernel_examine_inventory_object("PING LEVER KEY/PUMP ROD",
+			_G(master_palette), 5, 1, 350, 150, 3, "407_s07a", -1);
+		break;
+
+	case 3:
+		sendWSMessage_10000(1, _ripley, _placeLeverKey, 48, 1, 4,
+			_placeLeverKey, 1, 1, 0);
+		break;
+
+	case 4:
+		terminateMachineAndNull(_ripley);
+		ws_unhide_walker();
+		hotspot_set_active("LEVER KEY  ", false);
+		hotspot_set_active("PUMP ROD ", false);
+		inv_give_to_player("PUMP ROD");
+		_val10 = 1000;
+		_xyzzy1 = 1000;
+		series_unload(_placeLeverKey);
+		player_set_commands_allowed(true);
+		break;
+
+	default:
+		break;
+	}
+}
+
+void Room407::takePumpRod3() {
+	switch (_G(kernel).trigger) {
+	case -1:
+		player_set_commands_allowed(false);
+		_407rp99 = series_load("407rp99");
+		ws_hide_walker();
+		terminateMachineAndNull(_pump);
+		player_update_info();
+
+		_safariShadow = series_place_sprite("SAFARI SHADOW 1", 0,
+			_G(player_info).x, _G(player_info).y, _G(player_info).scale, 0xf00);
+
+		_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0, 0,
+			triggerMachineByHashCallbackNegative, "RIP takes pump rod from ceiling");
+		sendWSMessage_10000(1, _ripley, _407rp99, 61, 42, 2,
+			_407rp99, 42, 42, 0);
+		break;
+
+	case 2:
+		digi_play("407_s07a", 1);
+		kernel_examine_inventory_object("PING PUMP ROD",
+			_G(master_palette), 5, 1, 350, 150, 3, "407_s07a", -1);
+		break;
+
+	case 3:
+		sendWSMessage_10000(1, _ripley, _407rp99, 41, 1, 4,
+			_407rp99, 1, 1, 0);
+		break;
+
+	case 4:
+		terminateMachineAndNull(_ripley);
+		terminateMachineAndNull(_safariShadow);
+		ws_unhide_walker();
+		hotspot_set_active("PUMP ROD ", false);
+		inv_give_to_player("PUMP ROD");
+		_xyzzy1 = 1000;
+		series_unload(_407rp99);
+		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 9c966c95e54..b1869e4dd4f 100644
--- a/engines/m4/riddle/rooms/section4/room407.h
+++ b/engines/m4/riddle/rooms/section4/room407.h
@@ -216,6 +216,9 @@ private:
 	void takeLeverKey2();
 	void takeAirValveHandle();
 	void takeFaucetHandle();
+	void takePumpRod1();
+	void takePumpRod2();
+	void takePumpRod3();
 
 public:
 	Room407() : Room() {}




More information about the Scummvm-git-logs mailing list