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

Strangerke noreply at scummvm.org
Sun Nov 24 18:13:22 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:
7b82933ce0 M4: RIDDLE: room 702 - Finish the implementation of daemon


Commit: 7b82933ce0e016c65aa119353a3323dd5912aef6
    https://github.com/scummvm/scummvm/commit/7b82933ce0e016c65aa119353a3323dd5912aef6
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-11-24T19:12:52+01:00

Commit Message:
M4: RIDDLE: room 702 - Finish the implementation of daemon

Changed paths:
    engines/m4/riddle/rooms/section7/room702.cpp
    engines/m4/riddle/rooms/section7/room702.h


diff --git a/engines/m4/riddle/rooms/section7/room702.cpp b/engines/m4/riddle/rooms/section7/room702.cpp
index ebcc7cb13a0..0f406411bda 100644
--- a/engines/m4/riddle/rooms/section7/room702.cpp
+++ b/engines/m4/riddle/rooms/section7/room702.cpp
@@ -41,7 +41,7 @@ void Room702::init() {
 		_field40 = 0;
 		_field44 = 0;
 		_field48 = 0;
-		_field4C = -1;
+		_field4C_triggerNum = -1;
 		_field50 = 0;
 		_field54 = 0;
 		_field58 = -1;
@@ -185,20 +185,212 @@ void Room702::daemon() {
 		break;
 
 	case 51:
+		digi_play("702G04", 1, 255, 52, -1);
+		sendWSMessage_10000(1, _guardMach, _guardStepsAsideTalksSeries, 41, 46, -1, _guardStepsAsideTalksSeries, 46, 41, 1);
+		sendWSMessage_10000(1, _guardShadowMach, _702GuardShadow2Series, 41, 46, -1, _702GuardShadow2Series, 46, 41, 1);
+
+		break;
+
 	case 52:
+		sendWSMessage_10000(1, _guardMach, _guardStepsAsideTalksSeries, 46, 46, -1, _guardStepsAsideTalksSeries, 46, 46, 0);
+		sendWSMessage_10000(1, _guardShadowMach, _702GuardShadow2Series, 46, 46, -1, _702GuardShadow2Series, 46, 46, 0);
+		_field40 = 1;
+		player_set_commands_allowed(true);
+
+		break;
+
 	case 60:
+		digi_play("702R08", 1, 255, 61, -1);
+		break;
+
 	case 61:
+		sendWSMessage_120000(_G(my_walker), 62);
+		break;
+
 	case 62:
+		digi_play("702G01", 1, 255, 63, -1);
+		sendWSMessage_10000(1, _guardMach, _guardTalksAndBowsSeries, 8, 11, -1, _guardTalksAndBowsSeries, 8, 11, 1);
+		sendWSMessage_10000(1, _guardShadowMach, _702GuardShadow1Series, 8, 11, -1, _702GuardShadow1Series, 8, 11, 1);
+		break;
+
 	case 63:
+		sendWSMessage_10000(1, _guardMach, _guardTalksAndBowsSeries, 11, 11, -1, _guardTalksAndBowsSeries, 11, 11, 0);
+		sendWSMessage_10000(1, _guardShadowMach, _702GuardShadow1Series, 11, 11, -1, _702GuardShadow1Series, 11, 11, 0);
+		digi_play("702R09", 1, 255, 64, -1);
+		sendWSMessage_130000(_G(my_walker), -1);
+
+		break;
+
 	case 64:
+		digi_play("702G02", 1, 255, 65, -1);
+		sendWSMessage_10000(1, _guardMach, _guardTalksAndBowsSeries, 8, 11, -1, _guardTalksAndBowsSeries, 8, 11, 1);
+		sendWSMessage_10000(1, _guardShadowMach, _702GuardShadow1Series, 8, 11, -1, _702GuardShadow1Series, 8, 11, 1);
+		sendWSMessage_150000(_G(my_walker), -1);
+
+		break;
+
 	case 65:
+		sendWSMessage_10000(1, _guardMach, _guardTalksAndBowsSeries, 11, 11, -1, _guardTalksAndBowsSeries, 11, 11, 0);
+		sendWSMessage_10000(1, _guardShadowMach, _702GuardShadow1Series, 11, 11, -1, _702GuardShadow1Series, 11, 11, 0);
+		digi_play("702R10", 1, 255, 47, -1);
+
+		break;
+
 	case 100:
+		if (_field4C_triggerNum != -1) {
+			kernel_trigger_dispatchx(_field4C_triggerNum);
+			_field4C_triggerNum = -1;
+		}
+
+		kernel_timing_trigger(1, 101, nullptr);
+
+		break;
+
 	case 101:
+		if (_field44 == 1000) {
+			switch (_field48) {
+			case 1100:
+				ws_hide_walker(_G(my_walker));
+				player_set_commands_allowed(false);
+				player_update_info(_G(my_walker), &_G(player_info));
+				_ripTalksGuardMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 256, true, callback, "rip talks guard");
+				_ripTalksGuardShadowMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, _G(player_info).x, _G(player_info).y, _G(player_info).scale, 256, false, callback, "rip talks guard SHADOW");
+				sendWSMessage_10000(1, _ripTalksGuardMach, _ripShowsRingSeries, 1, 1, -1, _ripShowsRingSeries, 1, 1, 0);
+				sendWSMessage_10000(1, _ripTalksGuardShadowMach, _safariShadow1Series, 1, 1, 100, _safariShadow1Series, 1, 1, 0);
+
+				_field48 = 1102;
+				_field50 = 2000;
+				_field54 = 2100;
+
+				kernel_trigger_dispatchx(kernel_trigger_create(110));
+
+				break;
+
+			case 1102:
+				conv_load("conv702a",10,10,103);
+				conv_export_value_curr(_G(flags[V211]), 0);
+				conv_export_value_curr(_G(flags[V213]), 1);
+				conv_export_value_curr(_G(flags[V222]), 2);
+				conv_play(conv_get_handle());
+
+				_field48 = 1103;
+
+				kernel_trigger_dispatchx(kernel_trigger_create(100));
+
+				break;
+
+			case 1103:
+			case 1104:
+				sendWSMessage_10000(1, _ripTalksGuardMach, _ripShowsRingSeries, 1, 1, 100, _ripShowsRingSeries, 1, 1, 0);
+				break;
+
+			case 1105:
+				terminateMachine(_ripTalksGuardMach);
+				terminateMachine(_ripTalksGuardShadowMach);
+
+				_field54 = 2106;
+
+				ws_unhide_walker(_G(my_walker));
+				player_set_commands_allowed(true);
+
+				break;
+
+			default:
+				break;
+			}
+		}
+
+		break;
+
 	case 102:
