[Scummvm-git-logs] scummvm master -> 3d1bce208c189556299ee4bfdf9b09fcd452febd

dreammaster noreply at scummvm.org
Mon Feb 10 03:03:56 UTC 2025


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

Summary:
70eb812fd3 M4: RIDDLE: Fixes for wheel crank/slot and shovel
bbc8c26f1e M4: RIDDLE: Fix solving wheel bridge puzzle
3d1bce208c M4: RIDDLE: Fix leaving Bridge room


Commit: 70eb812fd3cd9a9322c5e78691999f28d6ba6b1f
    https://github.com/scummvm/scummvm/commit/70eb812fd3cd9a9322c5e78691999f28d6ba6b1f
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2025-02-09T17:40:05-08:00

Commit Message:
M4: RIDDLE: Fixes for wheel crank/slot and shovel

Changed paths:
    engines/m4/riddle/rooms/section8/room808.cpp


diff --git a/engines/m4/riddle/rooms/section8/room808.cpp b/engines/m4/riddle/rooms/section8/room808.cpp
index 022270803eb..2d8e394ff8f 100644
--- a/engines/m4/riddle/rooms/section8/room808.cpp
+++ b/engines/m4/riddle/rooms/section8/room808.cpp
@@ -632,7 +632,7 @@ void Room808::parser() {
 
 			case 10:
 				inv_give_to_player("FARMER'S SHOVEL");
-				hotspot_set_active(_G(currentSceneDef).hotspots, "FARMER'S SHOVEL   ", false);
+				hotspot_set_active("FARMER'S SHOVEL   ", false);
 				kernel_examine_inventory_object("PING FARMER'S SHOVEL", _G(master_palette), 5, 1, 125, 125, 20, nullptr, -1);
 
 				break;
@@ -682,8 +682,8 @@ void Room808::parser() {
 				case 30:
 					player_set_commands_allowed(true);
 					inv_give_to_player("crank");
-					hotspot_set_active(_G(currentSceneDef).hotspots, "slot", true);
-					hotspot_set_active(_G(currentSceneDef).hotspots, "crank", false);
+					hotspot_set_active("slot", true);
+					hotspot_set_active("crank", false);
 					ws_demand_facing(_G(my_walker), 10);
 
 					break;
@@ -898,8 +898,8 @@ void Room808::parser() {
 				_G(flags)[V100] = 1;
 				_G(flags)[V276] = 0;
 				_G(flags)[V098] = 0;
-				hotspot_set_active(_G(currentSceneDef).hotspots, "crank", true);
-				hotspot_set_active(_G(currentSceneDef).hotspots, "slot", false);
+				hotspot_set_active("crank", true);
+				hotspot_set_active("slot", false);
 				digi_unload("808_s10");
 
 				break;
@@ -912,8 +912,8 @@ void Room808::parser() {
 				}
 
 				_G(flags)[V098] = 0;
-				hotspot_set_active(_G(currentSceneDef).hotspots, "crank", true);
-				hotspot_set_active(_G(currentSceneDef).hotspots, "slot", false);
+				hotspot_set_active("crank", true);
+				hotspot_set_active("slot", false);
 				digi_unload("808_s10");
 
 				break;
@@ -1164,8 +1164,8 @@ void Room808::parser() {
 
 			case 10:
 				inv_move_object("crank", 808);
-				hotspot_set_active(_G(currentSceneDef).hotspots, "crank", true);
-				hotspot_set_active(_G(currentSceneDef).hotspots, "slot", false);
+				hotspot_set_active("crank", true);
+				hotspot_set_active("slot", false);
 				kernel_timing_trigger(60, 20, nullptr);
 
 				break;
@@ -1212,7 +1212,7 @@ void Room808::parser() {
 
 			case 10:
 				player_set_commands_allowed(true);
-				hotspot_set_active(_G(currentSceneDef).hotspots, "FARMER'S SHOVEL   ", true);
+				hotspot_set_active("FARMER'S SHOVEL   ", true);
 				terminateMachine(_808PosMach);
 				_808PosMach = series_show("808pos2", 1281, 0, -1, -1, 3, 100, 0, 0);
 				ws_unhide_walker(_G(my_walker));
@@ -1732,107 +1732,92 @@ bool Room808::getWalkPath(machine *machine, int32 walk_x, int32 walk_y) {
 void Room808::setBridgeHotspots(int val1, bool activeFl) {
 	switch (val1) {
 	case 0:
-		hotspot_set_active(_G(currentSceneDef).hotspots, "wheel", activeFl);
-		hotspot_set_active(_G(currentSceneDef).hotspots, "bridge", activeFl);
+		hotspot_set_active("wheel", activeFl);
+		hotspot_set_active("bridge", activeFl);
 
-		hotspot_set_active(_G(currentSceneDef).hotspots, "hole in chasm wall", false);
-		hotspot_set_active(_G(currentSceneDef).hotspots, "hole in bridge", false);
+		hotspot_set_active("hole in chasm wall", false);
+		hotspot_set_active("hole in bridge", false);
 
-		if (inv_object_in_scene("FARMER'S SHOVEL", 808) || activeFl == false)
-			hotspot_set_active(_G(currentSceneDef).hotspots, "FARMER'S SHOVEL", false);
-		else
-			hotspot_set_active(_G(currentSceneDef).hotspots, "FARMER'S SHOVEL", true);
+		hotspot_set_active("FARMER'S SHOVEL",
+			inv_object_in_scene("FARMER'S SHOVEL", 808) && activeFl);
 
-		if (inv_object_in_scene("crank", 808) || _G(flags)[V098] != 0) {
-			hotspot_set_active(_G(currentSceneDef).hotspots, "crank", false);
-			hotspot_set_active(_G(currentSceneDef).hotspots, "slot", true);
+		if (inv_object_in_scene("crank", 808) && !_G(flags)[V098]) {
+			hotspot_set_active("crank", true);
+			hotspot_set_active("slot", false);
 		} else {
-			hotspot_set_active(_G(currentSceneDef).hotspots, "crank", true);
-			hotspot_set_active(_G(currentSceneDef).hotspots, "slot", false);
+			hotspot_set_active("crank", false);
+			hotspot_set_active("slot", true);
 		}
-
 		break;
 
 	case 1:
-		hotspot_set_active(_G(currentSceneDef).hotspots, "wheel ", activeFl);
-		hotspot_set_active(_G(currentSceneDef).hotspots, "bridge ", activeFl);
-		hotspot_set_active(_G(currentSceneDef).hotspots, "hole in chasm wall", activeFl);
-
-		hotspot_set_active(_G(currentSceneDef).hotspots, "hole in bridge", false);
+		hotspot_set_active("wheel ", activeFl);
+		hotspot_set_active("bridge ", activeFl);
+		hotspot_set_active("hole in chasm wall", activeFl);
 
-		if (inv_object_in_scene("FARMER'S SHOVEL", 808) || activeFl == false)
-			hotspot_set_active(_G(currentSceneDef).hotspots, "FARMER'S SHOVEL ", false);
-		else
-			hotspot_set_active(_G(currentSceneDef).hotspots, "FARMER'S SHOVEL ", true);
+		hotspot_set_active("hole in bridge", false);
 
-		hotspot_set_active(_G(currentSceneDef).hotspots, "crank", false);
-		hotspot_set_active(_G(currentSceneDef).hotspots, "slot", false);
+		hotspot_set_active("FARMER'S SHOVEL ",
+			inv_object_in_scene("FARMER'S SHOVEL", 808) && activeFl);
 
+		hotspot_set_active("crank", false);
+		hotspot_set_active("slot", false);
 		break;
 
 	case 2:
-		hotspot_set_active(_G(currentSceneDef).hotspots, "wheel  ", activeFl);
-		hotspot_set_active(_G(currentSceneDef).hotspots, "bridge  ", activeFl);
-		hotspot_set_active(_G(currentSceneDef).hotspots, "hole in chasm wall", activeFl);
+		hotspot_set_active("wheel  ", activeFl);
+		hotspot_set_active("bridge  ", activeFl);
+		hotspot_set_active("hole in chasm wall", activeFl);
 
-		hotspot_set_active(_G(currentSceneDef).hotspots, "hole in bridge", false);
+		hotspot_set_active("hole in bridge", false);
 
-		if (inv_object_in_scene("FARMER'S SHOVEL", 808) || activeFl == false)
-			hotspot_set_active(_G(currentSceneDef).hotspots, "FARMER'S SHOVEL  ", false);
-		else
-			hotspot_set_active(_G(currentSceneDef).hotspots, "FARMER'S SHOVEL  ", true);
+		hotspot_set_active("FARMER'S SHOVEL  ",
+			inv_object_in_scene("FARMER'S SHOVEL", 808) && activeFl);
 
-		if (inv_object_in_scene("crank", 808) || _G(flags)[V098] != 0) {
-			hotspot_set_active(_G(currentSceneDef).hotspots, "crank", false);
-			hotspot_set_active(_G(currentSceneDef).hotspots, "slot", true);
+		if (inv_object_in_scene("crank", 808) && !_G(flags)[V098]) {
+			hotspot_set_active("crank", true);
+			hotspot_set_active("slot", false);
 		} else {
-			hotspot_set_active(_G(currentSceneDef).hotspots, "crank", true);
-			hotspot_set_active(_G(currentSceneDef).hotspots, "slot", false);
+			hotspot_set_active("crank", false);
+			hotspot_set_active("slot", true);
 		}
-
 		break;
 
 	case 3:
-		hotspot_set_active(_G(currentSceneDef).hotspots, "wheel   ", activeFl);
-		hotspot_set_active(_G(currentSceneDef).hotspots, "bridge   ", activeFl);
-		hotspot_set_active(_G(currentSceneDef).hotspots, "hole in chasm wall", activeFl);
-		hotspot_set_active(_G(currentSceneDef).hotspots, "hole in bridge", activeFl);
-
-		if (inv_object_in_scene("FARMER'S SHOVEL", 808) || activeFl == false)
-			hotspot_set_active(_G(currentSceneDef).hotspots, "FARMER'S SHOVEL   ", false);
-		else
-			hotspot_set_active(_G(currentSceneDef).hotspots, "FARMER'S SHOVEL   ", true);
-
-		if (inv_object_in_scene("crank", 808) || _G(flags)[V098] != 0) {
-			hotspot_set_active(_G(currentSceneDef).hotspots, "crank", false);
-			hotspot_set_active(_G(currentSceneDef).hotspots, "slot", true);
+		hotspot_set_active("wheel   ", activeFl);
+		hotspot_set_active("bridge   ", activeFl);
+		hotspot_set_active("hole in chasm wall", activeFl);
+		hotspot_set_active("hole in bridge", activeFl);
+
+		hotspot_set_active("FARMER'S SHOVEL   ",
+			inv_object_in_scene("FARMER'S SHOVEL", 808) && activeFl);
+
+		if (inv_object_in_scene("crank", 808) && !_G(flags)[V098]) {
+			hotspot_set_active("crank", true);
+			hotspot_set_active("slot", false);
 		} else {
-			hotspot_set_active(_G(currentSceneDef).hotspots, "crank", true);
-			hotspot_set_active(_G(currentSceneDef).hotspots, "slot", false);
+			hotspot_set_active("crank", false);
+			hotspot_set_active("slot", true);
 		}
-
 		break;
 
 	case 4:
-		hotspot_set_active(_G(currentSceneDef).hotspots, "wheel", activeFl);
-		hotspot_set_active(_G(currentSceneDef).hotspots, "bridge", activeFl);
+		hotspot_set_active("wheel", activeFl);
+		hotspot_set_active("bridge", activeFl);
 
-		hotspot_set_active(_G(currentSceneDef).hotspots, "hole in chasm wall", false);
-		hotspot_set_active(_G(currentSceneDef).hotspots, "hole in bridge", false);
+		hotspot_set_active("hole in chasm wall", false);
+		hotspot_set_active("hole in bridge", false);
 
-		if (inv_object_in_scene("FARMER'S SHOVEL", 808) || activeFl == false)
-			hotspot_set_active(_G(currentSceneDef).hotspots, "FARMER'S SHOVEL    ", false);
-		else
-			hotspot_set_active(_G(currentSceneDef).hotspots, "FARMER'S SHOVEL    ", true);
+		hotspot_set_active("FARMER'S SHOVEL    ",
+			inv_object_in_scene("FARMER'S SHOVEL", 808) && activeFl);
 
-		if (inv_object_in_scene("crank", 808) || _G(flags)[V098] != 0) {
-			hotspot_set_active(_G(currentSceneDef).hotspots, "crank", false);
-			hotspot_set_active(_G(currentSceneDef).hotspots, "slot", true);
+		if (inv_object_in_scene("crank", 808) && !_G(flags)[V098]) {
+			hotspot_set_active("crank", true);
+			hotspot_set_active("slot", false);
 		} else {
-			hotspot_set_active(_G(currentSceneDef).hotspots, "crank", true);
-			hotspot_set_active(_G(currentSceneDef).hotspots, "slot", false);
+			hotspot_set_active("crank", false);
+			hotspot_set_active("slot", true);
 		}
-
 		break;
 
 	default:


Commit: bbc8c26f1ee0e9d8da85101e234a4bba3989451c
    https://github.com/scummvm/scummvm/commit/bbc8c26f1ee0e9d8da85101e234a4bba3989451c
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2025-02-09T19:01:13-08:00

Commit Message:
M4: RIDDLE: Fix solving wheel bridge puzzle

Changed paths:
    engines/m4/riddle/rooms/section8/room808.cpp
    engines/m4/riddle/rooms/section8/room808.h
    engines/m4/riddle/rooms/section8/section8_room.cpp
    engines/m4/riddle/rooms/section8/section8_room.h


diff --git a/engines/m4/riddle/rooms/section8/room808.cpp b/engines/m4/riddle/rooms/section8/room808.cpp
index 2d8e394ff8f..009186324c0 100644
--- a/engines/m4/riddle/rooms/section8/room808.cpp
+++ b/engines/m4/riddle/rooms/section8/room808.cpp
@@ -1015,7 +1015,7 @@ void Room808::parser() {
 				player_set_commands_allowed(false);
 				ws_walk(_G(my_walker), 17, 214, nullptr, 20, 8, true);
 				if (_G(flags)[V097] == 0) {
-					setGlobals3(_meiChienHandsBehindBackSeries, 17, 1);
+					setGlobals3(_meiChenHandsBehindBackSeries, 17, 1);
 					sendWSMessage_3840000(_mcTrekMach, -1);
 				} else {
 					DisposePath(_mcTrekMach->walkPath);
@@ -1074,14 +1074,23 @@ void Room808::parser() {
 		if (player_said("mei chen")) {
 			switch (_G(kernel).trigger) {
 			case -1:
-				if (_G(flags)[V100] != 0) {
-					digi_play("com122", 1, 255, 997);
-				} else if (_G(flags)[V097] == 1 && inv_object_in_scene("FARMER'S SHOVEL", 808) && _G(flags)[V094] == 4) {
-					ws_walk(_G(my_walker), 185, 156, nullptr, 11, 5, true);
+				if (_G(flags)[V100]) {
+					digi_play("com122", 1, 255, -1, 997);
+				} else if (_G(flags)[V097] == 0) {
+					player_set_commands_allowed(false);
+					setGlobals3(_rptmr15Series, 1, 16);
+					sendWSMessage_3840000(-1);
+					setGlobals3(_meiChenHandsBehindBackSeries, 17, 1);
+					sendWSMessage_3840000(_mcTrekMach, 7);
+				} else if (_G(flags)[V097] == 1) {
+					if (inv_object_in_scene("FARMER'S SHOVEL", 808) &&
+						_G(flags)[V094] == 4)
+						ws_walk(185, 156, nullptr, 11, 5);
+					else
+						digi_play("808r30", 1);
 				} else {
-					digi_play("808r30", 1, 255, -1, -1);
-				}
-
+					digi_play("808r30", 1);
+				}				
 				break;
 
 			case 7:
@@ -1091,15 +1100,13 @@ void Room808::parser() {
 			case 10:
 				setGlobals3(_mctd61Series, 1, 5);
 				sendWSMessage_3840000(_mcTrekMach, 15);
-
 				break;
 
 			case 11:
 				player_set_commands_allowed(false);
 				DisposePath(_mcTrekMach->walkPath);
 				_mcTrekMach->walkPath = CreateCustomPath(348, 130, 193, 163, -1);
-				ws_custom_walk(_mcTrekMach, 11, 1, true);
-
+				ws_custom_walk(_mcTrekMach, 11, 21);
 				break;
 
 			case 15:
@@ -1109,6 +1116,7 @@ void Room808::parser() {
 
 			case 20:
 				_G(flags)[V098] = 1;
+
 				if (_G(flags)[V097] == 0) {
 					setGlobals3(_mctd61Series, 5, 1);
 					sendWSMessage_3840000(_mcTrekMach, 25);
@@ -1119,17 +1127,15 @@ void Room808::parser() {
 
 				setGlobals3(_rptmr15Series, 16, 1);
 				sendWSMessage_3840000(_G(my_walker), 30);
-
 				break;
 
 			case 21:
 				setGlobals3(_rptmr15Series, 1, 16);
 				sendWSMessage_3840000(_G(my_walker), 10);
-
 				break;
 
 			case 25:
-				setGlobals3(_meiChienHandsBehindBackSeries, 1, 17);
+				setGlobals3(_meiChenHandsBehindBackSeries, 1, 17);
 				sendWSMessage_3840000(_mcTrekMach, -1);
 				break;
 
@@ -1147,7 +1153,6 @@ void Room808::parser() {
 			case 41:
 				player_set_commands_allowed(true);
 				ws_demand_facing(_G(my_walker), 5);
-
 				break;
 
 			default:
@@ -1256,7 +1261,7 @@ void Room808::parser() {
 					setGlobals1(_ripTalkerPos5Series, 4, 4, 1, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
 					sendWSMessage_110000(_G(my_walker), -1);
 					if (conv_current_node() == 2 && conv_current_entry() == 0) {
-						setGlobals3(_meiChienHandsBehindBackSeries, 17, 1);
+						setGlobals3(_meiChenHandsBehindBackSeries, 17, 1);
 						sendWSMessage_3840000(_mcTrekMach, -1);
 					}
 				} else {
@@ -1322,8 +1327,8 @@ void Room808::daemon() {
 		addMcHotspot(_G(flags)[V097]);
 
 		if (_G(flags)[V097] == 0) {
-			_meiChienHandsBehindBackSeries = series_load("MEI CHIEN HANDS BEHIND BACK", -1, nullptr);
-			setGlobals3(_meiChienHandsBehindBackSeries, 1, 17);
+			_meiChenHandsBehindBackSeries = series_load("MEI CHIEN HANDS BEHIND BACK", -1, nullptr);
+			setGlobals3(_meiChenHandsBehindBackSeries, 1, 17);
 			sendWSMessage_3840000(_mcTrekMach, -1);
 		}
 
@@ -1461,7 +1466,7 @@ void Room808::daemon() {
 		digi_play("808_s02", 2, 255, -1, -1);
 
 		if (_G(flags)[V097] == 0) {
-			setGlobals3(_meiChienHandsBehindBackSeries, 17, 1);
+			setGlobals3(_meiChenHandsBehindBackSeries, 17, 1);
 			sendWSMessage_3840000(_mcTrekMach, 16);
 		} else {
 			ws_hide_walker(_mcTrekMach);
@@ -1477,7 +1482,7 @@ void Room808::daemon() {
 		digi_play("808_s02", 2, 255, -1, -1);
 
 		if (_G(flags)[V097] == 0) {
-			setGlobals3(_meiChienHandsBehindBackSeries, 17, 1);
+			setGlobals3(_meiChenHandsBehindBackSeries, 17, 1);
 			sendWSMessage_3840000(_mcTrekMach, 16);
 		} else {
 			ws_hide_walker(_mcTrekMach);
@@ -1494,7 +1499,7 @@ void Room808::daemon() {
 		digi_play("808_s02", 2, 255, -1, -1);
 
 		if (_G(flags)[V097] == 0) {
-			setGlobals3(_meiChienHandsBehindBackSeries, 17, 1);
+			setGlobals3(_meiChenHandsBehindBackSeries, 17, 1);
 			sendWSMessage_3840000(_mcTrekMach, 16);
 		} else {
 			ws_demand_location(_mcTrekMach, -1000, -1000);
diff --git a/engines/m4/riddle/rooms/section8/room808.h b/engines/m4/riddle/rooms/section8/room808.h
index 401acc922c2..ad423b73d21 100644
--- a/engines/m4/riddle/rooms/section8/room808.h
+++ b/engines/m4/riddle/rooms/section8/room808.h
@@ -62,7 +62,7 @@ private:
 	int32 _808RpupSeries = 0;
 	int32 _mctd61Series = 0;
 	int32 _mctd82aSeries = 0;
-	int32 _meiChienHandsBehindBackSeries = 0;
+	int32 _meiChenHandsBehindBackSeries = 0;
 	int32 _ripLooksAroundInAweSeries = 0;
 	int32 _ripMedReach1HandPos2Series = 0;
 	int32 _ripPos3LookAroundSeries = 0;
diff --git a/engines/m4/riddle/rooms/section8/section8_room.cpp b/engines/m4/riddle/rooms/section8/section8_room.cpp
index 05bcbf0afdb..b0c509f8114 100644
--- a/engines/m4/riddle/rooms/section8/section8_room.cpp
+++ b/engines/m4/riddle/rooms/section8/section8_room.cpp
@@ -47,6 +47,10 @@ int32 Section8Room::getStatueIndex(int32 val1) {
 	return -1;
 }
 
+void Section8Room::sendWSMessage_3840000(int32 trigger) {
+	sendWSMessage_3840000(_G(my_walker), trigger);
+}
+
 void Section8Room::sendWSMessage_3840000(machine *machine, int32 trigger) {
 	int32 num = trigger;
 	if (trigger == 0)
diff --git a/engines/m4/riddle/rooms/section8/section8_room.h b/engines/m4/riddle/rooms/section8/section8_room.h
index 012234ff461..cd3a0ef2b74 100644
--- a/engines/m4/riddle/rooms/section8/section8_room.h
+++ b/engines/m4/riddle/rooms/section8/section8_room.h
@@ -87,6 +87,7 @@ protected:
 	machine *_ripPushMach = nullptr;
 
 	int32 getStatueIndex(int32 val1);
+	void sendWSMessage_3840000(int32 trigger);
 	void sendWSMessage_3840000(machine *machine, int32 trigger);
 	int32 subCE52E(int32 val1);
 	void moveScreen(int32 dx, int32 dy);


Commit: 3d1bce208c189556299ee4bfdf9b09fcd452febd
    https://github.com/scummvm/scummvm/commit/3d1bce208c189556299ee4bfdf9b09fcd452febd
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2025-02-09T19:03:45-08:00

Commit Message:
M4: RIDDLE: Fix leaving Bridge room

Changed paths:
    engines/m4/riddle/rooms/section8/room808.cpp


diff --git a/engines/m4/riddle/rooms/section8/room808.cpp b/engines/m4/riddle/rooms/section8/room808.cpp
index 009186324c0..93d9e9c406e 100644
--- a/engines/m4/riddle/rooms/section8/room808.cpp
+++ b/engines/m4/riddle/rooms/section8/room808.cpp
@@ -1043,7 +1043,7 @@ void Room808::parser() {
 			}
 
 
-		} else if (player_said("east") && _G(flags)[V100] == 0) {
+		} else if (player_said("east") && _G(flags)[V100]) {
 			switch (_G(kernel).trigger) {
 			case -1:
 				ws_walk(_G(my_walker), 480, 35, nullptr, 10, 2, true);




More information about the Scummvm-git-logs mailing list