[Scummvm-git-logs] scummvm master -> 033b3bfec8772624fbf7175d79e81f66c4f41b89

Strangerke noreply at scummvm.org
Sat Feb 1 23:56:07 UTC 2025


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:
033b3bfec8 M4: RIDDLE: Finish the implementation of opcode 3 (Talk to) in room808::parser


Commit: 033b3bfec8772624fbf7175d79e81f66c4f41b89
    https://github.com/scummvm/scummvm/commit/033b3bfec8772624fbf7175d79e81f66c4f41b89
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2025-02-02T00:55:58+01:00

Commit Message:
M4: RIDDLE: Finish the implementation of opcode 3 (Talk to) in room808::parser

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 1c18f90c02b..16610b26220 100644
--- a/engines/m4/riddle/rooms/section8/room808.cpp
+++ b/engines/m4/riddle/rooms/section8/room808.cpp
@@ -709,13 +709,220 @@ void Room808::parser() {
 			conv_play(conv_get_handle());
 		} else if (_G(flags[V097]) == 0) {
 			switch (_G(kernel).trigger) {
-				// TODO not implemented yet
+			case -1:
+				player_set_commands_allowed(false);
+				setGlobals1(_ripTalkerPos5Series, 1, 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);
+				switch (imath_ranged_rand(1, 4)) {
+				case 1:
+					digi_play("com034", 1, 255, 10, 997);
+					break;
+
+				case 2:
+					digi_play("com035", 1, 255, 10, 997);
+					break;
+
+				case 3:
+					digi_play("com036", 1, 255, 10, 997);
+					break;
+
+				case 4:
+				default:
+					digi_play("com037", 1, 255, 10, 997);
+					break;
+				}
+
+				break;
+
+			case 10:
+				player_set_commands_allowed(true);
+				sendWSMessage_150000(_G(my_walker), -1);
+
+				switch (_G(kernel).trigger) {
+				case 1:
+					digi_play("com038", 1, 255, -1, 997);
+					break;
+
+				case 2:
+					digi_play("com039", 1, 255, -1, 997);
+					break;
+
+				case 3:
+					digi_play("com040", 1, 255, -1, 997);
+					break;
+
+				case 4:
+				default:
+					digi_play("com041", 1, 255, -1, 997);
+					break;
+				}
+
+				break;
+
 			default:
 				break;
 			}
 		} else if (_G(flags[V097]) == 1 && inv_object_in_scene("crank", 808) && _G(flags[V100]) == 0) {
 			switch (_G(kernel).trigger) {
-				// TODO not implemented yet
+			case -1:
+				ws_turn_to_face(_G(my_walker), 1, 5);
+				break;
+
+			case 5:
+				player_set_commands_allowed(false);
+				if (_G(flags[V099]) == 0) {
+					_G(flags[V099]) = 1;
+					digi_play("808r26", 1, 255, 10, -1);
+				} else {
+					digi_play("808r27", 1, 255, 10, -1);
+				}
+
+				break;
+
+			case 10:
+				DisposePath(_mcTrekMach->walkPath);
+				_mcTrekMach->walkPath = CreateCustomPath(320, 122, -1);
+				ws_custom_walk(_mcTrekMach, 10, 20, true);
+
+				break;
+
+			case 20:
+				ws_hide_walker(_mcTrekMach);
+				if (_G(flags[V098]) == 0)
+					terminateMachine(_808HandleSpriteMach);
+
+				if (_G(flags[V094]) == 1 || _G(flags[V094]) == 2 || _G(flags[V094]) == 3) {
+					series_load("808 bolt going in and out", -1, nullptr);
+					series_play("808 mei chen cranks handle", 1536, 0, 30, 5, 0, 100, 0, 0, 0, 14);
+				} else if (_G(flags[V094]) == 4 || (_G(flags[V094]) == 0 && inv_object_in_scene("FARMER'S SHOVEL", 808))) {
+					series_play("808 mei chen cranks handle", 1536, 0, 21, 5, 0, 100, 0, 0, 0, 12);
+				} else {
+					series_play("808 mei chen cranks handle", 1536, 0, 40, 5, 0, 100, 0, 0, 0, 7);
+				}
+
+				digi_preload("808_s10", -1);
+
+				break;
+
+			case 21:
+				series_play("808 mei chen cranks handle", 1536, 0, 22, 5, 0, 100, 0, 0, 13, 24);
+				digi_play("808_s10", 2, 255, -1, -1);
+				break;
+
+			case 22:
+				_808RipFallShovelNearSideMach = series_play("808 mei chen cranks handle", 1536, 16, -1, 5, 0, 100, 0, 0, 25, 29);
+				digi_play("808_s09", 2, 255, -1, -1);
+				kernel_timing_trigger(60, 26, nullptr);
+
+				break;
+
+			case 26:
+				terminateMachine(_808RipFallShovelNearSideMach);
+				series_play("808 mei chen cranks handle", 1536, 2, 38, 5, 0, 100, 0, 0, 8, 29);
+				digi_play("808_s10", 2, 255, -1, -1);
+
+				break;
+
+			case 30:
+				if (_G(flags[V098]) == 0) {
+					terminateMachine(_808HandleSpriteMach);
+				}
+
+				_808RipFallShovelNearSideMach = series_play("808 mei chen cranks handle", 1536, 16, 35, 5, 0, 100, 0, 0, 15, 47);
+				_safariShadowMach = series_play("808 bolt going in and out", 0, 16, -1, 15, 0, 100, 0, 0, 0, -1);
+				_G(flags[V279]) = 1;
+				digi_play("808_s07", 2, 255, -1, -1);
+				digi_play("808_s10", 1, 255, -1, -1);
+
+				break;
+
+			case 35:
+				kernel_timing_trigger(45, 37, "bolt showing");
+				digi_stop(1);
+
+				break;
+
+			case 37:
+				terminateMachine(_808RipFallShovelNearSideMach);
+				terminateMachine(_safariShadowMach);
+				series_play("808 mei chen cranks handle", 1536, 2, 38, 5, 0, 100, 0, 0, 8, 47);
+				series_play("808 bolt going in and out", 0, 2, -1, 15, 0, 100, 0, 0, 0, -1);
+				digi_play("808_s08", 2, 255, -1, -1);
+				digi_play("808_s10", 1, 255, -1, -1);
+
+				break;
+
+			case 38:
+				_808HandleSpriteMach = series_show("808 handle sprite", 4095, 0, -1, -1, 0, 100, 0, 0);
+				series_play("808 mei chen cranks handle", 1536, 2, 39, 5, 0, 100, 0, 0, 0, 7);
+				digi_stop(1);
+				digi_stop(2);
+
+				break;
+
+			case 39:
+				ws_unhide_walker(_mcTrekMach);
+				DisposePath(_mcTrekMach->walkPath);
+				_mcTrekMach->walkPath = CreateCustomPath(345, 115, -1);
+				ws_custom_walk(_mcTrekMach, 5, 55, true);
+
+				break;
+
+			case 40:
+				if (_G(flags[V098]) == 0) {
+					terminateMachine(_808HandleSpriteMach);
+				}
+
+				series_play("808 mei chen cranks handle", 1536, 0, 41, 5, 0, 100, 0, 0, 8, 42);
+				digi_play("808_s10", 2, 255, -1, -1);
+
+				break;
+
+			case 41:
+				series_play("808 mei chen cranks handle", 1536, 0, 42, 5, 0, 100, 0, 0, 43, 58);
+				digi_play("808_s03", 2, 255, -1, -1);
+
+				break;
+
+			case 42:
+				_808HandleSpriteMach = series_show("808 handle sprite", 4095, 0, -1, -1, 0, 100, 0, 0);
+				series_play("808 mei chen cranks handle", 1536, 0, 43, 5, 0, 100, 0, 0, 59, -1);
+
+				break;
+
+			case 43:
+				ws_unhide_walker(_mcTrekMach);
+				DisposePath(_mcTrekMach->walkPath);
+				_mcTrekMach->walkPath = CreateCustomPath(345, 115, -1);
+				ws_custom_walk(_mcTrekMach, 5, 50, true);
+
+				break;
+
+			case 50:
+				player_set_commands_allowed(true);
+				_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);
+				digi_unload("808_s10");
+
+				break;
+
+			case 55:
+				player_set_commands_allowed(true);
+
+				if (_G(flags[V094]) == 4 || (_G(flags[V094]) == 0 && inv_object_in_scene("FARMER'S SHOVEL", 808))) {
+					digi_play(_G(flags[V279]) ? "808r29" : "808r28", 1, 255, -1, -1);
+				}
+
+				_G(flags[V098]) = 0;
+				hotspot_set_active(_G(currentSceneDef).hotspots, "crank", true);
+				hotspot_set_active(_G(currentSceneDef).hotspots, "slot", false);
+				digi_unload("808_s10");
+
+				break;
+
 			default:
 				break;
 			}
@@ -780,6 +987,7 @@ void Room808::parser() {
 		return;
 
 	case 4:
+		// Empty
 		return;
 
 	case 5:




More information about the Scummvm-git-logs mailing list