[Scummvm-git-logs] scummvm master -> 7d14ba7c02130b45ffe147c889f09c4e2839aa39

Strangerke noreply at scummvm.org
Tue Jul 15 21:06:41 UTC 2025


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

Summary:
7d14ba7c02 M4: RIDDLE: Workaround for bug #16107 - Reordering the logic slightly fixes the death scene in all cases


Commit: 7d14ba7c02130b45ffe147c889f09c4e2839aa39
    https://github.com/scummvm/scummvm/commit/7d14ba7c02130b45ffe147c889f09c4e2839aa39
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2025-07-15T22:06:19+01:00

Commit Message:
M4: RIDDLE: Workaround for bug #16107 - Reordering the logic slightly fixes the death scene in all cases

Changed paths:
    engines/m4/riddle/rooms/section3/room304.cpp
    engines/m4/riddle/rooms/section3/room304.h


diff --git a/engines/m4/riddle/rooms/section3/room304.cpp b/engines/m4/riddle/rooms/section3/room304.cpp
index 466a0a8d9d7..58fead886c0 100644
--- a/engines/m4/riddle/rooms/section3/room304.cpp
+++ b/engines/m4/riddle/rooms/section3/room304.cpp
@@ -96,7 +96,7 @@ void Room304::init() {
 			player_set_commands_allowed(false);
 
 			_useSword = _useHandlingStick = false;
-			_val4 = 0;
+			_cobraKillingFl = false;
 			ws_demand_location(_G(my_walker), 452, 285, 9);
 			kernel_timing_trigger(1, 49);
 			_trunk = series_show_sprite("one frame trunk", 0, 0);
@@ -208,43 +208,26 @@ void Room304::parser() {
 	const bool takeFlag = player_said("take");
 	const bool useFlag = player_said_any("push", "pull", "gear", "open", "close");
 
-	if (lookFlag && player_said("cartoon")) {
-		if (_G(flags)[V001]) {
-			digi_play("304r13", 1);
-
-		} else {
-			hotspot_hide_all();
-			interface_hide();
-			intr_cancel_sentence();
-			hotspot_add_dynamic("x", " ", 0, 0, 1500, 374, 0);
-
-			_closeCartoonFl = true;
-			_cartoonMach = series_show_sprite(_G(flags)[V000] ? "394pu99" : "304pu99", 0, 0);
-			digi_play("304r59", 1);
-		}
-	} else if (_G(kernel).trigger == 749) {
-		midi_stop();
-	} else if (_G(flags)[V001] && _val4
-		&& _G(kernel).trigger >= 49 && _G(kernel).trigger <= 54) {
+	if (_G(flags)[V001] && _cobraKillingFl && _G(kernel).trigger >= 49 && _G(kernel).trigger <= 54) {
 		switch (_G(kernel).trigger) {
 		case 49:
 			ws_hide_walker();
 			_cobraKills = series_ranged_play("COBRA KILLS RIP AND LF",
-				1, 0, 1, 4, 100, 0x200, 5, 50);
+											 1, 0, 1, 4, 100, 0x200, 5, 50);
 			break;
 		case 50:
 			_cobraKills = series_ranged_play("COBRA KILLS RIP AND LF",
-				1, 0, 5, 19, 100, 0x200, 5, 51);
+											 1, 0, 5, 19, 100, 0x200, 5, 51);
 			digi_play("304_s07", 1);
 			break;
 		case 51:
 			_cobraKills = series_ranged_play("COBRA KILLS RIP AND LF",
-				1, 0, 20, 41, 100, 0x200, 5, 54);
+											 1, 0, 20, 41, 100, 0x200, 5, 54);
 			digi_play("304_s07", 1);
 			break;
 		case 52:
 			_cobraKills = series_ranged_play("COBRA KILLS RIP AND LF",
-				1, 0, 51, 51, 100, 0x200, 3000, -1);
+											 1, 0, 51, 51, 100, 0x200, 3000, -1);
 			disable_player_commands_and_fade_init(-1);
 			midi_fade_volume(0, 120);
 			kernel_timing_trigger(120, 53);
@@ -255,12 +238,28 @@ void Room304::parser() {
 			break;
 		case 54:
 			_cobraKills = series_ranged_play("COBRA KILLS RIP AND LF",
-				1, 0, 42, 51, 100, 0x200, 5, 52);
+											 1, 0, 42, 51, 100, 0x200, 5, 52);
 			digi_play("304_s12", 2);
 			break;
 		default:
 			break;
 		}
+	} else if (lookFlag && player_said("cartoon")) {
+		if (_G(flags)[V001]) {
+			digi_play("304r13", 1);
+
+		} else {
+			hotspot_hide_all();
+			interface_hide();
+			intr_cancel_sentence();
+			hotspot_add_dynamic("x", " ", 0, 0, 1500, 374, 0);
+
+			_closeCartoonFl = true;
+			_cartoonMach = series_show_sprite(_G(flags)[V000] ? "394pu99" : "304pu99", 0, 0);
+			digi_play("304r59", 1);
+		}
+	} else if (_G(kernel).trigger == 749) {
+		midi_stop();
 	} else if (_G(flags)[V001] && (takeFlag || useFlag) && player_said("samurai sword")) {
 		if (_G(flags)[V001]) {
 			switch (_G(kernel).trigger) {
@@ -430,7 +429,7 @@ void Room304::intrMsg(frac16 myMessage, struct machine *sender) {
 			_G(kernel).trigger_mode = oldMode;
 
 			digi_play("304_s06", 1);
-			r->_val4 = 1;
+			r->_cobraKillingFl = true;
 			sendWSMessage(0x200000, 0, r->_mei, 0, nullptr, 1);
 			return;
 		}
diff --git a/engines/m4/riddle/rooms/section3/room304.h b/engines/m4/riddle/rooms/section3/room304.h
index 4494896b75b..11a997e7f49 100644
--- a/engines/m4/riddle/rooms/section3/room304.h
+++ b/engines/m4/riddle/rooms/section3/room304.h
@@ -34,7 +34,7 @@ private:
 	int _val1 = 0;
 	bool _useSword = false;
 	bool _useHandlingStick = false;
-	int _val4 = 0;
+	bool _cobraKillingFl = false;
 	machine *_sword = nullptr;
 	machine *_trunk = nullptr;
 	machine *_stick = nullptr;




More information about the Scummvm-git-logs mailing list