[Scummvm-git-logs] scummvm master -> 93c7146604147f6f97c5600fcefbf9c7992daec9

Strangerke noreply at scummvm.org
Tue Dec 31 08:14:31 UTC 2024


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:
93c7146604 M4: RIDDLE: Room 807: Some progress on parser


Commit: 93c7146604147f6f97c5600fcefbf9c7992daec9
    https://github.com/scummvm/scummvm/commit/93c7146604147f6f97c5600fcefbf9c7992daec9
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-12-31T09:14:20+01:00

Commit Message:
M4: RIDDLE: Room 807: Some progress on 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 5bc5fe320da..194d2cd1f4c 100644
--- a/engines/m4/riddle/rooms/section8/room807.cpp
+++ b/engines/m4/riddle/rooms/section8/room807.cpp
@@ -216,6 +216,185 @@ void Room807::parser() {
 		_field34 = 0;
 		return;
 	}
+
+	int opCode = -1;
+
+	if (player_said_any("look", "look at"))
+		opCode = 1;
+	else if (player_said_any("gear", "use"))
+		opCode = 0;
+	else if (player_said("take"))
+		opCode = 2;
+	else if (player_said("talk to"))
+		opCode = 3;
+	else if (player_said_any("walk to", "spleen"))
+		opCode = 4;
+	else if (player_said("go"))
+		opCode = 5;
+	else if (player_said("crank"))
+		opCode = 8;
+	else if (player_said("wooden beam"))
+		opCode = 6;
+	else if (player_said("wooden post"))
+		opCode = 7;
+	else if (player_said("journal"))
+		opCode = 9;
+	else if (player_said("conv807a"))
+		opCode = 10;
+
+
+	switch (opCode) {
+	case 0:
+		if (player_said("stone block") && _G(flags[V276]) == 0) {
+			switch (_G(kernel).trigger) {
+			case -1:
+				ws_walk(_G(my_walker), 305, 305, nullptr, 10, 1, true);
+				break;
+
+			case 10:
+				player_set_commands_allowed(false);
+				setGlobals3(_ripLowReachPos1Series, 1, 24);
+				subD7916(_G(my_walker), 20);
+
+				break;
+
+			case 20:
+				kernel_timing_trigger(30, 30, "rip attempts stone block lift");
+				break;
+
+			case 30:
+				digi_play("807m02", 1, 255, 40, -1);
+				break;
+
+			case 40:
+				digi_play("807r14", 1, 255, -1, -1);
+				setGlobals3(_ripLowReachPos1Series, 24, 1);
+				subD7916(_G(my_walker), 50);
+
+				break;
+
+			case 50:
+				player_set_commands_allowed(true);
+				ws_demand_facing(_G(my_walker), 1);
+
+				break;
+
+			default:
+				break;
+			}
+		} else if (player_said("crank") && inv_object_in_scene("crank", 807)) {
+			if (!_G(flags[V274])) {
+				digi_play("com078", 1, 255, -1, 997);
+			} else if (inv_object_in_scene("wooden post", 807)) {
+				digi_play("807r23a", 1, 255, -1, -1);
+			} else {
+				switch (_G(kernel).trigger) {
+				case -1:
+					ws_walk(_G(my_walker), 476, 318, nullptr, 10, 11, true);
+					break;
+
+				case 10:
+					player_set_commands_allowed(false);
+					ws_hide_walker(_G(my_walker));
+					series_play("807rp04", 256, 0, 13, 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);
+
+					break;
+
+				case 13:
+					terminateMachine(_807Crnk2Mach);
+					_807Crnk2Mach = series_play("807rp05", 256, 16, 20, 10, 4, 100, 0, 0, 0, -1);
+					terminateMachine(_807DoorMach);
+					digi_preload("807_s03");
+					series_stream("807open", 20, 495, 15);
+					digi_play_loop("807_s03", 2, 255, -1, -1);
+
+					break;
+
+				case 15:
+					_807DoorMach = series_show("807kart", 4095, 0, -1, -1, 0, 100, 0, 0);
+					digi_stop(2);
+					digi_unload("807_s03");
+
+					break;
+
+				case 20:
+					player_set_commands_allowed(true);
+					_G(flags[V274]) = 0;
+					_field38 = 1;
+					hotspot_set_active(_G(currentSceneDef).hotspots, "stone block", false);
+					hotspot_set_active(_G(currentSceneDef).hotspots, "corridor", true);
+					hotspot_set_active(_G(currentSceneDef).hotspots, "chariot ", true);
+					hotspot_set_active(_G(currentSceneDef).hotspots, "north", true);
+
+					_G(kernel).trigger_mode = KT_DAEMON;
+					kernel_trigger_dispatchx(kernel_trigger_create(6));
+					_G(kernel).trigger_mode = KT_PARSE;
+
+					break;
+
+				default:
+					break;
+
+				}
+			}
+		} else {
+			player_set_commands_allowed(true);
+		}
+
+		break;
+
+	case 1:
+		if (player_said(" ")) {
+			digi_play("807r02", 1, 255, -1, -1);
+		} else if (player_said_any("stone block", "doorway")) {
+			digi_play("807r03", 1, 255, -1, -1);
+		} else if (player_said("slot")) {
+			digi_play("807r05", 1, 255, -1, -1);
+		} else if (player_said_any("chariot", "chariot ")) {
+			digi_play("807r06", 1, 255, -1, -1);
+		} else if (player_said("lit urn")) {
+			digi_play("com060", 1, 255, -1, 997);
+		} else if (player_said("unlit urn")) {
+			digi_play("com061", 1, 255, -1, 997);
+		} else if (player_said("corridor")) {
+			digi_play("807r09", 1, 255, -1, -1);
+		} else if (player_said("wooden beam") && inv_object_in_scene("wooden beam", 807)) {
+			digi_play("807r11", 1, 255, -1, 997);
+		} else if (player_said("wooden post") && inv_object_in_scene("wooden post", 807)) {
+			if (inv_object_in_scene("crank", 807) && _G(flags[V274]) == 0) {
+				digi_play("807r10", 1, 255, -1, -1);
+			} else {
+				digi_play("com021", 1, 255, -1, 997);
+			}
+		} else if (player_said("crank") && inv_object_in_scene("crank", 807)) {
+			digi_play("807r12", 1, 255, -1, -1);
+		} else if (player_said("mei chen")) {
+			digi_play("807r13", 1, 255, -1, -1);
+		} else
+			_G(player).command_ready = true;
+
+		break;
+
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	default:
+		if (player_said("mei chen"))
+			digi_play("com017", 1, 255, -1, 997);
+		else
+			player_set_commands_allowed(true);
+
+		break;
+	}
+
 	// TODO Not yet implemented
 }
 




More information about the Scummvm-git-logs mailing list