[Scummvm-git-logs] scummvm master -> 7245b6d7bb695269ff9dc0447a964083a3f372ad

dreammaster noreply at scummvm.org
Sat Aug 8 02:30:13 UTC 2026


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

Summary:
e9e4de9a92 M4: RIDDLE: Fix crash when looking at crystal skull in Odditorium
7245b6d7bb M4: RIDDLE: Fix taking and replacing exhibits in room 305


Commit: e9e4de9a9279e13adfcb39b87f038a8abddd5985
    https://github.com/scummvm/scummvm/commit/e9e4de9a9279e13adfcb39b87f038a8abddd5985
Author: sloanext (46776957+sloanext at users.noreply.github.com)
Date: 2026-08-08T12:30:09+10:00

Commit Message:
M4: RIDDLE: Fix crash when looking at crystal skull in Odditorium

The sound name for the crystal skull in room 305 was misspelled as
"3055r51". Pure typo.

Changed paths:
    engines/m4/riddle/rooms/section3/room305.cpp


diff --git a/engines/m4/riddle/rooms/section3/room305.cpp b/engines/m4/riddle/rooms/section3/room305.cpp
index 3b5c69eac3b..43cf13ffc49 100644
--- a/engines/m4/riddle/rooms/section3/room305.cpp
+++ b/engines/m4/riddle/rooms/section3/room305.cpp
@@ -1156,7 +1156,7 @@ next4:
 	} else if (LOOK("INCENSE BURNER")) {
 		digi_play("305r50", 1);
 	} else if (LOOK("CRYSTAL SKULL")) {
-		digi_play("3055r51", 1);
+		digi_play("305r51", 1);
 	} else if (LOOK("ROMANOV EMERALD")) {
 		digi_play("305r29a", 1);
 	} else if (LOOK("WHALE BONE HORN")) {


Commit: 7245b6d7bb695269ff9dc0447a964083a3f372ad
    https://github.com/scummvm/scummvm/commit/7245b6d7bb695269ff9dc0447a964083a3f372ad
Author: sloanext (46776957+sloanext at users.noreply.github.com)
Date: 2026-08-08T12:30:09+10:00

Commit Message:
M4: RIDDLE: Fix taking and replacing exhibits in room 305

The parser block for the exhibits only had the initial case that walks
Ripley over. The steps that play the reach animation, swap the sprite,
move the object and give the commands back were missing. Add them following
the chisel block right below, which implements the same sequence.

Three more defects in the same area:
- The wheeled toy was missing from the take list.
- Placing an item deactivated its hotspot instead of activating it.
- The block for the five small exhibits tested the wrong flag when placing
  an item.

(The crystal skull matters most, as it can be mailed home but is required
for solving the puzzle at Moca Moche. Getting it back has to work.)

Changed paths:
    engines/m4/riddle/rooms/section3/room305.cpp


diff --git a/engines/m4/riddle/rooms/section3/room305.cpp b/engines/m4/riddle/rooms/section3/room305.cpp
index 43cf13ffc49..37101f9121c 100644
--- a/engines/m4/riddle/rooms/section3/room305.cpp
+++ b/engines/m4/riddle/rooms/section3/room305.cpp
@@ -729,10 +729,11 @@ next1:
 
 	if (itemFlag || (takeFlag && player_said_any("SHRUNKEN HEAD",
 			"INCENSE BURNER", "CRYSTAL SKULL", "ROMANOV EMERALD",
-			"WHALE BONE HORN"))) {
+			"WHALE BONE HORN", "WHEELED TOY"))) {
 		switch (_G(kernel).trigger) {
 		case -1:
-			if ((itemFlag && inv_player_has(_G(player).verb)) || takeFlag) {
+			if ((itemFlag && inv_player_has(_G(player).verb)) ||
+					(takeFlag && inv_object_is_here(_G(player).noun))) {
 				if (itemFlag) {
 					if (!walkToObject())
 						goto next2;
@@ -742,8 +743,49 @@ next1:
 			}
 			break;
 
-		default:
+		case 1:
+			player_set_commands_allowed(false);
+			setGlobals1(_ripMedHigh, 1, 12, 12, 12);
+			sendWSMessage_110000(3);
+			break;
+
+		case 3:
+			if (itemFlag) {
+				hotspot_set_active(_G(player).verb, true);
+
+#define DROP(FIELD, NAME, CASE) if (player_said(NAME)) { \
+	FIELD = series_show_sprite(CASE, 0, 0xf00); \
+	inv_move_object(NAME, 305); }
+				DROP(_shrunkenHead2, "SHRUNKEN HEAD", "DISPLAY CASE SHRUNKEN HEAD")
+				DROP(_incenseHolder2, "INCENSE BURNER", "DISPLAY CASE INCENSE HOLDER")
+				DROP(_crystalSkull2, "CRYSTAL SKULL", "DISPLAY CASE CRYSTAL SKULL")
+				DROP(_emerald2, "ROMANOV EMERALD", "DISPLAY CASE EMERALD")
+				DROP(_whaleboneHorn2, "WHALE BONE HORN", "DISPLAY CASE WHALE BONE HORN")
+				DROP(_wheeledToy2, "WHEELED TOY", "DISPLAY CASE WHEELED TOY")
+#undef DROP
+			} else {
+				hotspot_set_active(_G(player).noun, false);
+
+#define TAKE(FIELD, NAME) if (player_said(NAME)) { \
+	terminateMachineAndNull(FIELD); inv_give_to_player(NAME); }
+				TAKE(_shrunkenHead2, "SHRUNKEN HEAD")
+				TAKE(_incenseHolder2, "INCENSE BURNER")
+				TAKE(_crystalSkull2, "CRYSTAL SKULL")
+				TAKE(_emerald2, "ROMANOV EMERALD")
+				TAKE(_whaleboneHorn2, "WHALE BONE HORN")
+				TAKE(_wheeledToy2, "WHEELED TOY")
+#undef TAKE
+			}
+
+			sendWSMessage_140000(5);
 			break;
+
+		case 5:
+			player_set_commands_allowed(true);
+			break;
+
+		default:
+			goto next2;
 		}
 	} else {
 		goto next2;
@@ -774,7 +816,7 @@ next2:
 
 		case 3:
 			if (chiselFlag) {
-				hotspot_set_active(_G(player).verb, false);
+				hotspot_set_active(_G(player).verb, true);
 
 				if (player_said("CHISEL")) {
 					_knife2 = series_show_sprite("DISPLAY CASE YETI HANDLED KNIFE", 0, 0xf00);
@@ -842,7 +884,7 @@ next3:
 			break;
 
 		case 3:
-			if (useFlag) {
+			if (caseFlag) {
 				hotspot_set_active(_G(player).verb, true);
 
 #define DROP(FIELD, NAME, CASE) if (player_said(NAME)) { \
@@ -853,8 +895,8 @@ next3:
 				DROP(_banknote2, "GERMAN BANKNOTE", "DISPLAY CASE GERMAN BANKNOTE")
 				DROP(_stamp2, "POSTAGE STAMP", "DISPLAY CASE CHEAPEST STAMP")
 				DROP(_map2, "STICK AND SHELL MAP", "DISPLAY CASE QUARRY STICK MAP")
-#undef ITEM
-				sendWSMessage_140000(3);
+#undef DROP
+				sendWSMessage_140000(5);
 
 			} else {
 				hotspot_set_active(_G(player).noun, false);




More information about the Scummvm-git-logs mailing list