+		kernel_trigger_dispatchx(kernel_trigger_create(100));
+		break;
+
 	case 103:
+		_field48 = 1105;
+		break;
+
 	case 110:
+		if (_field50 == 2000) {
+			switch (_field54) {
+			case 2100:
+			case 2101:
+			case 2103:
+			case 2104:
+			case 2106:
+			case 2109:
+				kernel_timing_trigger(1, 111, nullptr);
+				break;
+
+			default:
+				break;
+
+			}
+		}
+
+		break;
+
 	case 111:
+		if (_field50 == 2000) {
+			switch (_field54) {
+			case 2100:
+			case 2101:
+				sendWSMessage_10000(1, _guardMach, _guardTalksAndBowsSeries, 8, 8, 110, _guardTalksAndBowsSeries, 8, 8, 0);
+				sendWSMessage_10000(1, _guardShadowMach, _702GuardShadow1Series, 8, 8, -1, _702GuardShadow1Series, 8, 8, 0);
+				_field54 = 2101;
+
+				break;
+
+			case 2103:
+				_G(kernel).trigger_mode = KT_PARSE;
+				digi_play(conv_sound_to_play(), 1, 255, 1, -1);
+				_G(kernel).trigger_mode = KT_DAEMON;
+				_field54 = 2104;
+				kernel_timing_trigger(1, 111, nullptr);
+
+				break;
+			case 2104: {
+				int32 rnd = imath_ranged_rand(8, 10);
+				sendWSMessage_10000(1, _guardMach, _guardTalksAndBowsSeries, rnd, rnd, 110, _guardTalksAndBowsSeries, rnd, rnd, 0);
+				sendWSMessage_10000(1, _guardShadowMach, _702GuardShadow1Series, rnd, rnd, -1, _702GuardShadow1Series, rnd, rnd, 0);
+				}
+
+				break;
+
+			case 2106:
+				sendWSMessage_10000(1, _guardMach, _guardTalksAndBowsSeries, 8, 8, -1, _guardTalksAndBowsSeries, 8, 8, 0);
+				sendWSMessage_10000(1, _guardShadowMach, _702GuardShadow1Series, 8, 8, -1, _702GuardShadow1Series, 8, 8, 0);
+
+				break;
+
+			case 2107:
+				sendWSMessage_10000(1, _guardMach, _guardTalksAndBowsSeries, 48, 58, 110, _guardTalksAndBowsSeries, 58, 58, 0);
+				sendWSMessage_10000(1, _guardShadowMach, _702GuardShadow1Series, 48, 58, -1, _702GuardShadow1Series, 58, 58, 0);
+				_field54 = 2108;
+
+				break;
+
+			case 2108:
+				digi_play("702_S01", 1, 255, -1, -1);
+				sendWSMessage_10000(1, _guardMach, _guardTalksAndBowsSeries, 58, 82, 110, _guardTalksAndBowsSeries, 82, 82, 0);
+				sendWSMessage_10000(1, _guardShadowMach, _702GuardShadow1Series, 58, 82, -1, _702GuardShadow1Series, 82, 82, 0);
+				_field54 = 2109;
+
+				break;
+
+			case 2109:
+				terminateMachine(_field10_mach);
+				_field54 = 2103;
+				kernel_timing_trigger(1, 111, nullptr);
+
+				break;
+
+			default:
+				break;
+			}
+		}
 		break;
+
 	default:
 		break;
 	}
diff --git a/engines/m4/riddle/rooms/section7/room702.h b/engines/m4/riddle/rooms/section7/room702.h
index bd48400c5f9..14a986fedea 100644
--- a/engines/m4/riddle/rooms/section7/room702.h
+++ b/engines/m4/riddle/rooms/section7/room702.h
@@ -46,7 +46,7 @@ private:
 	int32 _field40 = 0;
 	int32 _field44 = 0;
 	int32 _field48 = 0;
-	int32 _field4C = 0;
+	int32 _field4C_triggerNum = 0;
 	int32 _field50 = 0;
 	int32 _field54 = 0;
 	int32 _field58 = 0;
@@ -60,9 +60,11 @@ private:
 	int32 _ripShowsRingSeries = 0;
 	int32 _safariShadow1Series = 0;
 
+	machine *_field10_mach = nullptr;
 	machine *_guardMach = nullptr;
 	machine *_guardShadowMach = nullptr;
-
+	machine *_ripTalksGuardMach = nullptr;
+	machine *_ripTalksGuardShadowMach = nullptr;
 };
 
 } // namespace Rooms




More information about the Scummvm-git-logs mailing list