[Scummvm-git-logs] scummvm master -> 1128af5d71d03f59d270a022160517bbf10392c6

Strangerke noreply at scummvm.org
Thu Jan 2 08:53:46 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:
1128af5d71 M4: RIDDLE: Room 807: Finish the implementation of opcode 2 in parser


Commit: 1128af5d71d03f59d270a022160517bbf10392c6
    https://github.com/scummvm/scummvm/commit/1128af5d71d03f59d270a022160517bbf10392c6
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2025-01-02T09:53:32+01:00

Commit Message:
M4: RIDDLE: Room 807: Finish the implementation of opcode 2 in parser

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


diff --git a/engines/m4/riddle/rooms/section8/room807.cpp b/engines/m4/riddle/rooms/section8/room807.cpp
index 9727cb679b9..c5b58c7dffb 100644
--- a/engines/m4/riddle/rooms/section8/room807.cpp
+++ b/engines/m4/riddle/rooms/section8/room807.cpp
@@ -379,9 +379,118 @@ void Room807::parser() {
 
 	case 2:
 		if (player_said("wooden post")) {
-			// TODO not implemented yet
+			switch (_G(kernel).trigger) {
+			case -1:
+				if (inv_object_in_scene("wooden post", 807)) {
+					player_set_commands_allowed(false);
+					ws_hide_walker(_G(my_walker));
+					player_update_info(_G(my_walker), &_G(player_info));
+					_safariShadowMach = series_place_sprite(*SAFARI_SHADOWS, 0, 476, 318, _G(player_info).scale, 257);
+					series_play("807rp06", 256, 2, 5, 5, 0, 100, 0, 0, 21, 39);
+					hotspot_set_active(_G(currentSceneDef).hotspots, "wooden post", false);
+				} else {
+					_G(player).command_ready = true;
+				}
+
+				break;
+
+			case 5:
+				if (_G(flags[V274]) == 0 && !inv_object_in_scene("wooden beam", 807)) {
+					inv_give_to_player("wooden post");
+					kernel_examine_inventory_object("PING WOODEN POST", _G(master_palette), 5, 1, 400, 245, 13, nullptr, -1);
+					terminateMachine(_807BeamMach);
+					series_play("807rp06", 256, 2, 10, 5, 0, 100, 0, 0, 0, 20);
+					_G(flags[V274]) = 1;
+				} else {
+					inv_give_to_player("wooden post");
+					kernel_examine_inventory_object("PING WOODEN POST", _G(master_palette), 5, 1, 400, 245, -1, nullptr, -1);
+					terminateMachine(_807BeamMach);
+					series_play("807rp06", 256, 2, 20, 5, 0, 100, 0, 0, 0, 20);
+				}
+
+				break;
+
+			case 10:
+				ws_unhide_walker(_G(my_walker));
+				ws_demand_facing(_G(my_walker), 11);
+				terminateMachine(_safariShadowMach);
+
+				break;
+
+			case 13:
+				terminateMachine(_807Crnk2Mach);
+				terminateMachine(_807DoorMach);
+				series_play("807close", 4095, 0, 15, 0, 0, 100, 0, 0, 0, -1);
+				digi_play("807_s04", 2, 255, -1, -1);
+
+				break;
+
+			case 15:
+				digi_play("807_s04a", 2, 255, -1, -1);
+				player_set_commands_allowed(true);
+				_807DoorMach = series_show("807door", 4095, 0, -1, -1, 0, 100, 0, 0);
+				_807Crnk2Mach = series_show("807crnk2", 4095, 0, -1, -1, 9, 100, 0, 0);
+				hotspot_set_active(_G(currentSceneDef).hotspots, "stone block", true);
+				hotspot_set_active(_G(currentSceneDef).hotspots, "corridor", false);
+				hotspot_set_active(_G(currentSceneDef).hotspots, "chariot ", false);
+				hotspot_set_active(_G(currentSceneDef).hotspots, "north", false);
+
+				break;
+
+			case 20:
+				player_set_commands_allowed(true);
+				ws_unhide_walker(_G(my_walker));
+				ws_demand_facing(_G(my_walker), 11);
+				terminateMachine(_safariShadowMach);
+
+				break;
+
+			default:
+				break;
+			}
 		} else if (player_said("crank")) {
-			// TODO not implemented yet
+			switch (_G(kernel).trigger) {
+			case -1:
+				if (inv_object_in_scene("crank", 807)) {
+					if (inv_object_in_scene("wooden post", 807) && _G(flags[V274]) == 0) {
+						digi_play("807r23", 1, 255, -1, -1);
+					} else {
+						player_set_commands_allowed(false);
+						ws_hide_walker(_G(my_walker));
+						terminateMachine(_807Crnk2Mach);
+						_807Crnk2Mach = series_play("807rp04", 256, 16, 10, 5, 0, 100, 0, 0, 0, -1);
+						player_update_info(_G(my_walker), &_G(player_info));
+						_safariShadowMach = series_place_sprite(*SAFARI_SHADOWS, 0, 476, 318, _G(player_info).scale, 257);
+					}
+				} else {
+					_G(player).command_ready = true;
+				}
+
+				break;
+
+			case 10:
+				inv_give_to_player("CRANK");
+				kernel_examine_inventory_object("PING CRANK", _G(master_palette), 5, 1, 400, 245, 20, nullptr, -1);
+
+				break;
+
+			case 20:
+				terminateMachine(_807Crnk2Mach);
+				_807Crnk2Mach = series_play("807rp04", 256, 2, 30, 5, 0, 100, 0, 0, 0, -1);
+
+				break;
+
+			case 30:
+				player_set_commands_allowed(true);
+				terminateMachine(_safariShadowMach);
+				hotspot_set_active(_G(currentSceneDef).hotspots, "slot", true);
+				hotspot_set_active(_G(currentSceneDef).hotspots, "crank", false);
+				ws_unhide_walker(_G(my_walker));
+				ws_demand_facing(_G(my_walker), 11);
+
+			default:
+				break;
+			}
 		} else if (player_said("wooden beam")) {
 			switch (_G(kernel).trigger) {
 			case -1:




More information about the Scummvm-git-logs mailing list